From e9f83aee90a2a5bce7e820f4cf627a3d83e38592 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 19 May 2023 08:28:02 +0200
Subject: [PATCH 01/33] Autosync the updated translations (#2524)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
---
src/App/Resources/AppResources.bn.resx | 26 +--
src/App/Resources/AppResources.fa.resx | 12 +-
src/App/Resources/AppResources.hi.resx | 210 ++++++++++++-------------
src/App/Resources/AppResources.uk.resx | 4 +-
store/apple/hi/copy.resx | 44 +++---
store/google/hi/copy.resx | 48 +++---
6 files changed, 172 insertions(+), 172 deletions(-)
diff --git a/src/App/Resources/AppResources.bn.resx b/src/App/Resources/AppResources.bn.resx
index c7c2ff9fb..974ad9da4 100644
--- a/src/App/Resources/AppResources.bn.resx
+++ b/src/App/Resources/AppResources.bn.resx
@@ -346,7 +346,7 @@
Confirmation message after successfully deleting a login.
- Submit
+ জমা দিন
Sync
@@ -356,7 +356,7 @@
ধন্যবাদ
- Tools
+ টুলস
The title for the tools page.
@@ -379,7 +379,7 @@
Confirmation message after successfully copying a value to the clipboard.
- Verify fingerprint
+ আঙ্গুলের ছাপ যাচাই করুন
প্রধান পাসওয়ার্ড যাচাইকরণ
@@ -397,7 +397,7 @@
আমাদের ওয়েবসাইটে ঢু মেরে আসুন
- Visit our website to get help, news, email us, and/or learn more about how to use Bitwarden.
+ সাহায্য পেতে, খবর পেতে, আমাদের ইমেল করতে এবং/অথবা বিটওয়ার্ডেন কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানতে আমাদের ওয়েবসাইট দেখুন।
ওয়েবসাইট
@@ -413,7 +413,7 @@
আপনার নতুন অ্যাকাউন্ট তৈরি করা হয়েছে! আপনি এখন লগইন করতে পারবেন।
- Add an Item
+ একটি আইটেম যোগ করুন
App extension
@@ -440,13 +440,13 @@
Bitwarden Auto-fill Service
- Use the Bitwarden accessibility service to auto-fill your logins.
+ আপনার লগইনগুলি স্বয়ংক্রিয়ভাবে পূরণ করতে বিটওয়ার্ডেন অ্যাক্সেসিবিলিটি পরিষেবা ব্যবহার করুন৷
ইমেইল পরিবর্তন করুন
- You can change your email address on the bitwarden.com web vault. Do you want to visit the website now?
+ আপনি bitwarden.com ওয়েব ভল্টে আপনার ইমেল ঠিকানা পরিবর্তন করতে পারেন। আপনি কি এখনই ওয়েবসাইট ভিজিট করতে চান?
প্রধান পাসওয়ার্ড পরিবর্তন
@@ -511,7 +511,7 @@
প্রিয়
- Fingerprint
+ আঙুলের ছাপ
পাসওয়ার্ড তৈরি করুন
@@ -584,7 +584,7 @@
যদি আপনি আপনার পাসওয়ার্ড ভুলে যান তাহলে একটি প্রধান পাসওয়ার্ডের ইঙ্গিতটি আপনাকে মনে করাতে সাহায্য করতে পারে।
- Master password must be at least {0} characters long.
+ মাস্টার পাসওয়ার্ড কমপক্ষে {0} অক্ষরের হতে হবে।
সর্বনিম্ন সংখ্যা
@@ -595,7 +595,7 @@
Minimum special characters for password generator settings
- More settings
+ আরও সেটিংস
You must log into the main Bitwarden app before you can use the extension.
@@ -684,7 +684,7 @@
Item saved
- Submitting...
+ জমা দেওয়া হচ্ছে...
Message shown when interacting with the server
@@ -717,7 +717,7 @@
Unlock with PIN code
- Validating
+ কার্যকর করা হচ্ছে
Message shown when interacting with the server
@@ -876,7 +876,7 @@
Unable to download file.
- Your device cannot open this type of file.
+ আপনার ডিভাইস এই ধরনের ফাইল খুলতে পারে না।
ডাউনলোড হচ্ছে...
diff --git a/src/App/Resources/AppResources.fa.resx b/src/App/Resources/AppResources.fa.resx
index 176f0eda3..6ac80f876 100644
--- a/src/App/Resources/AppResources.fa.resx
+++ b/src/App/Resources/AppResources.fa.resx
@@ -1753,10 +1753,10 @@
Confirmation alert message when soft-deleting a cipher.
- Biometric unlock for this account is disabled pending verification of master password.
+ باز کردن قفل بیومتریک برای این حساب کاربری در انتظار تأیید کلمه عبور اصلی غیرفعال است.
- Autofill biometric unlock for this account is disabled pending verification of master password.
+ باز کردن قفل پر کردن خودکار بیومتریک برای این حساب کاربری در انتظار تأیید کلمه عبور اصلی غیرفعال است.
فعال کردن همگامسازی در نوسازی
@@ -2144,10 +2144,10 @@
سیاستهای سازمانتان بر مهلت زمانی گاوصندوق شما تأثیر میگذارد. حداکثر زمان مجاز گاوصندوق {0} ساعت و {1} دقیقه است
- Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is {0} hour(s) and {1} minute(s). Your vault timeout action is set to {2}.
+ سیاستهای سازمانتان بر مهلت زمانی گاوصندوق شما تأثیر میگذارد. حداکثر زمان مجاز گاوصندوق {0} ساعت و {1} دقیقه است. عملگر مهلت زمانی گاوصندوق شما روی {2} تنظیم شده است.
- Your organization policies have set your vault timeout action to {0}.
+ سباستهای سازمان شما، عملگر زمانبندی گاوصندوق شما را روی {0} تنظیم کرده است.
مهلت زمانی شما بیش از محدودیت های تعیین شده توسط سازمانتان است.
@@ -2611,9 +2611,9 @@
هیچ موردی وجود ندارد که با جستجو مطابقت داشته باشد
- Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
+ کلمه عبور اصلی شما با یک یا چند سیاست سازمانتان مطابقت ندارد. برای دسترسی به گاوصندوق، باید همین حالا کلمه عبور اصلی خود را بهروز کنید. در صورت ادامه، شما از نشست فعلی خود خارج میشوید و باید دوباره وارد سیستم شوید. نشست فعال در دستگاه های دیگر ممکن است تا یک ساعت همچنان فعال باقی بمانند.
- Current master password
+ کلمه عبور اصلی فعلی
diff --git a/src/App/Resources/AppResources.hi.resx b/src/App/Resources/AppResources.hi.resx
index b257e3fac..1c0e9face 100644
--- a/src/App/Resources/AppResources.hi.resx
+++ b/src/App/Resources/AppResources.hi.resx
@@ -118,14 +118,14 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- बारे में
+ हमारे बारे में
जोड़ें
Add/create a new entity (verb).
- नया फोल्डर जोड़ें
+ फोल्डर जोड़ें
चीज़ जोड़ें
@@ -136,11 +136,11 @@
Alert title when something goes wrong.
- वापस जाएं
+ पीछे जाएं
Navigate back to the previous screen.
- bitwarden
+ बिटवार्डन
App name. Shouldn't ever change.
@@ -156,105 +156,105 @@
The button text that allows a user to copy the login's password to their clipboard.
- उपयोगकर्ता नाम की प्रतिलिपि बनाएँ
+ यूज़रनाम कॉपी करें
The button text that allows a user to copy the login's username to their clipboard.
- क्रेडिट्स
+ क्रेडिट
Title for page that we use to give credit to resources that we use.
- मिटाए
+ मिटाएं
Delete an entity (verb).
- मिटाया जा रहा हैं
+ मिटाया जा रहा हैं...
Message shown when interacting with the server
- क्या आप वास्तव में हटाना चाहते हैं? इसे नष्ट नहीं किया जा सकता है
+ पक्का मिटाएं? इसे अंडू नहीं किया जा सकता।
Confirmation alert message when deleteing something.
- संशोधन करें
+ बदलाव करें
- फ़ोल्डर संपादित करें
+ फोल्डर बदलाव करें
ईमेल
Short label for an email address.
- ई-मेल पता
+ ईमेल पता
Full label for a email address.
हमें ईमेल करें
- सहायता प्राप्त करने या प्रतिक्रिया छोड़ने के लिए हमें ईमेल करें।
+ मदद लेने या फीडबैक देने के लिए हमें ईमेल करें।
- अपना पिन डालें
+ अपना पिन कोड डालें।
- पसंदीदा
+ मनपसंद
Title for your favorite items in the vault.
- बग रिपोर्ट दर्ज करें
+ बग रिपोर्ट भेजें
- हमारे GitHub भंडार में एक मुद्दे को बताएं।
+ हमारे गिटहब रिपॉज़िटरी में समस्या बताएं।
- फिंगरप्रिंट से सत्यापन करें
+ फिंगरप्रिंट से सत्यापन करें।
- फ़ोल्डर
+ फोल्डर
Label for a folder.
- नया फ़ोल्डर बनाया गया
+ नया फोल्डर बनाया गया।
- फ़ोल्डर को हटाया
+ फोल्डर मिटाया गया।
- कोई फ़ोल्डर नहीं है
+ कोई फोल्डर नहीं है
Items that have no folder specified go in this special "catch-all" folder.
- फ़ोल्डर्स
+ फोल्डर
- फ़ोल्डर अद्यतन हुआ
+ फोल्डर सेव हुआ
- वेबसाइट पर जाएँ
+ वेबसाइट पर जाएं
The button text that allows user to launch the website to their web browser.
- सहायता और सुझाव
+ मदद और फीडबैक
- छुपायें
+ छुपाएं
Hide a secret value that is currently shown (password).
- जारी रखने से पहले कृपया इंटरनेट से जुड़े।
+ जारी रखने से पहले इंटरनेट से जुड़ें।
Description message for the alert when internet connection is required to continue.
- इंटरनेट से जुड़िए।
+ इंटरनेट कनेक्शन चाहिए
Title for the alert when internet connection is required to continue.
- मास्टर पासवर्ड गलत है। फिर कोशिश करें।
+ मुख्य पासवर्ड गलत है। वापस कोशिश करें।
- पिन गलत है। फिर कोशिश करें।
+ पिन गलत है। वापस कोशिश करें।
खोलें
@@ -269,38 +269,38 @@
Title for login page. (noun)
- लॉग आउट
+ लॉग आउट करें
The log out button text (verb).
- क्या आप वाकई लॉग आउट करना चाहते हैं?
+ पक्का लॉग आउट करें?
खाता हटाएं
- क्या आप वाकई यह खाता हटाना चाहते हैं?
+ पक्का खाता हटाएं?
- Account already added
+ खाता पहले से जोड़ा गया
- Would you like to switch to it now?
+ अभी खाता इस्तेमाल करें?
- मास्टर / मुख्य पासवर्ड
+ मुख्य पासवर्ड
Label for a master password.
- अतिरिक्त
+ और
Text to define that there are more options things to see.
- मेरी तिजोरी
+ मेरा तिजोरी
The title for the vault page.
- Authenticator
+ सत्यापन करनेवाला
Authenticator TOTP feature
@@ -311,11 +311,11 @@
नहीं
- टिप्पणियाँ
+ नोट
Label for notes.
- ठीक
+ ठीक है
Acknowledgement.
@@ -323,69 +323,69 @@
Label for a password.
- सहेजें
+ सेव करें
Button text for a save operation (verb).
- Move
+ ले जाएं
सेव हो रहा है...
Message shown when interacting with the server
- सेटिंग्स
+ सेटिंग
The title for the settings page.
- दिखाएँ
+ दिखाएं
Reveal a hidden value (password).
- आइटम हटा दिया गया है।
+ चीज़ मिटाया गया।
Confirmation message after successfully deleting a login.
जमा करें
- संकालन
+ सिंक
The title for the sync page.
- धन्यवाद
+ शुक्रिया
- उपकरण
+ औज़ार
The title for the tools page.
- URI
+ यूआरआई
Label for a uri/url.
- अंगुलिछाप से खोलें
+ फिंगरप्रिंट से खोलें
- उपयोगकर्ता नाम:
+ यूज़रनाम
Label for a username.
- {0} की आश्यकता है।
+ {0} फील्ड चाहिए।
Validation message for when a form field is left blank and is required to be entered.
- {0} कॉपी कर लिया गया है।
+ {0} कॉपी किया
Confirmation message after successfully copying a value to the clipboard.
- अंगुलिछाप दें
+ फिंगरप्रिंट सत्यापित करें
- मास्टर पासवर्ड बताएं।
+ मुख्य पासवर्ड सत्यापित करें
- पिन बताएं।
+ पिन सत्यापित करें।
संस्करण
@@ -394,29 +394,29 @@
देखें
- हमारी वेबसाइट पर जाएँ
+ हमारी वेबसाइट पर जाएं
- Visit our website to get help, news, email us, and/or learn more about how to use bitwarden.
+ मदद लेने, खबर लेने, हमें ईमेल करने, और/या बिटवार्डन के इस्तेमाल के बारे में ज़्यादा जानने के लिए हमारी वेबसाइट पर जाएं।
वेबसाइट
Label for a website.
- हाँ
+ हां
खाता
- अपना नया खाता बनाया गया है! अब आप लॉग ऑन कर सकते हैं।
+ आपका नया खाता बनाया गया! अब आप लॉग इन कर सकते हैं।
- आइटम जोड़ें
+ चीज़ जोड़ें
- ऐप का विस्तारण
+ ऐप एक्सटेंशन
Use the bitwarden accessibility service to auto-fill your logins across apps and the web.
@@ -776,10 +776,10 @@
सक्षम
- Off
+ बंद
- On
+ चालू
स्थिति
@@ -1096,16 +1096,16 @@ Scanning will happen automatically.
मध्य नाम
- Mr
+ श्री
- Mrs
+ श्रीमती
- Ms
+ श्रीमती
- Mx
+ मैक्स
नवंबर
@@ -2274,7 +2274,7 @@ Scanning will happen automatically.
Vault: {0}
- All
+ सब
TOTP
@@ -2365,13 +2365,13 @@ select Add TOTP to store the key safely
Login denied
- Approve login requests
+ लॉगइन मांग माने
Use this device to approve login requests made from other devices.
- Allow notifications
+ सूचना देने दें
Receive push notifications for new login requests
@@ -2522,99 +2522,99 @@ Do you want to switch to this account?
Resend notification
- Need another option?
+ दूसरा ऑप्शन चाहिए?
- View all log in options
+ ऑप्शन में सारे लॉग देखें
- This request is no longer valid
+ ये मांग अब मान्य नहीं है
- Pending login requests
+ लंबित लॉगइन मांगे
- Decline all requests
+ सारे मांग नकारे
- Are you sure you want to decline all pending login requests?
+ सारे लंबित लॉगइन मांग पक्का नकारें?
- Requests declined
+ मांग नकारे गए
- No pending requests
+ कोई लंबित मांग नहीं
- Enable camera permission to use the scanner
+ स्कैनर इस्तेमाल करने के लिए कैमरा अनुमति दें
- Language
+ भाषा
- The language has been changed to {0}. Please restart the app to see the change
+ भाषा {0} में बदली गई। बदलाव देखने के लिए ऐप बंद करके वापस खोलें।
- Language change requires app restart
+ भाषा बदलाव के लिए ऐप बंद करके खोलना पड़ेगा
- Default (System)
+ डिफॉल्ट (सिस्टम)
- Important
+ ज़रूरी
- Your master password cannot be recovered if you forget it! {0} characters minimum.
+ आप अपना मुख्य पासवर्ड भूलने के बाद वापस नहीं ले सकते। {0} अक्षर कम-से-कम।
- Weak Master Password
+ कमज़ोर मुख्य पासवर्ड
- Weak password identified. Use a strong password to protect your account. Are you sure you want to use a weak password?
+ पासवर्ड कमज़ोर है। अपना खाता महफूज़ रखने के लिए एक ताकतवर पासवर्ड इस्तेमाल करें। कमज़ोर पासवर्ड पक्का इस्तेमाल करें?
- Weak
+ कमज़ोर
- Good
+ अच्छा
- Strong
+ ताकतवर
- Check known data breaches for this password
+ पुराने डाटा लीक में इस पासवर्ड को खोजें
- Exposed Master Password
+ मुख्य पासवर्ड लीक हुआ था
- Password found in a data breach. Use a unique password to protect your account. Are you sure you want to use an exposed password?
+ पासवर्ड एक डाटा लीक में मिला। अपना खाता महफूज़ रखने के लिए एक खास पासवर्ड इस्तेमाल करें। लीक हुआ पासवर्ड इस्तेमाल करें?
- Weak and Exposed Master Password
+ कमज़ोर और लीक हुआ मुख्य पासवर्ड
- Weak password identified and found in a data breach. Use a strong and unique password to protect your account. Are you sure you want to use this password?
+ पासवर्ड कमज़ोर है और एक डाटा लीक में मिला। अपना खाता महफूज़ रखने के लिए एक ताकतवर और खास पासवर्ड इस्तेमाल करें। ये पासवर्ड पक्का इस्तेमाल करें?
- Organization SSO identifier required.
+ संगठन एसएसओ पहचान चाहिए।
- Add the key to an existing or new item
+ चाबी एक मौजूदा या नए चीज़ में जोड़ें
- There are no items in your vault that match "{0}"
+ आपके तिजोरी में ऐसी कोई भी चीज़ नहीं है जो "{0}" से मेल खाती है
- Search for an item or add a new item
+ चीज़ खोजें या नया चीज़ जोड़ें
- There are no items that match the search
+ कोई भी चीज़ खोज शब्द से मेल नहीं खाता
- Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
+ आपका मुख्य पासवर्ड आपके संगठन के एक या उससे ज़्यादा नीति को नहीं मानता। तिजोरी एक्सेस करने के लिए आपको अपना मुख्य पासवर्ड अभी बदलना होगा। ये करने से आप अपने चालू सत्र से लॉग आउट हो जाएंगे, जिसके वजह से आपको वापस लॉग इन करना पड़ेगा। दूसरे डिवाइसों पर चालू सत्र एक घंटे तक सक्रिय रह सकते हैं।
- Current master password
+ चालू मुख्य पासवर्ड
diff --git a/src/App/Resources/AppResources.uk.resx b/src/App/Resources/AppResources.uk.resx
index 9a1b37c3a..d02f69588 100644
--- a/src/App/Resources/AppResources.uk.resx
+++ b/src/App/Resources/AppResources.uk.resx
@@ -1753,10 +1753,10 @@
Confirmation alert message when soft-deleting a cipher.
- Biometric unlock for this account is disabled pending verification of master password.
+ Біометричне розблокування для цього облікового запису вимкнено. Очікується перевірка головного пароля.
- Autofill biometric unlock for this account is disabled pending verification of master password.
+ Біометричне розблокування під час автозаповнення для цього облікового запису вимкнено. Очікується перевірка головного пароля.
Дозволити синхронізацію жестом
diff --git a/store/apple/hi/copy.resx b/store/apple/hi/copy.resx
index 10bff1f84..1f9138b79 100644
--- a/store/apple/hi/copy.resx
+++ b/store/apple/hi/copy.resx
@@ -118,55 +118,55 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- Bitwarden पासवर्ड मैनेजर
+ बिटवार्डन पासवर्ड मैनेजर
Max 30 characters
- Bitwarden, Inc. is the parent company of 8bit Solutions LLC.
+ बिटवार्डन अंतरराष्ट्रीय कॉरपोरेशन, 8बिट सॉल्यूश्नस एलएलसी की मूल कंपनी है।
-NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE.
+द वर्ज, यूएस न्यूज़ एंड वर्ल्ड रिपोर्ट, सीनेट, और कई दूसरे मीडिया संगठन द्वारा बोला गया दुनिया का सबसे बेहतरीन पासवर्ड मैनेजर।
-Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go.
+अनगिनत पासवर्ड मैनेज, स्टोर, महफूज़, और शेयर करें कही से भी। बिटवार्डन देता है ओपन सोर्स पासवर्ड मैनेजमेंट सुविधा सबको, चाहे वो घर पर हो, दफ्तर पर हो, या घूम रहे हो।
-Generate strong, unique, and random passwords based on security requirements for every website you frequent.
+आप जिन वेबसाइट पर जाते है उनके लिए बनाएं ताकतवर, खास, और बेतरतीब पासवर्ड उनकी सुरक्षा ज़रूरतो के हिसाब से।
-Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone.
+बिटवार्डन सेंड किसी को भी एन्क्रिप्टेड जानकारी, फाइल और सादा टेक्सट, तुरंत भेजें।
-Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues.
+बिटवार्डन कंपनियों के लिए टीम और बिज़नेस प्लान भी देता है ताकि आप अपने साथ काम करनेवालो के साथ पासवर्ड शेयर करे सुरक्षित होकर।
-Why Choose Bitwarden:
+बिटवार्डन को क्यों चुनें:
-World-Class Encryption
-Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private.
+ताकतवर एन्क्रिप्शन
+पासवर्ड एडवांस एंड-टू-एंड एन्क्रिप्शन (एईएस-256 बिट, सॉल्टेड हैशटैग, और पीबीकेडीएफ2 शा-256) के साथ सुरक्षित रखा जाता है ताकि आपका डाटा महफूज़ और निजी रहे।
-Built-in Password Generator
-Generate strong, unique, and random passwords based on security requirements for every website you frequent.
+पहले से बना पासवर्ड जेनरेटर
+आप जिन वेबसाइट पर जाते है उनके लिए बनाएं ताकतवर, खास, और बेतरतीब पासवर्ड उनकी सुरक्षा ज़रूरतो के हिसाब से।
-Global Translations
-Bitwarden translations exist in 40 languages and are growing, thanks to our global community.
+अंतरराष्ट्रीय अनुवाद
+40 से ज़्यादा भाषा में बिटवार्डन इस्तेमाल करें, जिसे लिखा है हमारी अंतरराष्ट्रीय दोस्तो ने।
-Cross-Platform Applications
-Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more.
+कई प्लेनफॉर्म पर मौजूद
+अपने बिटवार्डन तिजोरी से संवेदनशील डाटा महफूज़ और शेयर करें किसी भी ब्राउज़र, फोन, या डेस्कटॉप जैसे डिवाइसो से।
Max 4000 characters
- बिटवर्डन, 8 बिट, पासवर्ड, फ्री पासवर्ड मैनेजर, पासवर्ड मैनेजर, लॉगिन मैनेजर
+ बिटवर्डन, 8 बिट, पासवर्ड, मुफ्त पासवर्ड मैनेजर, पासवर्ड मैनेजर, लॉगइन मैनेजर
Max 100 characters
- एक सुरक्षित तिजोरी से अपने सभी लॉगिन और पासवर्ड प्रबंधित करें
+ एक सुरक्षित तिजोरी से अपने सारे लॉगइन और पासवर्ड मैनेज करें
- स्वचालित रूप से मजबूत, यादृच्छिक और सुरक्षित पासवर्ड उत्पन्न करते हैं
+ अपनेआप ताकतवर, बेतरतीब, और महफूज़ पासवर्ड बनाएं
- टच आईडी, पिन कोड या मास्टर पासवर्ड से अपनी तिजोरी को सुरक्षित रखें
+ टच आईडी, पिन कोड, या मुख्य पासवर्ड से अपनी तिजोरी सुरक्षित रखें
- सफारी, क्रोम और अन्य सैकड़ों ऐप्स से ऑटो-फिल लॉगिन करें
+ सफारी, क्रोम, और सैकड़ों दूसरे ऐप से अपनेआप भरकर लॉगइन करें
- कई उपकरणों से अपने Vault को सिंक और एक्सेस करें
+ अपने तिजोरी को अलग-अलग डिवाइसो से सिंक और एक्सेस करें
diff --git a/store/google/hi/copy.resx b/store/google/hi/copy.resx
index 1d1420e6e..62790245b 100644
--- a/store/google/hi/copy.resx
+++ b/store/google/hi/copy.resx
@@ -118,61 +118,61 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- bitwarden Password Manager
+ बिटवार्डन पासवर्ड मैनेजर
Max 30 characters
- bitwarden is a login and password manager that helps keep you safe while online.
+ बिटवाडर्न एक लॉगइन और पासवर्ड मैनेजर है जो आपको ऑनलाइन महफूज़ रखता है।
Max 80 characters
- Bitwarden, Inc. is the parent company of 8bit Solutions LLC.
+ बिटवार्डन अंतरराष्ट्रीय कॉरपोरेशन, 8बिट सॉल्यूश्नस एलएलसी की मूल कंपनी है।
-NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE.
+द वर्ज, यूएस न्यूज़ एंड वर्ल्ड रिपोर्ट, सीनेट, और कई दूसरे मीडिया संगठन द्वारा बोला गया दुनिया का सबसे बेहतरीन पासवर्ड मैनेजर।
-Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go.
+अनगिनत पासवर्ड मैनेज, स्टोर, महफूज़, और शेयर करें कही से भी। बिटवार्डन देता है ओपन सोर्स पासवर्ड मैनेजमेंट सुविधा सबको, चाहे वो घर पर हो, दफ्तर पर हो, या घूम रहे हो।
-Generate strong, unique, and random passwords based on security requirements for every website you frequent.
+आप जिन वेबसाइट पर जाते है उनके लिए बनाएं ताकतवर, खास, और बेतरतीब पासवर्ड उनकी सुरक्षा ज़रूरतो के हिसाब से।
-Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone.
+बिटवार्डन सेंड किसी को भी एन्क्रिप्टेड जानकारी, फाइल और सादा टेक्सट, तुरंत भेजें।
-Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues.
+बिटवार्डन कंपनियों के लिए टीम और बिज़नेस प्लान भी देता है ताकि आप अपने साथ काम करनेवालो के साथ पासवर्ड शेयर करे सुरक्षित होकर।
-Why Choose Bitwarden:
+बिटवार्डन को क्यों चुनें:
-World-Class Encryption
-Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private.
+ताकतवर एन्क्रिप्शन
+पासवर्ड एडवांस एंड-टू-एंड एन्क्रिप्शन (एईएस-256 बिट, सॉल्टेड हैशटैग, और पीबीकेडीएफ2 शा-256) के साथ सुरक्षित रखा जाता है ताकि आपका डाटा महफूज़ और निजी रहे।
-Built-in Password Generator
-Generate strong, unique, and random passwords based on security requirements for every website you frequent.
+पहले से बना पासवर्ड जेनरेटर
+आप जिन वेबसाइट पर जाते है उनके लिए बनाएं ताकतवर, खास, और बेतरतीब पासवर्ड उनकी सुरक्षा ज़रूरतो के हिसाब से।
-Global Translations
-Bitwarden translations exist in 40 languages and are growing, thanks to our global community.
+अंतरराष्ट्रीय अनुवाद
+40 से ज़्यादा भाषा में बिटवार्डन इस्तेमाल करें, जिसे लिखा है हमारी अंतरराष्ट्रीय दोस्तो ने।
-Cross-Platform Applications
-Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more.
+कई प्लेनफॉर्म पर मौजूद
+अपने बिटवार्डन तिजोरी से संवेदनशील डाटा महफूज़ और शेयर करें किसी भी ब्राउज़र, फोन, या डेस्कटॉप जैसे डिवाइसो से।
Max 4000 characters
- आपके सभी उपकरणों के लिए एक सुरक्षित और मुफ्त पासवर्ड प्रबंधक
+ आपके सारे डिवाइसो के लिए एक सुरक्षित और मुफ्त पासवर्ड मैनेजर
- एक सुरक्षित तिजोरी से अपने सभी लॉगिन और पासवर्ड प्रबंधित करें
+ एक सुरक्षित तिजोरी से अपने सारे लॉगइन और पासवर्ड मैनेज करें
- स्वचालित रूप से मजबूत, यादृच्छिक और सुरक्षित पासवर्ड उत्पन्न करते हैं
+ अपनेआप ताकतवर, बेतरतीब, और महफूज़ पासवर्ड बनाएं
- टच आईडी, पिन कोड या मास्टर पासवर्ड से अपनी तिजोरी को सुरक्षित रखें
+ फिंगरप्रिंट, पिन कोड, या मुख्य पासवर्ड से अपनी तिजोरी सुरक्षित रखें
- अपने वेब ब्राउज़र और अन्य एप्लिकेशन के भीतर से जल्दी से लॉगिन करें
+ अपने वेब ब्राउज़र और दूसरे ऐप से जल्दी लॉगइन करें
- कई उपकरणों से अपने वॉल्ट को सिंक और एक्सेस करें
+ अपने तिजोरी को अलग-अलग डिवाइसों से सिंक और एक्सेस करें
-- फ़ोन
+- फोन
- टैबलेट
- डेस्कटॉप
- वेब
From 65307f6eabfcfc3ab513284e816f85140c1f0cb7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Bispo?=
Date: Fri, 19 May 2023 12:42:41 +0100
Subject: [PATCH 02/33] [PM-1351][PM-190] Add a mobile service to retrieve
feature flags from API (#2431)
---
src/App/App.xaml.cs | 8 ++
.../Accounts/EnvironmentPageViewModel.cs | 4 +-
src/App/Pages/Accounts/HomePage.xaml | 26 +++++--
src/App/Pages/Accounts/HomePage.xaml.cs | 18 +++--
src/App/Pages/Accounts/HomePageViewModel.cs | 77 ++++++++++++++++++-
src/App/Pages/Accounts/LoginPageViewModel.cs | 14 +++-
src/App/Resources/AppResources.Designer.cs | 51 +++++++++++-
src/App/Resources/AppResources.resx | 19 ++++-
src/Core/Abstractions/IApiService.cs | 1 +
src/Core/Abstractions/IConfigService.cs | 15 ++++
src/Core/Abstractions/IStateService.cs | 2 +
src/Core/Constants.cs | 3 +
src/Core/Models/Data/EnvironmentUrlData.cs | 11 +++
src/Core/Models/Response/ConfigResponse.cs | 31 ++++++++
src/Core/Services/ApiService.cs | 10 +++
src/Core/Services/ConfigService.cs | 77 +++++++++++++++++++
src/Core/Services/StateService.cs | 10 +++
src/Core/Utilities/ServiceContainer.cs | 2 +
18 files changed, 355 insertions(+), 24 deletions(-)
create mode 100644 src/Core/Abstractions/IConfigService.cs
create mode 100644 src/Core/Models/Response/ConfigResponse.cs
create mode 100644 src/Core/Services/ConfigService.cs
diff --git a/src/App/App.xaml.cs b/src/App/App.xaml.cs
index 059159eb7..aa839370b 100644
--- a/src/App/App.xaml.cs
+++ b/src/App/App.xaml.cs
@@ -38,6 +38,7 @@ namespace Bit.App
private readonly IFileService _fileService;
private readonly IAccountsManager _accountsManager;
private readonly IPushNotificationService _pushNotificationService;
+ private readonly IConfigService _configService;
private static bool _isResumed;
// these variables are static because the app is launching new activities on notification click, creating new instances of App.
private static bool _pendingCheckPasswordlessLoginRequests;
@@ -61,6 +62,7 @@ namespace Bit.App
_fileService = ServiceContainer.Resolve();
_accountsManager = ServiceContainer.Resolve("accountsManager");
_pushNotificationService = ServiceContainer.Resolve();
+ _configService = ServiceContainer.Resolve();
_accountsManager.Init(() => Options, this);
@@ -169,6 +171,10 @@ namespace Bit.App
new NavigationPage(new UpdateTempPasswordPage()));
});
}
+ else if (message.Command == "syncCompleted")
+ {
+ await _configService.GetAsync(true);
+ }
else if (message.Command == Constants.PasswordlessLoginRequestKey
|| message.Command == "unlocked"
|| message.Command == AccountsManagerMessageCommands.ACCOUNT_SWITCH_COMPLETED)
@@ -293,6 +299,8 @@ namespace Bit.App
// Reset delay on every start
_vaultTimeoutService.DelayLockAndLogoutMs = null;
}
+
+ await _configService.GetAsync();
_messagingService.Send("startEventTimer");
}
diff --git a/src/App/Pages/Accounts/EnvironmentPageViewModel.cs b/src/App/Pages/Accounts/EnvironmentPageViewModel.cs
index 90fc8e698..abac94084 100644
--- a/src/App/Pages/Accounts/EnvironmentPageViewModel.cs
+++ b/src/App/Pages/Accounts/EnvironmentPageViewModel.cs
@@ -3,6 +3,7 @@ using System.Threading.Tasks;
using System.Windows.Input;
using Bit.App.Resources;
using Bit.Core.Abstractions;
+using Bit.Core.Models.Data;
using Bit.Core.Utilities;
using Xamarin.CommunityToolkit.ObjectModel;
@@ -18,7 +19,8 @@ namespace Bit.App.Pages
_environmentService = ServiceContainer.Resolve("environmentService");
PageTitle = AppResources.Settings;
- BaseUrl = _environmentService.BaseUrl;
+ BaseUrl = _environmentService.BaseUrl == EnvironmentUrlData.DefaultEU.Base || EnvironmentUrlData.DefaultUS.Base == _environmentService.BaseUrl ?
+ string.Empty : _environmentService.BaseUrl;
WebVaultUrl = _environmentService.WebVaultUrl;
ApiUrl = _environmentService.ApiUrl;
IdentityUrl = _environmentService.IdentityUrl;
diff --git a/src/App/Pages/Accounts/HomePage.xaml b/src/App/Pages/Accounts/HomePage.xaml
index 0bb2b6ebf..b44a243f9 100644
--- a/src/App/Pages/Accounts/HomePage.xaml
+++ b/src/App/Pages/Accounts/HomePage.xaml
@@ -25,10 +25,6 @@
AutomationProperties.IsInAccessibleTree="True"
AutomationProperties.Name="{u:I18n Account}" />
-
@@ -66,7 +62,27 @@
+ Margin="0, 6, 0 ,0">
+
+
+
+
+
+
+
diff --git a/src/App/Pages/Accounts/HomePage.xaml.cs b/src/App/Pages/Accounts/HomePage.xaml.cs
index cc5fdeccc..c374afe9f 100644
--- a/src/App/Pages/Accounts/HomePage.xaml.cs
+++ b/src/App/Pages/Accounts/HomePage.xaml.cs
@@ -15,6 +15,8 @@ namespace Bit.App.Pages
private readonly AppOptions _appOptions;
private IBroadcasterService _broadcasterService;
+ readonly LazyResolve _logger = new LazyResolve();
+
public HomePage(AppOptions appOptions = null)
{
_broadcasterService = ServiceContainer.Resolve("broadcasterService");
@@ -70,6 +72,14 @@ namespace Bit.App.Pages
});
}
});
+ try
+ {
+ await _vm.UpdateEnvironment();
+ }
+ catch (Exception ex)
+ {
+ _logger.Value?.Exception(ex);
+ }
}
protected override bool OnBackButtonPressed()
@@ -128,14 +138,6 @@ namespace Bit.App.Pages
await Navigation.PushModalAsync(new NavigationPage(page));
}
- private void Environment_Clicked(object sender, EventArgs e)
- {
- if (DoOnce())
- {
- _vm.StartEnvironmentAction();
- }
- }
-
private async Task StartEnvironmentAsync()
{
await _accountListOverlay.HideAsync();
diff --git a/src/App/Pages/Accounts/HomePageViewModel.cs b/src/App/Pages/Accounts/HomePageViewModel.cs
index d8a962141..f0ac6e699 100644
--- a/src/App/Pages/Accounts/HomePageViewModel.cs
+++ b/src/App/Pages/Accounts/HomePageViewModel.cs
@@ -4,7 +4,10 @@ using Bit.App.Abstractions;
using Bit.App.Controls;
using Bit.App.Resources;
using Bit.App.Utilities;
+using Bit.Core;
using Bit.Core.Abstractions;
+using Bit.Core.Models.Data;
+using Bit.Core.Models.Response;
using Bit.Core.Services;
using Bit.Core.Utilities;
using Xamarin.CommunityToolkit.ObjectModel;
@@ -17,16 +20,19 @@ namespace Bit.App.Pages
{
private readonly IStateService _stateService;
private readonly IMessagingService _messagingService;
+ private readonly IPlatformUtilsService _platformUtilsService;
+ private readonly ILogger _logger;
+ private readonly IEnvironmentService _environmentService;
+ private readonly IAccountsManager _accountManager;
+ private readonly IConfigService _configService;
private bool _showCancelButton;
private bool _rememberEmail;
private string _email;
+ private string _selectedEnvironmentName;
private bool _isEmailEnabled;
private bool _canLogin;
- private IPlatformUtilsService _platformUtilsService;
- private ILogger _logger;
- private IEnvironmentService _environmentService;
- private IAccountsManager _accountManager;
+ private bool _displayEuEnvironment;
public HomeViewModel()
{
@@ -36,6 +42,7 @@ namespace Bit.App.Pages
_logger = ServiceContainer.Resolve();
_environmentService = ServiceContainer.Resolve();
_accountManager = ServiceContainer.Resolve();
+ _configService = ServiceContainer.Resolve();
PageTitle = AppResources.Bitwarden;
@@ -49,6 +56,8 @@ namespace Bit.App.Pages
onException: _logger.Exception, allowsMultipleExecutions: false);
CloseCommand = new AsyncCommand(async () => await Device.InvokeOnMainThreadAsync(CloseAction),
onException: _logger.Exception, allowsMultipleExecutions: false);
+ ShowEnvironmentPickerCommand = new AsyncCommand(ShowEnvironmentPickerAsync,
+ onException: _logger.Exception, allowsMultipleExecutions: false);
InitAsync().FireAndForget();
}
@@ -71,6 +80,13 @@ namespace Bit.App.Pages
additionalPropertyNames: new[] { nameof(CanContinue) });
}
+ public string SelectedEnvironmentName
+ {
+ get => $"{_selectedEnvironmentName} {BitwardenIcons.AngleDown}";
+ set => SetProperty(ref _selectedEnvironmentName, value);
+ }
+
+ public string RegionText => $"{AppResources.Region}:";
public bool CanContinue => !string.IsNullOrEmpty(Email);
public FormattedString CreateAccountText
@@ -101,11 +117,13 @@ namespace Bit.App.Pages
public AsyncCommand ContinueCommand { get; }
public AsyncCommand CloseCommand { get; }
public AsyncCommand CreateAccountCommand { get; }
+ public AsyncCommand ShowEnvironmentPickerCommand { get; }
public async Task InitAsync()
{
Email = await _stateService.GetRememberedEmailAsync();
RememberEmail = !string.IsNullOrEmpty(Email);
+ _displayEuEnvironment = await _configService.GetFeatureFlagBoolAsync(Constants.DisplayEuEnvironmentFlag, forceRefresh: true);
}
public async Task ContinueToLoginStepAsync()
@@ -144,5 +162,56 @@ namespace Bit.App.Pages
await _platformUtilsService.ShowDialogAsync(AppResources.GenericErrorMessage, AppResources.AnErrorHasOccurred, AppResources.Ok);
}
}
+
+ public async Task ShowEnvironmentPickerAsync()
+ {
+ var options = _displayEuEnvironment
+ ? new string[] { AppResources.US, AppResources.EU, AppResources.SelfHosted }
+ : new string[] { AppResources.US, AppResources.SelfHosted };
+
+ await Device.InvokeOnMainThreadAsync(async () =>
+ {
+ var result = await Page.DisplayActionSheet(AppResources.DataRegion, AppResources.Cancel, null, options);
+
+ if (result is null || result == AppResources.Cancel)
+ {
+ return;
+ }
+
+ if (result == AppResources.SelfHosted)
+ {
+ StartEnvironmentAction?.Invoke();
+ return;
+ }
+
+ await _environmentService.SetUrlsAsync(result == AppResources.EU ? EnvironmentUrlData.DefaultEU : EnvironmentUrlData.DefaultUS);
+ SelectedEnvironmentName = result;
+ });
+ }
+
+ public async Task UpdateEnvironment()
+ {
+ var environmentsSaved = await _stateService.GetPreAuthEnvironmentUrlsAsync();
+ if (environmentsSaved == null || environmentsSaved.IsEmpty)
+ {
+ await _environmentService.SetUrlsAsync(EnvironmentUrlData.DefaultUS);
+ environmentsSaved = EnvironmentUrlData.DefaultUS;
+ SelectedEnvironmentName = AppResources.US;
+ return;
+ }
+
+ if (environmentsSaved.Base == EnvironmentUrlData.DefaultUS.Base)
+ {
+ SelectedEnvironmentName = AppResources.US;
+ }
+ else if (environmentsSaved.Base == EnvironmentUrlData.DefaultEU.Base)
+ {
+ SelectedEnvironmentName = AppResources.EU;
+ }
+ else
+ {
+ SelectedEnvironmentName = AppResources.SelfHosted;
+ }
+ }
}
}
diff --git a/src/App/Pages/Accounts/LoginPageViewModel.cs b/src/App/Pages/Accounts/LoginPageViewModel.cs
index cebdffdb3..1bf9b91c1 100644
--- a/src/App/Pages/Accounts/LoginPageViewModel.cs
+++ b/src/App/Pages/Accounts/LoginPageViewModel.cs
@@ -41,6 +41,7 @@ namespace Bit.App.Pages
private bool _isEmailEnabled;
private bool _isKnownDevice;
private bool _isExecutingLogin;
+ private string _environmentHostName;
public LoginPageViewModel()
{
@@ -115,6 +116,16 @@ namespace Bit.App.Pages
set => SetProperty(ref _isKnownDevice, value);
}
+ public string EnvironmentDomainName
+ {
+ get => _environmentHostName;
+ set => SetProperty(ref _environmentHostName, value,
+ additionalPropertyNames: new string[]
+ {
+ nameof(LoggingInAsText)
+ });
+ }
+
public AccountSwitchingOverlayViewModel AccountSwitchingOverlayViewModel { get; }
public Command LogInCommand { get; }
public Command TogglePasswordCommand { get; }
@@ -122,7 +133,7 @@ namespace Bit.App.Pages
public ICommand LogInWithDeviceCommand { get; }
public string ShowPasswordIcon => ShowPassword ? BitwardenIcons.EyeSlash : BitwardenIcons.Eye;
public string PasswordVisibilityAccessibilityText => ShowPassword ? AppResources.PasswordIsVisibleTapToHide : AppResources.PasswordIsNotVisibleTapToShow;
- public string LoggingInAsText => string.Format(AppResources.LoggingInAsX, Email);
+ public string LoggingInAsText => string.Format(AppResources.LoggingInAsXOnY, Email, EnvironmentDomainName);
public bool IsIosExtension { get; set; }
public bool CanRemoveAccount { get; set; }
public Action StartTwoFactorAction { get; set; }
@@ -151,6 +162,7 @@ namespace Bit.App.Pages
Email = await _stateService.GetRememberedEmailAsync();
}
CanRemoveAccount = await _stateService.GetActiveUserEmailAsync() != Email;
+ EnvironmentDomainName = CoreHelpers.GetDomain((await _stateService.GetPreAuthEnvironmentUrlsAsync())?.Base);
IsKnownDevice = await _apiService.GetKnownDeviceAsync(Email, await _appIdService.GetAppIdAsync());
}
catch (ApiException apiEx) when (apiEx.Error.StatusCode == System.Net.HttpStatusCode.Unauthorized)
diff --git a/src/App/Resources/AppResources.Designer.cs b/src/App/Resources/AppResources.Designer.cs
index 2245d5f78..3810c9cf9 100644
--- a/src/App/Resources/AppResources.Designer.cs
+++ b/src/App/Resources/AppResources.Designer.cs
@@ -1750,6 +1750,15 @@ namespace Bit.App.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Data region.
+ ///
+ public static string DataRegion {
+ get {
+ return ResourceManager.GetString("DataRegion", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Password updated.
///
@@ -2326,6 +2335,15 @@ namespace Bit.App.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to EU.
+ ///
+ public static string EU {
+ get {
+ return ResourceManager.GetString("EU", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Exact.
///
@@ -3569,11 +3587,11 @@ namespace Bit.App.Resources {
}
///
- /// Looks up a localized string similar to Logging in as {0}.
+ /// Looks up a localized string similar to Logging in as {0} on {1}.
///
- public static string LoggingInAsX {
+ public static string LoggingInAsXOnY {
get {
- return ResourceManager.GetString("LoggingInAsX", resourceCulture);
+ return ResourceManager.GetString("LoggingInAsXOnY", resourceCulture);
}
}
@@ -5129,6 +5147,15 @@ namespace Bit.App.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Region.
+ ///
+ public static string Region {
+ get {
+ return ResourceManager.GetString("Region", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Remember me.
///
@@ -5462,6 +5489,15 @@ namespace Bit.App.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Self-hosted.
+ ///
+ public static string SelfHosted {
+ get {
+ return ResourceManager.GetString("SelfHosted", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Self-hosted environment.
///
@@ -6524,6 +6560,15 @@ namespace Bit.App.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to US.
+ ///
+ public static string US {
+ get {
+ return ResourceManager.GetString("US", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Use another two-step login method.
///
diff --git a/src/App/Resources/AppResources.resx b/src/App/Resources/AppResources.resx
index 5e9c48694..a94cdb2b4 100644
--- a/src/App/Resources/AppResources.resx
+++ b/src/App/Resources/AppResources.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/Core/Abstractions/IApiService.cs b/src/Core/Abstractions/IApiService.cs
index 19930ce55..0c2474439 100644
--- a/src/Core/Abstractions/IApiService.cs
+++ b/src/Core/Abstractions/IApiService.cs
@@ -92,5 +92,6 @@ namespace Bit.Core.Abstractions
Task GetUsernameFromAsync(ForwardedEmailServiceType service, UsernameGeneratorConfig config);
Task GetKnownDeviceAsync(string email, string deviceIdentifier);
Task GetOrgDomainSsoDetailsAsync(string email);
+ Task GetConfigsAsync();
}
}
diff --git a/src/Core/Abstractions/IConfigService.cs b/src/Core/Abstractions/IConfigService.cs
new file mode 100644
index 000000000..285288d2f
--- /dev/null
+++ b/src/Core/Abstractions/IConfigService.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Threading.Tasks;
+using Bit.Core.Models.Response;
+
+namespace Bit.Core.Abstractions
+{
+ public interface IConfigService
+ {
+ Task GetAsync(bool forceRefresh = false);
+ Task GetFeatureFlagBoolAsync(string key, bool forceRefresh = false, bool defaultValue = false);
+ Task GetFeatureFlagStringAsync(string key, bool forceRefresh = false, string defaultValue = null);
+ Task GetFeatureFlagIntAsync(string key, bool forceRefresh = false, int defaultValue = 0);
+ }
+}
+
diff --git a/src/Core/Abstractions/IStateService.cs b/src/Core/Abstractions/IStateService.cs
index 4062599af..355acd093 100644
--- a/src/Core/Abstractions/IStateService.cs
+++ b/src/Core/Abstractions/IStateService.cs
@@ -174,5 +174,7 @@ namespace Bit.Core.Abstractions
Task SetPreLoginEmailAsync(string value);
string GetLocale();
void SetLocale(string locale);
+ ConfigResponse GetConfigs();
+ void SetConfigs(ConfigResponse value);
}
}
diff --git a/src/Core/Constants.cs b/src/Core/Constants.cs
index 0f4b0915c..73863f580 100644
--- a/src/Core/Constants.cs
+++ b/src/Core/Constants.cs
@@ -41,6 +41,9 @@
public const string NotificationDataType = "Type";
public const string PasswordlessLoginRequestKey = "passwordlessLoginRequest";
public const string PreLoginEmailKey = "preLoginEmailKey";
+ public const string ConfigsKey = "configsKey";
+ public const string DisplayEuEnvironmentFlag = "display-eu-environment";
+
///
/// This key is used to store the value of "ShouldConnectToWatch" of the last user that had logged in
/// which is used to handle Apple Watch state logic
diff --git a/src/Core/Models/Data/EnvironmentUrlData.cs b/src/Core/Models/Data/EnvironmentUrlData.cs
index 744541e19..ae57f804b 100644
--- a/src/Core/Models/Data/EnvironmentUrlData.cs
+++ b/src/Core/Models/Data/EnvironmentUrlData.cs
@@ -2,6 +2,9 @@
{
public class EnvironmentUrlData
{
+ public static EnvironmentUrlData DefaultUS = new EnvironmentUrlData { Base = "https://vault.bitwarden.com" };
+ public static EnvironmentUrlData DefaultEU = new EnvironmentUrlData { Base = "https://vault.bitwarden.eu" };
+
public string Base { get; set; }
public string Api { get; set; }
public string Identity { get; set; }
@@ -9,5 +12,13 @@
public string Notifications { get; set; }
public string WebVault { get; set; }
public string Events { get; set; }
+
+ public bool IsEmpty => string.IsNullOrEmpty(Base)
+ && string.IsNullOrEmpty(Api)
+ && string.IsNullOrEmpty(Identity)
+ && string.IsNullOrEmpty(Icons)
+ && string.IsNullOrEmpty(Notifications)
+ && string.IsNullOrEmpty(WebVault)
+ && string.IsNullOrEmpty(Events);
}
}
diff --git a/src/Core/Models/Response/ConfigResponse.cs b/src/Core/Models/Response/ConfigResponse.cs
new file mode 100644
index 000000000..d171a4bad
--- /dev/null
+++ b/src/Core/Models/Response/ConfigResponse.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+
+namespace Bit.Core.Models.Response
+{
+ public class ConfigResponse
+ {
+ public string Version { get; set; }
+ public string GitHash { get; set; }
+ public ServerConfigResponse Server { get; set; }
+ public EnvironmentConfigResponse Environment { get; set; }
+ public IDictionary FeatureStates { get; set; }
+ public DateTime ExpiresOn { get; set; }
+ }
+
+ public class ServerConfigResponse
+ {
+ public string Name { get; set; }
+ public string Url { get; set; }
+ }
+
+ public class EnvironmentConfigResponse
+ {
+ public string Vault { get; set; }
+ public string Api { get; set; }
+ public string Identity { get; set; }
+ public string Notifications { get; set; }
+ public string Sso { get; set; }
+ }
+}
+
diff --git a/src/Core/Services/ApiService.cs b/src/Core/Services/ApiService.cs
index d486ac2c4..436916aff 100644
--- a/src/Core/Services/ApiService.cs
+++ b/src/Core/Services/ApiService.cs
@@ -585,6 +585,16 @@ namespace Bit.Core.Services
#endregion
+ #region Configs
+
+ public async Task GetConfigsAsync()
+ {
+ var accessToken = await _tokenService.GetTokenAsync();
+ return await SendAsync(HttpMethod.Get, "/config/", null, !string.IsNullOrEmpty(accessToken), true);
+ }
+
+ #endregion
+
#region Helpers
public async Task GetActiveBearerTokenAsync()
diff --git a/src/Core/Services/ConfigService.cs b/src/Core/Services/ConfigService.cs
new file mode 100644
index 000000000..360fc4b0f
--- /dev/null
+++ b/src/Core/Services/ConfigService.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Bit.Core.Abstractions;
+using Bit.Core.Exceptions;
+using Bit.Core.Models.Domain;
+using Bit.Core.Models.Response;
+using Bit.Core.Models.View;
+
+namespace Bit.Core.Services
+{
+ public class ConfigService : IConfigService
+ {
+ private const int UPDATE_INTERVAL_MINS = 60;
+ private ConfigResponse _configs;
+ private readonly IApiService _apiService;
+ private readonly IStateService _stateService;
+ private readonly ILogger _logger;
+
+ public ConfigService(IApiService apiService, IStateService stateService, ILogger logger)
+ {
+ _apiService = apiService;
+ _stateService = stateService;
+ _logger = logger;
+ }
+
+ public async Task GetAsync(bool forceRefresh = false)
+ {
+ try
+ {
+ _configs = _stateService.GetConfigs();
+ if (forceRefresh || _configs?.ExpiresOn is null || _configs.ExpiresOn <= DateTime.UtcNow)
+ {
+ _configs = await _apiService.GetConfigsAsync();
+ _configs.ExpiresOn = DateTime.UtcNow.AddMinutes(UPDATE_INTERVAL_MINS);
+ _stateService.SetConfigs(_configs);
+ }
+ }
+ catch (ApiException ex) when (ex.Error.StatusCode == System.Net.HttpStatusCode.BadGateway)
+ {
+ // ignore if there is no internet connection and return local configs
+ }
+ catch (Exception ex)
+ {
+ _logger.Exception(ex);
+ }
+
+ return _configs;
+ }
+
+ public async Task GetFeatureFlagBoolAsync(string key, bool forceRefresh = false, bool defaultValue = false) => await GetFeatureFlagAsync(key, forceRefresh, defaultValue);
+
+ public async Task GetFeatureFlagStringAsync(string key, bool forceRefresh = false, string defaultValue = null) => await GetFeatureFlagAsync(key, forceRefresh, defaultValue);
+
+ public async Task GetFeatureFlagIntAsync(string key, bool forceRefresh = false, int defaultValue = 0) => await GetFeatureFlagAsync(key, forceRefresh, defaultValue);
+
+ private async Task GetFeatureFlagAsync(string key, bool forceRefresh = false, T defaultValue = default)
+ {
+ await GetAsync(forceRefresh);
+ if (_configs == null || _configs.FeatureStates == null)
+ {
+ return defaultValue;
+ }
+
+ if (_configs.FeatureStates.TryGetValue(key, out var val) == true
+ &&
+ val is T actualValue)
+ {
+ return actualValue;
+ }
+
+ return defaultValue;
+ }
+ }
+}
+
diff --git a/src/Core/Services/StateService.cs b/src/Core/Services/StateService.cs
index 363c44efb..ae2d62d8e 100644
--- a/src/Core/Services/StateService.cs
+++ b/src/Core/Services/StateService.cs
@@ -1280,6 +1280,16 @@ namespace Bit.Core.Services
await SetValueAsync(Constants.PreLoginEmailKey, value, options);
}
+ public ConfigResponse GetConfigs()
+ {
+ return _storageMediatorService.Get(Constants.ConfigsKey);
+ }
+
+ public void SetConfigs(ConfigResponse value)
+ {
+ _storageMediatorService.Save(Constants.ConfigsKey, value);
+ }
+
// Helpers
[Obsolete("Use IStorageMediatorService instead")]
diff --git a/src/Core/Utilities/ServiceContainer.cs b/src/Core/Utilities/ServiceContainer.cs
index c3b6bbd65..8cab68547 100644
--- a/src/Core/Utilities/ServiceContainer.cs
+++ b/src/Core/Utilities/ServiceContainer.cs
@@ -87,6 +87,7 @@ namespace Bit.Core.Utilities
var userVerificationService = new UserVerificationService(apiService, platformUtilsService, i18nService,
cryptoService);
var usernameGenerationService = new UsernameGenerationService(cryptoService, apiService, stateService);
+ var configService = new ConfigService(apiService, stateService, logger);
Register(conditionedRunner);
Register("tokenService", tokenService);
@@ -112,6 +113,7 @@ namespace Bit.Core.Utilities
Register("keyConnectorService", keyConnectorService);
Register("userVerificationService", userVerificationService);
Register(usernameGenerationService);
+ Register(configService);
}
public static void Register(string serviceName, T obj)
From 74e9914f5bd1848df148f5a9c170ef9a5d74c716 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 22 May 2023 11:35:15 +0200
Subject: [PATCH 03/33] Autosync the updated translations (#2531)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
---
src/App/Resources/AppResources.af.resx | 19 +-
src/App/Resources/AppResources.ar.resx | 19 +-
src/App/Resources/AppResources.az.resx | 19 +-
src/App/Resources/AppResources.be.resx | 19 +-
src/App/Resources/AppResources.bg.resx | 19 +-
src/App/Resources/AppResources.bn.resx | 19 +-
src/App/Resources/AppResources.bs.resx | 19 +-
src/App/Resources/AppResources.ca.resx | 19 +-
src/App/Resources/AppResources.cs.resx | 19 +-
src/App/Resources/AppResources.cy.resx | 19 +-
src/App/Resources/AppResources.da.resx | 19 +-
src/App/Resources/AppResources.de.resx | 19 +-
src/App/Resources/AppResources.el.resx | 19 +-
src/App/Resources/AppResources.en-GB.resx | 19 +-
src/App/Resources/AppResources.en-IN.resx | 19 +-
src/App/Resources/AppResources.es.resx | 19 +-
src/App/Resources/AppResources.et.resx | 19 +-
src/App/Resources/AppResources.eu.resx | 19 +-
src/App/Resources/AppResources.fa.resx | 19 +-
src/App/Resources/AppResources.fi.resx | 21 ++-
src/App/Resources/AppResources.fil.resx | 19 +-
src/App/Resources/AppResources.fr.resx | 19 +-
src/App/Resources/AppResources.gl.resx | 19 +-
src/App/Resources/AppResources.he.resx | 19 +-
src/App/Resources/AppResources.hi.resx | 187 +++++++++++---------
src/App/Resources/AppResources.hr.resx | 19 +-
src/App/Resources/AppResources.hu.resx | 19 +-
src/App/Resources/AppResources.id.resx | 19 +-
src/App/Resources/AppResources.it.resx | 19 +-
src/App/Resources/AppResources.ja.resx | 19 +-
src/App/Resources/AppResources.ka.resx | 19 +-
src/App/Resources/AppResources.kn.resx | 19 +-
src/App/Resources/AppResources.ko.resx | 19 +-
src/App/Resources/AppResources.lt.resx | 19 +-
src/App/Resources/AppResources.lv.resx | 19 +-
src/App/Resources/AppResources.ml.resx | 19 +-
src/App/Resources/AppResources.my.resx | 19 +-
src/App/Resources/AppResources.nb.resx | 21 ++-
src/App/Resources/AppResources.ne.resx | 19 +-
src/App/Resources/AppResources.nl.resx | 19 +-
src/App/Resources/AppResources.nn.resx | 63 ++++---
src/App/Resources/AppResources.or.resx | 19 +-
src/App/Resources/AppResources.pl.resx | 19 +-
src/App/Resources/AppResources.pt-BR.resx | 21 ++-
src/App/Resources/AppResources.pt-PT.resx | 51 ++++--
src/App/Resources/AppResources.ro.resx | 19 +-
src/App/Resources/AppResources.ru.resx | 19 +-
src/App/Resources/AppResources.si.resx | 19 +-
src/App/Resources/AppResources.sk.resx | 19 +-
src/App/Resources/AppResources.sl.resx | 19 +-
src/App/Resources/AppResources.sr.resx | 19 +-
src/App/Resources/AppResources.sv.resx | 19 +-
src/App/Resources/AppResources.ta.resx | 19 +-
src/App/Resources/AppResources.te.resx | 19 +-
src/App/Resources/AppResources.th.resx | 19 +-
src/App/Resources/AppResources.tr.resx | 19 +-
src/App/Resources/AppResources.uk.resx | 19 +-
src/App/Resources/AppResources.vi.resx | 19 +-
src/App/Resources/AppResources.zh-Hans.resx | 19 +-
src/App/Resources/AppResources.zh-Hant.resx | 19 +-
store/apple/hi/copy.resx | 2 +-
store/google/hi/copy.resx | 2 +-
62 files changed, 1147 insertions(+), 247 deletions(-)
diff --git a/src/App/Resources/AppResources.af.resx b/src/App/Resources/AppResources.af.resx
index fff2ae8f8..e793cbd82 100644
--- a/src/App/Resources/AppResources.af.resx
+++ b/src/App/Resources/AppResources.af.resx
@@ -2495,8 +2495,8 @@ Wil u na die rekening omskakel?
Kry hoofwagwoord wenk
-
- Teken in as {0}
+
+ Logging in as {0} on {1}
Nie jy nie?
@@ -2609,6 +2609,21 @@ Wil u na die rekening omskakel?
Daar is geen items wat met die soekterm ooreenstem nie
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.ar.resx b/src/App/Resources/AppResources.ar.resx
index 4a99bbc0f..6e7b9bfc0 100644
--- a/src/App/Resources/AppResources.ar.resx
+++ b/src/App/Resources/AppResources.ar.resx
@@ -2496,8 +2496,8 @@
احصل على تلميح كلمة المرور الرئيسية
-
- تسجيل الدخول كـ {0}
+
+ Logging in as {0} on {1}
ليس أنت؟
@@ -2610,6 +2610,21 @@
لا توجد عناصر تطابق البحث
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
كلمة المرور الرئيسية الخاصة بك لا تفي بواحدة أو أكثر من سياسات مؤسستك. من أجل الوصول إلى الخزنة، يجب عليك تحديث كلمة المرور الرئيسية الآن. سيتم تسجيل خروجك من الجلسة الحالية، مما يتطلب منك تسجيل الدخول مرة أخرى. وقد تظل الجلسات النشطة على أجهزة أخرى نشطة لمدة تصل إلى ساعة واحدة.
diff --git a/src/App/Resources/AppResources.az.resx b/src/App/Resources/AppResources.az.resx
index 7639ad033..5093abe1e 100644
--- a/src/App/Resources/AppResources.az.resx
+++ b/src/App/Resources/AppResources.az.resx
@@ -2494,8 +2494,8 @@ Bu hesaba keçmək istəyirsiniz?
Ana parol üçün məsləhət alın
-
- {0} olaraq giriş edilir
+
+ {1} üzərində {0} olaraq giriş edildi
Siz deyilsiniz?
@@ -2608,6 +2608,21 @@ Bu hesaba keçmək istəyirsiniz?
Axtarışa uyğun gələn heç bir element yoxdur
+
+ ABŞ
+
+
+ AB
+
+
+ Öz-özünə sahiblik edən
+
+
+ Data bölgəsi
+
+
+ Bölgə
+
Ana parolunuz təşkilatınızdakı siyasətlərdən birinə və ya bir neçəsinə uyğun gəlmir. Anbara müraciət üçün ana parolunuzu indi güncəlləməlisiniz. Davam etsəniz, hazırkı seansdan çıxış etmiş və təkrar giriş etməli olacaqsınız. Digər cihazlardakı aktiv seanslar bir saata qədər aktiv qalmağa davam edə bilər.
diff --git a/src/App/Resources/AppResources.be.resx b/src/App/Resources/AppResources.be.resx
index 92b3a3eee..b73d32376 100644
--- a/src/App/Resources/AppResources.be.resx
+++ b/src/App/Resources/AppResources.be.resx
@@ -2495,8 +2495,8 @@
Атрымаць падказку да асноўнага пароля
-
- Увайсці як {0}
+
+ Logging in as {0} on {1}
Не вы?
@@ -2609,6 +2609,21 @@
Адсутнічаюць элементы, якія адпавядаюць пошуку
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Ваш асноўны пароль не адпавядае адной або некалькім палітыкам арганізацыі. Для атрымання доступу да сховішча, вы павінны абнавіць яго. Працягваючы, вы выйдзіце з бягучага сеанса і вам неабходна будзе ўвайсці паўторна. Актыўныя сеансы на іншых прыладах могуць заставацца актыўнымі на працягу адной гадзіны.
diff --git a/src/App/Resources/AppResources.bg.resx b/src/App/Resources/AppResources.bg.resx
index d076a0900..e4997b40a 100644
--- a/src/App/Resources/AppResources.bg.resx
+++ b/src/App/Resources/AppResources.bg.resx
@@ -2495,8 +2495,8 @@ select Add TOTP to store the key safely
Получете подсказване за главната парола
-
- Вписване като {0}
+
+ Влизате като {0} в {1}
Това не сте Вие?
@@ -2609,6 +2609,21 @@ select Add TOTP to store the key safely
Няма елементи, които отговарят на търсенето
+
+ САЩ
+
+
+ ЕС
+
+
+ Собствен хостинг
+
+
+ Регион на данните
+
+
+ Регион
+
Вашата главна парола не отговаря на една или повече политики на организацията Ви. За да получите достъп до трезора, трябва да промените главната си парола сега. Това означава, че ще бъдете отписан(а) от текущата си сесия и ще трябва да се впишете отново. Активните сесии на други устройства може да продължат да бъдат активни още един час.
diff --git a/src/App/Resources/AppResources.bn.resx b/src/App/Resources/AppResources.bn.resx
index 974ad9da4..ee3bac41f 100644
--- a/src/App/Resources/AppResources.bn.resx
+++ b/src/App/Resources/AppResources.bn.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.bs.resx b/src/App/Resources/AppResources.bs.resx
index 6b009ce50..93fc3f66d 100644
--- a/src/App/Resources/AppResources.bs.resx
+++ b/src/App/Resources/AppResources.bs.resx
@@ -2494,8 +2494,8 @@ Skeniranje će biti izvršeno automatski.
Dobijte podsjetnik glavne lozinke
-
- Prijava kao {0}
+
+ Logging in as {0} on {1}
Nisi ti?
@@ -2608,6 +2608,21 @@ Skeniranje će biti izvršeno automatski.
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.ca.resx b/src/App/Resources/AppResources.ca.resx
index 2fa001fdf..cee3bf0fe 100644
--- a/src/App/Resources/AppResources.ca.resx
+++ b/src/App/Resources/AppResources.ca.resx
@@ -2495,8 +2495,8 @@ Voleu canviar a aquest compte?
Obteniu la pista de la contrasenya mestra
-
- Connectat com {0}
+
+ Inici de sessió com a {0} a {1}
No sou vosaltres?
@@ -2609,6 +2609,21 @@ Voleu canviar a aquest compte?
No hi ha elements que coincidisquen amb la cerca
+
+ EUA
+
+
+ UE
+
+
+ Autoallotjat
+
+
+ Regió de dades
+
+
+ Regió
+
La vostra contrasenya mestra no compleix una o més de les polítiques de l'organització. Per accedir a la caixa forta, heu d'actualitzar-la ara. Si continueu, es tancarà la sessió actual i us demanarà que torneu a iniciar-la. Les sessions en altres dispositius poden continuar romanent actives fins a una hora.
diff --git a/src/App/Resources/AppResources.cs.resx b/src/App/Resources/AppResources.cs.resx
index 84db859cd..85f2e234e 100644
--- a/src/App/Resources/AppResources.cs.resx
+++ b/src/App/Resources/AppResources.cs.resx
@@ -2494,8 +2494,8 @@ Chcete se přepnout na tento účet?
Získat nápovědu pro hlavní heslo
-
- Přihlášování jako {0}
+
+ Přihlašování jako {0} na {1}
Nejste to Vy?
@@ -2608,6 +2608,21 @@ Chcete se přepnout na tento účet?
Neexistují žádné položky, které by odpovídaly hledání
+
+ US
+
+
+ EU
+
+
+ Vlastní hosting
+
+
+ Datový region
+
+
+ Region
+
Vaše hlavní heslo nesplňuje jednu nebo více zásad Vaší organizace. Pro přístup k trezoru musíte nyní aktualizovat své hlavní heslo. Pokračování Vás odhlásí z Vaší aktuální relace a bude nutné se přihlásit. Aktivní relace na jiných zařízeních mohou zůstat aktivní až po dobu jedné hodiny.
diff --git a/src/App/Resources/AppResources.cy.resx b/src/App/Resources/AppResources.cy.resx
index 72e8252f8..ceaffdd00 100644
--- a/src/App/Resources/AppResources.cy.resx
+++ b/src/App/Resources/AppResources.cy.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.da.resx b/src/App/Resources/AppResources.da.resx
index df3b073bf..2f15be698 100644
--- a/src/App/Resources/AppResources.da.resx
+++ b/src/App/Resources/AppResources.da.resx
@@ -2495,8 +2495,8 @@ Vil du skifte til denne konto?
Få hovedadgangskodetip
-
- Logger ind som {0}
+
+ Logger ind som {0} på {1}
Ikke dig?
@@ -2609,6 +2609,21 @@ Vil du skifte til denne konto?
Ingen emner matcher søgningen
+
+ USA
+
+
+ EU
+
+
+ Selv-hostet
+
+
+ Dataregion
+
+
+ Region
+
Din hovedadgangskode overholder ikke én eller flere organisationspolitikker. For at få adgang til boksen skal hovedadgangskode opdateres nu. Fortsættes, logges du ud af den nuværende session og vil skulle logger ind igen. Aktive sessioner på andre enheder kan forblive aktive i op til én time.
diff --git a/src/App/Resources/AppResources.de.resx b/src/App/Resources/AppResources.de.resx
index f8868282a..230411b84 100644
--- a/src/App/Resources/AppResources.de.resx
+++ b/src/App/Resources/AppResources.de.resx
@@ -2494,8 +2494,8 @@ Möchtest du zu diesem Konto wechseln?
Hinweis zum Master-Passwort erhalten
-
- Anmelden als {0}
+
+ Anmelden als {0} auf {1}
Nicht du?
@@ -2608,6 +2608,21 @@ Möchtest du zu diesem Konto wechseln?
Es gibt keine Einträge, die mit der Suche übereinstimmen
+
+ US
+
+
+ EU
+
+
+ Selbst gehostet
+
+
+ Datenregion
+
+
+ Region
+
Dein Master-Passwort entspricht nicht einer oder mehreren Richtlinien deiner Organisation. Um auf den Tresor zugreifen zu können, musst du dein Master-Passwort jetzt aktualisieren. Wenn du fortfährst, wirst du von deiner aktuellen Sitzung abgemeldet und musst dich erneut anmelden. Aktive Sitzungen auf anderen Geräten können noch bis zu einer Stunde lang aktiv bleiben.
diff --git a/src/App/Resources/AppResources.el.resx b/src/App/Resources/AppResources.el.resx
index 67e71da38..b18910bf0 100644
--- a/src/App/Resources/AppResources.el.resx
+++ b/src/App/Resources/AppResources.el.resx
@@ -2495,8 +2495,8 @@
Λάβετε υπόδειξη κύριου κωδικού
-
- Σύνδεση ως {0}
+
+ Logging in as {0} on {1}
Δεν είστε εσείς;
@@ -2609,6 +2609,21 @@
Δεν υπάρχουν στοιχεία που να ταιριάζουν με την αναζήτηση
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Ο κύριος κωδικός πρόσβασής σας δεν πληροί μία ή περισσότερες πολιτικές του οργανισμού σας. Για να αποκτήσετε πρόσβαση στο Vault σας, πρέπει να ενημερώσετε τον κύριο κωδικό πρόσβασής σας τώρα. Η διαδικασία θα σας αποσυνδέσει από την τρέχουσα συνεδρία σας, απαιτώντας από εσάς να συνδεθείτε ξανά. Οι ενεργές συνεδρίες σε άλλες συσκευές ενδέχεται να συνεχίσουν να είναι ενεργές εώς και μία ώρα.
diff --git a/src/App/Resources/AppResources.en-GB.resx b/src/App/Resources/AppResources.en-GB.resx
index 81e104f94..3a07f6b16 100644
--- a/src/App/Resources/AppResources.en-GB.resx
+++ b/src/App/Resources/AppResources.en-GB.resx
@@ -2495,8 +2495,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2609,6 +2609,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.en-IN.resx b/src/App/Resources/AppResources.en-IN.resx
index 24e9fe529..85718ac95 100644
--- a/src/App/Resources/AppResources.en-IN.resx
+++ b/src/App/Resources/AppResources.en-IN.resx
@@ -2509,8 +2509,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2623,6 +2623,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.es.resx b/src/App/Resources/AppResources.es.resx
index 54c8f1e5a..6ed1776db 100644
--- a/src/App/Resources/AppResources.es.resx
+++ b/src/App/Resources/AppResources.es.resx
@@ -2496,8 +2496,8 @@ seleccione Agregar TOTP para almacenar la clave de forma segura
Obtener pista de contraseña maestra
-
- Iniciando sesión como {0}
+
+ Iniciando sesión como {0} en {1}
¿No eres tú?
@@ -2610,6 +2610,21 @@ seleccione Agregar TOTP para almacenar la clave de forma segura
No hay elementos que coincidan con la búsqueda
+
+ EE.UU.
+
+
+ Unión Europea
+
+
+ Autoalojado
+
+
+ Región de datos
+
+
+ Región
+
Su contraseña maestra no cumple con una o más de las políticas de su organización. Para acceder a la caja fuerte, debe actualizar su contraseña maestra ahora. Proceder le desconectará de su sesión actual, requiriendo que vuelva a iniciar sesión. Las sesiones activas en otros dispositivos pueden seguir estando activas durante hasta una hora.
diff --git a/src/App/Resources/AppResources.et.resx b/src/App/Resources/AppResources.et.resx
index aeb25933c..5a2df7bd6 100644
--- a/src/App/Resources/AppResources.et.resx
+++ b/src/App/Resources/AppResources.et.resx
@@ -2495,8 +2495,8 @@ Soovid selle konto peale lülituda?
Tuleta ülemparooli vihjega meelde
-
- Sisselogimas kui {0}
+
+ Logging in as {0} on {1}
Pole sina?
@@ -2609,6 +2609,21 @@ Soovid selle konto peale lülituda?
Otsingusõnale ei vasta kirjeid
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Sinu ülemparool ei vasta ühele või rohkemale organisatsiooni poolt seatud poliitikale. Hoidlale ligipääsemiseks pead oma ülemaprooli uuendama. Jätkamisel logitakse sind praegusest sessioonist välja, mistõttu pead uuesti sisse logima. Teistes seadmetes olevad aktiivsed sessioonid aeguvad umbes ühe tunni jooksul.
diff --git a/src/App/Resources/AppResources.eu.resx b/src/App/Resources/AppResources.eu.resx
index 7c483ebdc..ca021a83a 100644
--- a/src/App/Resources/AppResources.eu.resx
+++ b/src/App/Resources/AppResources.eu.resx
@@ -2494,8 +2494,8 @@ Kontu honetara aldatu nahi duzu?
Jaso pasahitz nagusiaren pista
-
- {0} bezala hasi saioa
+
+ Logging in as {0} on {1}
Ez zara zu?
@@ -2608,6 +2608,21 @@ Kontu honetara aldatu nahi duzu?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.fa.resx b/src/App/Resources/AppResources.fa.resx
index 6ac80f876..cbd510f3a 100644
--- a/src/App/Resources/AppResources.fa.resx
+++ b/src/App/Resources/AppResources.fa.resx
@@ -2496,8 +2496,8 @@
دریافت یادآور کلمه عبور اصلی
-
- در حال ورود به عنوان {0}
+
+ Logging in as {0} on {1}
شما نیستید؟
@@ -2610,6 +2610,21 @@
هیچ موردی وجود ندارد که با جستجو مطابقت داشته باشد
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
کلمه عبور اصلی شما با یک یا چند سیاست سازمانتان مطابقت ندارد. برای دسترسی به گاوصندوق، باید همین حالا کلمه عبور اصلی خود را بهروز کنید. در صورت ادامه، شما از نشست فعلی خود خارج میشوید و باید دوباره وارد سیستم شوید. نشست فعال در دستگاه های دیگر ممکن است تا یک ساعت همچنان فعال باقی بمانند.
diff --git a/src/App/Resources/AppResources.fi.resx b/src/App/Resources/AppResources.fi.resx
index c02d56df2..a91f21234 100644
--- a/src/App/Resources/AppResources.fi.resx
+++ b/src/App/Resources/AppResources.fi.resx
@@ -1492,7 +1492,7 @@ Koodi luetaan automaattisesti.
Aseta PIN-koodi Bitwardenin avaukselle. PIN-asetukset tyhjentyvät, jos kirjaudut kokonaan ulos sovelluksesta.
- Kirjautui tunnuksella {0} palvelimelle {1}.
+ Kirjautui palvelimelle {1} tunnuksella {0}.
ex: Logged in as user@example.com on bitwarden.com.
@@ -2496,8 +2496,8 @@ Haluatko vaihtaa tähän tiliin?
Pyydä pääsalasanan vihjettä
-
- Kirjaudutaan tunnuksella {0}
+
+ Kirjaudutaan palvelimelle {1} tunnuksella {0}
Etkö se ollut sinä?
@@ -2610,6 +2610,21 @@ Haluatko vaihtaa tähän tiliin?
Hakua vastaavia kohteita ei ole
+
+ US
+
+
+ EU
+
+
+ Itse ylläpidetty
+
+
+ Tietoalue
+
+
+ Alue
+
Pääsalasanasi ei täytä yhden tai useamman organisaatiokäytännön vaatimuksia ja holvin käyttämiseksi sinun on vaihdettava se nyt. Tämä uloskirjaa kaikki nykyiset istunnot pakottaen uudelleenkirjautumisen. Muiden laitteiden aktiiviset istunnot saattavat toimia vielä tunnin ajan.
diff --git a/src/App/Resources/AppResources.fil.resx b/src/App/Resources/AppResources.fil.resx
index a4730c2fd..b86e5ae25 100644
--- a/src/App/Resources/AppResources.fil.resx
+++ b/src/App/Resources/AppResources.fil.resx
@@ -2496,8 +2496,8 @@ Gusto mo bang pumunta sa account na ito?
Kunin ang palatandaan ng master password
-
- Nagla-log in bilang si {0}
+
+ Logging in as {0} on {1}
Hindi ikaw?
@@ -2610,6 +2610,21 @@ Gusto mo bang pumunta sa account na ito?
Walang mga item na tumutugma sa paghahanap
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.fr.resx b/src/App/Resources/AppResources.fr.resx
index 519235ea5..8be56944a 100644
--- a/src/App/Resources/AppResources.fr.resx
+++ b/src/App/Resources/AppResources.fr.resx
@@ -2496,8 +2496,8 @@ Voulez-vous basculer vers ce compte ?
Obtenir l'indice du mot de passe principal
-
- Connecté en tant que {0}
+
+ Connexion en tant que {0} sur {1}
Ce n'est pas vous ?
@@ -2610,6 +2610,21 @@ Voulez-vous basculer vers ce compte ?
Il n'y a pas d'éléments qui correspondent à la recherche
+
+ US
+
+
+ EU
+
+
+ Auto-hébergé
+
+
+ Région des données
+
+
+ Région
+
Votre mot de passe principal ne répond pas aux exigences de politique de sécurité de cette organisation. Pour accéder au coffre, vous devez mettre à jour votre mot de passe principal dès maintenant. En poursuivant, vous serez déconnecté de votre session actuelle et vous devrez vous reconnecter. Les sessions actives sur d'autres appareils peuver rester actives pendant encore une heure.
diff --git a/src/App/Resources/AppResources.gl.resx b/src/App/Resources/AppResources.gl.resx
index 72e8252f8..ceaffdd00 100644
--- a/src/App/Resources/AppResources.gl.resx
+++ b/src/App/Resources/AppResources.gl.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.he.resx b/src/App/Resources/AppResources.he.resx
index 205bad518..2df5ba7fb 100644
--- a/src/App/Resources/AppResources.he.resx
+++ b/src/App/Resources/AppResources.he.resx
@@ -2498,8 +2498,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2612,6 +2612,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.hi.resx b/src/App/Resources/AppResources.hi.resx
index 1c0e9face..1b3a33030 100644
--- a/src/App/Resources/AppResources.hi.resx
+++ b/src/App/Resources/AppResources.hi.resx
@@ -168,7 +168,7 @@
Delete an entity (verb).
- मिटाया जा रहा हैं...
+ मिटा रहे है...
Message shown when interacting with the server
@@ -261,19 +261,19 @@
The button text that allows user to launch the website to their web browser.
- लॉग इन करें
+ लॉगइन करें
The login button text (verb).
- लॉग इन
+ लॉगइन करें
Title for login page. (noun)
- लॉग आउट करें
+ लॉगआउट करें
The log out button text (verb).
- पक्का लॉग आउट करें?
+ पक्का लॉगआउट करें?
खाता हटाएं
@@ -292,7 +292,7 @@
Label for a master password.
- और
+ ज़्यादा
Text to define that there are more options things to see.
@@ -330,7 +330,7 @@
ले जाएं
- सेव हो रहा है...
+ सेव कर रहे है...
Message shown when interacting with the server
@@ -394,7 +394,7 @@
देखें
- हमारी वेबसाइट पर जाएं
+ हमारे वेबसाइट पर जाएं
मदद लेने, खबर लेने, हमें ईमेल करने, और/या बिटवार्डन के इस्तेमाल के बारे में ज़्यादा जानने के लिए हमारी वेबसाइट पर जाएं।
@@ -410,7 +410,7 @@
खाता
- आपका नया खाता बनाया गया! अब आप लॉग इन कर सकते हैं।
+ आपका नया खाता बनाया गया! अब लॉगइन कर सकते हैं।
चीज़ जोड़ें
@@ -419,40 +419,40 @@
ऐप एक्सटेंशन
- Use the bitwarden accessibility service to auto-fill your logins across apps and the web.
+ दूसरे ऐप और वेबसाइट पर अपनेआप लॉगइन भरने के लिए बिटवार्डन सुलभता सेवा इस्तेमाल करें।
- भरण सेवा
+ अपनेआप-भर सेवा
अस्पष्ट अक्षर से बचें
- bitwarden App Extension
+ बिटवार्डन ऐप एक्सटेंशन
- अपने तिजोरी में नए आइटम डालने का सबसे सरल तरीका है Bitwarden ऐप विस्तारण। Bitwarden ऐप विस्तरण के उपयोग संबंधी जानकारी पाने के लिए "सेटिंग्स" में जाएं।
+ बिटवार्डन ऐप एक्सटेंशन अपने तिजोरी में नए चीज़ डालने का सबसे आसात तरीका है। बिटवार्डन ऐप एक्सटेंशन के इस्तेमाल से जुड़ी जानकारी लेने के लिए "सेटिंग" में जाएं।
- Use bitwarden in Safari and other apps to auto-fill your logins.
+ सफारी और दूसरे ऐप में अपने लॉगइन अपनेआप भरने के लिए बिटवार्डन इस्तेमाल करें।
- bitwarden Auto-fill Service
+ बिटवार्डन अपनेआप-भर सेवा
- Use the bitwarden accessibility service to auto-fill your logins.
+ अपने लॉगइन अपनेआप भरने के लिए बिटवार्डन सुलभता सेवा इस्तेमाल करें।
ईमेल बदलें
- आप bitwarden.com वेब तिजोरी पर आपका ईमेल पता परिवर्तित कर सकते हैं। आप अब वेबसाइट पर जाएँ करने के लिए चाहते हैं?
+ Bitwarden.com वेब तिजोरी पर ईमेल पता बदला जा सकता है। इस वेबसाइट पर अभी जाएं?
- मास्टर पासवर्ड बदलें
+ मुख्य पासवर्ड बदलें
- मास्टर पासवर्ड Bitwarden के वेब-तिजोरी पर जाकर बदला जा सकता है। क्या आप वहां जाना चाहते हैं?
+ मुख्य पासवर्ड बिटवार्डन वेब तिजोरी पर जाकर बदला जा सकता है। वेबसाइट पर अभी जाएं?
बंद करें
@@ -461,20 +461,20 @@
जारी रखें
- खाता बनाएँ
+ खाता बनाएं
- खाता बना रहें है...
+ खाता बना रहे है...
Message shown when interacting with the server
- आइटम संपादित करें
+ चीज़ बदलाव करें
- स्वतः सिंक चालू करें।
+ अपनेआप-सिंक की अनुमति दें
- अपने मास्टर पासवर्ड संकेत प्राप्त करने के लिए अपने खाते का ईमेल पता दर्ज करें।
+ मुख्य पासवर्ड इशारा लेने के लिए अपने खाते का ईमेल पता डालें।
ऐप विस्तारण को फिर चालू करें
@@ -585,7 +585,7 @@
मास्टर पासवर्ड संकेत आपको भूल जाने की अवस्था में पासवर्ड को याद करने में सहायता करता है।
- Master password must be at least {0} characters long.
+ मुख्य पासवर्ड कम-से-कम {0} अक्षर लंबा होना चाहिए।
कम से कम अंक
@@ -809,7 +809,7 @@
You are searching for an auto-fill login for "{0}".
- Learn about organizations
+ संगठन के बारे में जानें
"{0}" ऐप नहीं खोल सकता।
@@ -850,7 +850,7 @@
दो-चरण लॉगिन विकल्प
- Use another two-step login method
+ कोई दूसरा दो-कदम लॉगइन तरीका इस्तेमाल करें
Could not send verification email. Try again.
@@ -1211,7 +1211,7 @@ Scanning will happen automatically.
छुपा हुआ
- Linked
+ जुड़ा हुआ
वाक्य
@@ -1286,7 +1286,7 @@ Scanning will happen automatically.
ex. Date this password was updated
- Updated
+ अपडेट किया गया
ex. Date this item was updated
@@ -1576,7 +1576,7 @@ Scanning will happen automatically.
The color black
- Nord
+ नॉर्ड
'Nord' is the name of a specific color scheme. It should not be translated.
@@ -1872,7 +1872,7 @@ Scanning will happen automatically.
An organization policy is affecting your ownership options.
- Send
+ सेंड
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -1880,7 +1880,7 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Sends
+ सेंड्स
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -1888,10 +1888,10 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Text
+ टेक्सट
- Text
+ टेक्सट
The text you want to send.
@@ -1901,7 +1901,7 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- File
+ फाइल
The file you want to send.
@@ -2031,22 +2031,22 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- 1 day
+ 1 दिन
- 2 days
+ 2 दिन
- 3 days
+ 3 दिन
- 7 days
+ 7 दिन
- 30 days
+ 30 दिन
- Custom
+ कस्टम
Share this Send upon save
@@ -2163,7 +2163,7 @@ Scanning will happen automatically.
Unlocked
- Locked
+ बंद
Logged out
@@ -2205,7 +2205,7 @@ Scanning will happen automatically.
Send code
- Sending
+ भेज रहे
Copy Send link on save
@@ -2268,7 +2268,7 @@ Scanning will happen automatically.
All vaults
- Vaults
+ तिजोरी
Vault: {0}
@@ -2277,7 +2277,7 @@ Scanning will happen automatically.
सब
- TOTP
+ टीओटीपी
Verification codes
@@ -2341,10 +2341,10 @@ select Add TOTP to store the key safely
IP address
- Time
+ समय
- Near
+ पास
Confirm login
@@ -2368,120 +2368,120 @@ select Add TOTP to store the key safely
लॉगइन मांग माने
- Use this device to approve login requests made from other devices.
+ इस डिवाइस का इस्तेमाल दूसरे डिवाइस के लॉगइन मांगे मानने के लिए करें।
सूचना देने दें
- Receive push notifications for new login requests
+ नए लॉगइन मांग के लिए पुश सूचना लें
- No thanks
+ ना, शुक्रिया
- Confirm login attempt for {0}
+ {0} के लिए लॉगइन कोशिश पक्का करें
- All notifications
+ सारे सूचनाएं
- Password type
+ पासवर्ड प्रकार
- What would you like to generate?
+ क्या बनाएं?
- Username type
+ यूज़रनाम प्रकार
- Plus addressed email
+ प्लस पता किया गया ईमेल
- Catch-all email
+ सब-पकड़ें ईमेल
- Forwarded email alias
+ ईमेल नकलीनाम फॉरवर्ड किया गया
- Random word
+ बेतरतीब शब्द
- Email (required)
+ ईमेल (ज़रूरी)
- Domain name (required)
+ डोमेन नाम (ज़रूरी)
- API key (required)
+ एपीआई चाबी (ज़रूरी)
- Service
+ सेवा
- AnonAddy
+ एननऐडी
"AnonAddy" is the product name and should not be translated.
- Firefox Relay
+ फायरफॉक्स रीले
"Firefox Relay" is the product name and should not be translated.
- SimpleLogin
+ सिंपललॉगइन
"SimpleLogin" is the product name and should not be translated.
- DuckDuckGo
+ डकडकगो
"DuckDuckGo" is the product name and should not be translated.
- Fastmail
+ फास्टमेल
"Fastmail" is the product name and should not be translated.
- API access token
+ एपीआई एक्सेस टोकन
- Are you sure you want to overwrite the current username?
+ चालू यूज़रनाम को पक्का ओवरराइट करें?
- Generate username
+ यूज़रनाम बनाएं
- Email Type
+ ईमेल टाइप
- Website (required)
+ वेबसाइट (ज़रूरी)
- Unknown {0} error occurred.
+ अनजान {0} गड़बड़ हुई।
- Use your email provider's subaddress capabilities
+ अपने ईमेल प्रदाता की उपपता ताकत इस्तेमाल करें
- Use your domain's configured catch-all inbox.
+ अपने डोमेन का सब-पकड़ें इनबॉक्स इस्तेमाल करें।
- Generate an email alias with an external forwarding service.
+ बाहरी फॉरवर्ड सेवा से ईमेल नकलीनाम बनाएं।
- Random
+ बेतरतीब
- Connect to Watch
+ घड़ी से जुड़े
- Accessibility Service Disclosure
+ सुलभता सेवा प्रकटीकरण
Bitwarden uses the Accessibility Service to search for login fields in apps and websites, then establish the appropriate field IDs for entering a username & password when a match for the app or site is found. We do not store any of the information presented to us by the service, nor do we make any attempt to control any on-screen elements beyond text entry of credentials.
- Accept
+ मानें
- Decline
+ नकारें
Login request has already expired.
@@ -2497,8 +2497,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2534,7 +2534,7 @@ Do you want to switch to this account?
लंबित लॉगइन मांगे
- सारे मांग नकारे
+ सारे मांग नकारें
सारे लंबित लॉगइन मांग पक्का नकारें?
@@ -2564,7 +2564,7 @@ Do you want to switch to this account?
ज़रूरी
- आप अपना मुख्य पासवर्ड भूलने के बाद वापस नहीं ले सकते। {0} अक्षर कम-से-कम।
+ मुख्य पासवर्ड भूलने के बाद रिकवर नहीं कर सकते। {0} अक्षर कम-से-कम।
कमज़ोर मुख्य पासवर्ड
@@ -2611,6 +2611,21 @@ Do you want to switch to this account?
कोई भी चीज़ खोज शब्द से मेल नहीं खाता
+
+ अमेरिकी संयुक्त राज्य
+
+
+ यूरोपीय संघ
+
+
+ खुद-होस्ट
+
+
+ डाटा इलाका
+
+
+ इलाका
+
आपका मुख्य पासवर्ड आपके संगठन के एक या उससे ज़्यादा नीति को नहीं मानता। तिजोरी एक्सेस करने के लिए आपको अपना मुख्य पासवर्ड अभी बदलना होगा। ये करने से आप अपने चालू सत्र से लॉग आउट हो जाएंगे, जिसके वजह से आपको वापस लॉग इन करना पड़ेगा। दूसरे डिवाइसों पर चालू सत्र एक घंटे तक सक्रिय रह सकते हैं।
diff --git a/src/App/Resources/AppResources.hr.resx b/src/App/Resources/AppResources.hr.resx
index 6fdc1ed0c..55f28f1bf 100644
--- a/src/App/Resources/AppResources.hr.resx
+++ b/src/App/Resources/AppResources.hr.resx
@@ -2493,8 +2493,8 @@
Slanje podsjetnika glavne lozinke
-
- Prijava kao {0}
+
+ Logging in as {0} on {1}
Nisi ti?
@@ -2607,6 +2607,21 @@
Nema stavki koje odgovaraju pretrazi
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.hu.resx b/src/App/Resources/AppResources.hu.resx
index c6ae95517..12ad6d78f 100644
--- a/src/App/Resources/AppResources.hu.resx
+++ b/src/App/Resources/AppResources.hu.resx
@@ -2494,8 +2494,8 @@ Szeretnénk átváltani erre a fiókra?
Mesterjelszó emlékeztető kérése
-
- Bejelentkezve mint {0}
+
+ Bejelentkezve mint {0} :: {1}.
Ez tévedés?
@@ -2608,6 +2608,21 @@ Szeretnénk átváltani erre a fiókra?
Nincsenek a keresésnek megfelelő elemek.
+
+ US
+
+
+ EU
+
+
+ Saját kiszolgáló
+
+
+ Adatrégió
+
+
+ Régió
+
A mesterjelszó nem felel meg egy vagy több szervezeti szabályzatnak. A széf eléréséhez frissíteni kell a meszerjelszót. A továbblépés kijelentkeztet az aktuális munkamenetből és újra be kell jelentkezni. A többi eszközön lévő aktív munkamenetek akár egy óráig is aktívak maradhatnak.
diff --git a/src/App/Resources/AppResources.id.resx b/src/App/Resources/AppResources.id.resx
index 5fd1e08d5..5d51b1b3d 100644
--- a/src/App/Resources/AppResources.id.resx
+++ b/src/App/Resources/AppResources.id.resx
@@ -2495,8 +2495,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2609,6 +2609,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.it.resx b/src/App/Resources/AppResources.it.resx
index 98dbfc4b1..978257c7a 100644
--- a/src/App/Resources/AppResources.it.resx
+++ b/src/App/Resources/AppResources.it.resx
@@ -2495,8 +2495,8 @@ Vuoi passare a questo account?
Ottieni suggerimento per la password principale
-
- Accedendo come
+
+ Accedendo come {0} su {1}
Non sei tu?
@@ -2609,6 +2609,21 @@ Vuoi passare a questo account?
Nessun elemento corrisponde alla ricerca
+
+ US
+
+
+ UE
+
+
+ Self-hosted
+
+
+ Area dati
+
+
+ Regione
+
La tua password principale non soddisfa uno o più politiche della tua organizzazione. Per accedere alla cassaforte, aggiornala ora. Procedere ti farà uscire dalla sessione corrente, richiedendoti di accedere di nuovo. Le sessioni attive su altri dispositivi potrebbero continuare a rimanere attive per un massimo di un'ora.
diff --git a/src/App/Resources/AppResources.ja.resx b/src/App/Resources/AppResources.ja.resx
index fbb8682c9..03e41e2bb 100644
--- a/src/App/Resources/AppResources.ja.resx
+++ b/src/App/Resources/AppResources.ja.resx
@@ -2495,8 +2495,8 @@
マスターパスワードのヒントを取得する
-
- {0} としてログイン
+
+ {1} で {0} としてログイン
あなたではないですか?
@@ -2609,6 +2609,21 @@
検索に一致するアイテムはありません
+
+ 米国
+
+
+ EU
+
+
+ 自己ホスト型
+
+
+ データのリージョン
+
+
+ リージョン
+
マスターパスワードが組織のポリシーに適合していません。保管庫にアクセスするには、今すぐマスターパスワードを更新しなければなりません。続行すると現在のセッションからログアウトし、再度ログインする必要があります。 他のデバイス上のアクティブなセッションは、最大1時間アクティブであり続けることがあります。
diff --git a/src/App/Resources/AppResources.ka.resx b/src/App/Resources/AppResources.ka.resx
index 72e8252f8..ceaffdd00 100644
--- a/src/App/Resources/AppResources.ka.resx
+++ b/src/App/Resources/AppResources.ka.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.kn.resx b/src/App/Resources/AppResources.kn.resx
index f5e93db92..40439a259 100644
--- a/src/App/Resources/AppResources.kn.resx
+++ b/src/App/Resources/AppResources.kn.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.ko.resx b/src/App/Resources/AppResources.ko.resx
index 22a07978c..a4685a060 100644
--- a/src/App/Resources/AppResources.ko.resx
+++ b/src/App/Resources/AppResources.ko.resx
@@ -2495,8 +2495,8 @@ Do you want to switch to this account?
마스터 비밀번호 힌트 얻기
-
- {0}(으)로 로그인 중
+
+ Logging in as {0} on {1}
본인이 아닌가요?
@@ -2609,6 +2609,21 @@ Do you want to switch to this account?
검색어와 일치하는 항목이 없습니다
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.lt.resx b/src/App/Resources/AppResources.lt.resx
index 90484a8f2..66d87fe99 100644
--- a/src/App/Resources/AppResources.lt.resx
+++ b/src/App/Resources/AppResources.lt.resx
@@ -2496,8 +2496,8 @@ Ar norite pereiti prie šios paskyros?
Gauti pagrindinio slaptažodžio užuominą
-
- Prisijungiama kaip {0}
+
+ Logging in as {0} on {1}
Ne jūs?
@@ -2610,6 +2610,21 @@ Ar norite pereiti prie šios paskyros?
Elementų, atitinkančių paiešką, nėra
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Jūsų pagrindinis slaptažodis neatitinka vieno ar kelių organizacijos slaptažodžiui keliamų reikalavimų. Norėdami prisijungti prie saugyklos, jūs turite atnaujinti savo pagrindinį slaptažodį. Jeigu nuspręsite tęsti, jūs būsite atjungti nuo dabartinės sesijos ir jums reikės vėl prisijungti. Visos aktyvios sesijos kituose įrenginiuose gali išlikti aktyvios iki vienos valandos.
diff --git a/src/App/Resources/AppResources.lv.resx b/src/App/Resources/AppResources.lv.resx
index 117e26f68..d95625461 100644
--- a/src/App/Resources/AppResources.lv.resx
+++ b/src/App/Resources/AppResources.lv.resx
@@ -2495,8 +2495,8 @@ Vai pārslēgties uz šo kontu?
Saņemt galvenās paroles norādi
-
- Piesakās kā {0}
+
+ Piesakās {1} kā {0}
Tas neesi Tu?
@@ -2609,6 +2609,21 @@ Vai pārslēgties uz šo kontu?
Nav vienumu, kas atbilstu meklējumam
+
+ ASV
+
+
+ ES
+
+
+ Pašizvietots
+
+
+ Datu apgabals
+
+
+ Apgabals
+
Galvenā parole neatbilst vienam vai vairākiem apvienības nosacījumiem. Ir jāatjaunina galvenā parole, lai varētu piekļūt glabātavai. Turpinot notiks atteikšanās no pašreizējās sesijas, un būs nepieciešams pieteikties no jauna. Citās ierīcēs esošās sesijas var turpināt darboties līdz vienai stundai.
diff --git a/src/App/Resources/AppResources.ml.resx b/src/App/Resources/AppResources.ml.resx
index ce9b3872b..c5c348259 100644
--- a/src/App/Resources/AppResources.ml.resx
+++ b/src/App/Resources/AppResources.ml.resx
@@ -2495,8 +2495,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2609,6 +2609,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.my.resx b/src/App/Resources/AppResources.my.resx
index 72e8252f8..ceaffdd00 100644
--- a/src/App/Resources/AppResources.my.resx
+++ b/src/App/Resources/AppResources.my.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.nb.resx b/src/App/Resources/AppResources.nb.resx
index eb75838bc..04b50f002 100644
--- a/src/App/Resources/AppResources.nb.resx
+++ b/src/App/Resources/AppResources.nb.resx
@@ -2496,8 +2496,8 @@ Vil du bytte til denne kontoen?
Få et hint om hovedpassordet
-
- Logger inn som {0}
+
+ Logging in as {0} on {1}
Ikke du?
@@ -2610,10 +2610,25 @@ Vil du bytte til denne kontoen?
Det er ingen elementer som samsvarer med søket
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
- Current master password
+ Nåværende hovedpassord
diff --git a/src/App/Resources/AppResources.ne.resx b/src/App/Resources/AppResources.ne.resx
index 72e8252f8..ceaffdd00 100644
--- a/src/App/Resources/AppResources.ne.resx
+++ b/src/App/Resources/AppResources.ne.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.nl.resx b/src/App/Resources/AppResources.nl.resx
index 66486e54b..5becc90b9 100644
--- a/src/App/Resources/AppResources.nl.resx
+++ b/src/App/Resources/AppResources.nl.resx
@@ -2495,8 +2495,8 @@ Wilt u naar dit account wisselen?
Hoofdwachtwoordhint krijgen
-
- Inloggen als {0}
+
+ Inloggen als {0} op {1}
Ben jij dit niet?
@@ -2609,6 +2609,21 @@ Wilt u naar dit account wisselen?
Er zijn geen items die overeenkomen met de zoekopdracht
+
+ US
+
+
+ EU
+
+
+ Zelfgehost
+
+
+ Dataregio
+
+
+ Regio
+
Je hoofdwachtwoord voldoet niet aan en of meerdere oganisatiebeleidsonderdelen. Om toegang te krijgen tot de kluis, moet je je hoofdwachtwoord nu bijwerken. Doorgaan zal je huidige sessie uitloggen, waarna je opnieuw moet inloggen. Actieve sessies op andere apparaten blijven mogelijk nog een uur actief.
diff --git a/src/App/Resources/AppResources.nn.resx b/src/App/Resources/AppResources.nn.resx
index 5e286790b..a6195852b 100644
--- a/src/App/Resources/AppResources.nn.resx
+++ b/src/App/Resources/AppResources.nn.resx
@@ -425,7 +425,7 @@
Sjølvutfyllingsteneste
- Avoid ambiguous characters
+ Unngå forvekslingsbare teikn
Bitwarden App-utviding
@@ -684,7 +684,7 @@
Oppføringa er retta.
- Submitting...
+ Sender inn...
Message shown when interacting with the server
@@ -811,7 +811,7 @@
Lær om samskipnader
- Cannot open the app "{0}".
+ Kan ikkje opne appen "{0}".
Message shown when trying to launch an app that does not exist on the user's device.
@@ -834,7 +834,7 @@
This account has two-step login set up, however, none of the configured two-step providers are supported on this device. Please use a supported device and/or add additional providers that are better supported across devices (such as an authenticator app).
- Recovery code
+ Gjenopprettingskode
For 2FA
@@ -842,11 +842,11 @@
Remember my two-step login
- Send verification code email again
+ Send e-post om stadfestingskode på nytt
For 2FA
- Two-step login options
+ Alternativ for totrinnsinnlogging
Use another two-step login method
@@ -863,17 +863,17 @@
To continue, hold your YubiKey NEO against the back of the device or insert your YubiKey into your device's USB port, then touch its button.
- YubiKey security key
+ YubiKey sikkerheitsnøkkel
"YubiKey" is the product name and should not be translated.
- Add new attachment
+ Legg til nytt vedlegg
- Attachments
+ Vedlegg
- Unable to download file.
+ Kunne ikkje laste ned fila.
Eininga di kan ikkje opna denne filtypen.
@@ -900,8 +900,8 @@
Kan ikkje lesa autentiseringsnykel.
- Point your camera at the QR Code.
-Scanning will happen automatically.
+ Peik kameraet ditt mot QR-koden.
+Skanning skjer automatisk.
Skann QR-kode
@@ -919,7 +919,7 @@ Scanning will happen automatically.
If a login has an authenticator key, copy the TOTP verification code to your clip-board when you auto-fill the login.
- Copy TOTP automatically
+ Kopier TOTP-en automatisk
Ei Premium-tinging er påkravd for å bruka denne funksjonen.
@@ -974,7 +974,7 @@ Scanning will happen automatically.
Validation error when something is not formatted correctly, such as a URL or email address.
- Identity server URL
+ URL for identitetstenar
"Identity" refers to an identity server. See more context here https://en.wikipedia.org/wiki/Identity_management
@@ -1056,10 +1056,10 @@ Scanning will happen automatically.
Dr.
- Expiration month
+ Utlaupsmånad
- Expiration year
+ Utlaupsår
Februar
@@ -1083,7 +1083,7 @@ Scanning will happen automatically.
Fullt namn
- License number
+ Førarkortnummer
Mars
@@ -1137,10 +1137,10 @@ Scanning will happen automatically.
Adresse
- Expiration
+ Utlaup
- Show website icons
+ Vis nettstadikon
Show a recognizable image next to each login.
@@ -1186,13 +1186,13 @@ Scanning will happen automatically.
What Apple calls their facial recognition reader.
- Use Face ID to verify.
+ Bruk Face ID for å stadfeste.
- Use Face ID To Unlock
+ Bruk Face ID til å låse opp
- Verify Face ID
+ Stadfest Face ID
Windows Hello
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Loggar inn som {0} på {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Dataregion
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.or.resx b/src/App/Resources/AppResources.or.resx
index 72e8252f8..67d09670c 100644
--- a/src/App/Resources/AppResources.or.resx
+++ b/src/App/Resources/AppResources.or.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ ଆତ୍ମ-ଆୟୋଜିତ
+
+
+ ଡାଟା ଅଞ୍ଚଳ
+
+
+ ଅଞ୍ଚଳ
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.pl.resx b/src/App/Resources/AppResources.pl.resx
index c9943831f..1411206af 100644
--- a/src/App/Resources/AppResources.pl.resx
+++ b/src/App/Resources/AppResources.pl.resx
@@ -2495,8 +2495,8 @@ Czy chcesz przełączyć się na to konto?
Uzyskaj podpowiedź hasła głównego
-
- Logowanie jako {0}
+
+ Logowanie jako {0} do {1}
To nie Ty?
@@ -2609,6 +2609,21 @@ Czy chcesz przełączyć się na to konto?
Brak elementów, które pasują do wyszukiwania
+
+ US
+
+
+ UE
+
+
+ Samodzielnie hostowany
+
+
+ Region danych
+
+
+ Region
+
Twoje hasło główne nie spełnia jednej lub kilku zasad organizacji. Aby uzyskać dostęp do sejfu, musisz teraz zaktualizować swoje hasło główne. Kontynuacja wyloguje Cię z bieżącej sesji, wymagając zalogowania się ponownie. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie jedną godzinę.
diff --git a/src/App/Resources/AppResources.pt-BR.resx b/src/App/Resources/AppResources.pt-BR.resx
index 1ec9b51aa..0753a00a2 100644
--- a/src/App/Resources/AppResources.pt-BR.resx
+++ b/src/App/Resources/AppResources.pt-BR.resx
@@ -1756,7 +1756,7 @@ A leitura será feita automaticamente.
O desbloqueio biométrico desta conta está desabilitado com a verificação da senha mestra.
- Autofill biometric unlock for this account is disabled pending verification of master password.
+ O desbloqueio biométrico do autopreenchimento está desabilitado para esta conta por pendência de verificação da senha mestra.
Ativar sincronização ao atualizar
@@ -2496,8 +2496,8 @@ Você deseja mudar para esta conta?
Obter dica da senha mestra
-
- Entrando como {0}
+
+ Entrando como {0} em {1}
Não é você?
@@ -2610,6 +2610,21 @@ Você deseja mudar para esta conta?
Não há itens que correspondam à pesquisa
+
+ EUA
+
+
+ Europa
+
+
+ Auto-hospedado
+
+
+ Região de dados
+
+
+ Região
+
A sua senha mestra não atende a uma ou mais das políticas da sua organização. Para acessar o cofre, você deve atualizar a sua senha mestra agora. O processo desconectará você da sessão atual, exigindo que você inicie a sessão novamente. Sessões ativas em outros dispositivos podem continuar ativas por até uma hora.
diff --git a/src/App/Resources/AppResources.pt-PT.resx b/src/App/Resources/AppResources.pt-PT.resx
index ecf1231c5..0d0591836 100644
--- a/src/App/Resources/AppResources.pt-PT.resx
+++ b/src/App/Resources/AppResources.pt-PT.resx
@@ -296,11 +296,11 @@
Text to define that there are more options things to see.
- O meu Cofre
+ O meu cofre
The title for the vault page.
- Authenticator
+ Autenticador
Authenticator TOTP feature
@@ -327,7 +327,7 @@
Button text for a save operation (verb).
- Move
+ Mover
A guardar...
@@ -584,7 +584,7 @@
Uma dica da palavra-passe mestra pode ajudar a lembrar-se da sua palavra-passe se a esquecer.
- Master password must be at least {0} characters long.
+ A palavra-passe mestra deve ter pelo menos {0} caracteres.
Números mínimos
@@ -775,10 +775,10 @@
Ativado
- Off
+ Desligado
- On
+ Ligado
Estado
@@ -1483,7 +1483,7 @@ Scanning will happen automatically.
Desbloquear
- Unlock vault
+ Desbloquear cofre
30 minutos
@@ -1550,7 +1550,7 @@ Scanning will happen automatically.
Altere o tema de cor da aplicação.
- Default (System)
+ Predefinido (Sistema)
Tema Escuro Predefinido
@@ -1659,10 +1659,10 @@ Scanning will happen automatically.
Introduza a sua palavra-passe mestra para exportar os dados do seu cofre.
- Send a verification code to your email
+ Enviar um código de verificação para o seu e-mail
- Code sent!
+ Código enviado!
Confirm your identity to continue.
@@ -2029,22 +2029,22 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- 1 day
+ 1 dia
- 2 days
+ 2 dias
- 3 days
+ 3 dias
- 7 days
+ 7 dias
- 30 days
+ 30 dias
- Custom
+ Personalizado
Share this Send upon save
@@ -2495,8 +2495,8 @@ Deseja mudar para esta conta?
Obter dica da palavra-passe mestra
-
- A iniciar sessão como {0}
+
+ A iniciar sessão como {0} em {1}
Utilizador incorreto?
@@ -2609,6 +2609,21 @@ Deseja mudar para esta conta?
There are no items that match the search
+
+ EUA
+
+
+ UE
+
+
+ Auto-hospedado
+
+
+ Região dos dados
+
+
+ Região
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.ro.resx b/src/App/Resources/AppResources.ro.resx
index 4c9903397..09866057d 100644
--- a/src/App/Resources/AppResources.ro.resx
+++ b/src/App/Resources/AppResources.ro.resx
@@ -2495,8 +2495,8 @@ Doriți să comutați la acest cont?
Obțineți indiciul parolei principale
-
- Autentificare ca {0}
+
+ Logging in as {0} on {1}
Nu sunteți dvs.?
@@ -2609,6 +2609,21 @@ Doriți să comutați la acest cont?
Nu există lucruri care să corespundă căutării
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Parola principală nu îndeplinește una sau mai multe politici ale organizației. Pentru a accesa seiful trebuie să actualizați acum parola principală. Continuarea te va deconecta din sesiunea curentă, necesitând să te autentifici din nou. Sesiunile active pe alte dispozitive pot continua să rămână active timp de maxim o oră.
diff --git a/src/App/Resources/AppResources.ru.resx b/src/App/Resources/AppResources.ru.resx
index 6661bb76d..6f005d28f 100644
--- a/src/App/Resources/AppResources.ru.resx
+++ b/src/App/Resources/AppResources.ru.resx
@@ -2495,8 +2495,8 @@
Получить подсказку к мастер-паролю
-
- Войти как {0}
+
+ Войти как {0} на {1}
Не вы?
@@ -2609,6 +2609,21 @@
Нет элементов, соответствующих запросу
+
+ США
+
+
+ Европа
+
+
+ Собственный хостинг
+
+
+ Регион данных
+
+
+ Регион
+
Ваш мастер-пароль не соответствует требованиям политики вашей организации. Для доступа к хранилищу вы должны обновить свой мастер-пароль прямо сейчас. При этом текущая сессия будет завершена и потребуется повторная авторизация. Сессии на других устройствах могут оставаться активными в течение часа.
diff --git a/src/App/Resources/AppResources.si.resx b/src/App/Resources/AppResources.si.resx
index 54b09c57a..7c6c36aae 100644
--- a/src/App/Resources/AppResources.si.resx
+++ b/src/App/Resources/AppResources.si.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.sk.resx b/src/App/Resources/AppResources.sk.resx
index 8c66c83ea..ba197ee0a 100644
--- a/src/App/Resources/AppResources.sk.resx
+++ b/src/App/Resources/AppResources.sk.resx
@@ -2495,8 +2495,8 @@ Chcete prepnúť na toto konto?
Získať nápoveď pre hlavné heslo
-
- Prihlasujete sa ako {0}
+
+ Prihlasujete sa ako {0} na {1}
Nie ste to vy?
@@ -2609,6 +2609,21 @@ Chcete prepnúť na toto konto?
Vyhľadávaniu nezodpovedajú žiadne položky
+
+ USA
+
+
+ EÚ
+
+
+ Vlastný hosting
+
+
+ Dátová oblasť
+
+
+ Región
+
Vaše hlavné heslo nespĺňa jednu alebo viacero podmienok vašej organizácie. Ak chcete získať prístup k trezoru, musíte teraz aktualizovať svoje hlavné heslo. Pokračovaním sa odhlásite z aktuálnej relácie a budete sa musieť znova prihlásiť. Aktívne relácie na iných zariadeniach môžu zostať aktívne až jednu hodinu.
diff --git a/src/App/Resources/AppResources.sl.resx b/src/App/Resources/AppResources.sl.resx
index 59b2998a0..86792ce78 100644
--- a/src/App/Resources/AppResources.sl.resx
+++ b/src/App/Resources/AppResources.sl.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Pridobi namig za glavno geslo
-
- Prijavljate se kot {0}
+
+ Logging in as {0} on {1}
To niste vi?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
Ni elementov, ki bi ustrezali iskanju
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.sr.resx b/src/App/Resources/AppResources.sr.resx
index 962f66823..039096db0 100644
--- a/src/App/Resources/AppResources.sr.resx
+++ b/src/App/Resources/AppResources.sr.resx
@@ -2497,8 +2497,8 @@
Добити савет за Главну Лозинку
-
- Пријављивање као {0}
+
+ Пријављено као {0} на {1}
Не ти?
@@ -2611,6 +2611,21 @@
Нема ставки које одговарају претрази
+
+ US
+
+
+ EU
+
+
+ Личан хостинг
+
+
+ Регион података
+
+
+ Регион
+
Ваша главна лозинка не испуњава једну или више смерница ваше организације. Да бисте приступили сефу, морате одмах да ажурирате главну лозинку. Ако наставите, одјавићете се са ваше тренутне сесије, што захтева да се поново пријавите. Активне сесије на другим уређајима могу да остану активне до један сат.
diff --git a/src/App/Resources/AppResources.sv.resx b/src/App/Resources/AppResources.sv.resx
index 9406c1f85..9f6fa168c 100644
--- a/src/App/Resources/AppResources.sv.resx
+++ b/src/App/Resources/AppResources.sv.resx
@@ -2497,8 +2497,8 @@ Vill du byta till detta konto?
Hämta huvudlösenordsledtråd
-
- Loggar in som {0}
+
+ Logging in as {0} on {1}
Är det inte du?
@@ -2611,6 +2611,21 @@ Vill du byta till detta konto?
Det finns inga objekt som matchar sökningen
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.ta.resx b/src/App/Resources/AppResources.ta.resx
index 38682bfbd..21aada232 100644
--- a/src/App/Resources/AppResources.ta.resx
+++ b/src/App/Resources/AppResources.ta.resx
@@ -2496,8 +2496,8 @@ select Add TOTP to store the key safely
Get master password hint
-
- {0} ஆக உள்நுழைகிறது
+
+ Logging in as {0} on {1}
நீங்கள் இல்லையா?
@@ -2610,6 +2610,21 @@ select Add TOTP to store the key safely
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.te.resx b/src/App/Resources/AppResources.te.resx
index 72e8252f8..ceaffdd00 100644
--- a/src/App/Resources/AppResources.te.resx
+++ b/src/App/Resources/AppResources.te.resx
@@ -2496,8 +2496,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2610,6 +2610,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.th.resx b/src/App/Resources/AppResources.th.resx
index 497013a11..fdeb4418f 100644
--- a/src/App/Resources/AppResources.th.resx
+++ b/src/App/Resources/AppResources.th.resx
@@ -2503,8 +2503,8 @@ Do you want to switch to this account?
Get master password hint
-
- Logging in as {0}
+
+ Logging in as {0} on {1}
Not you?
@@ -2617,6 +2617,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.tr.resx b/src/App/Resources/AppResources.tr.resx
index 26d8cd230..977699df0 100644
--- a/src/App/Resources/AppResources.tr.resx
+++ b/src/App/Resources/AppResources.tr.resx
@@ -2494,8 +2494,8 @@ Bu hesaba geçmek ister misiniz?
Ana parola ipucunu al
-
- {0} olarak giriş yapılıyor
+
+ {1} üzerinde {0} olarak giriş yapılıyor
Siz değil misiniz?
@@ -2608,6 +2608,21 @@ Bu hesaba geçmek ister misiniz?
Aramayla eşleşen kayıt yok
+
+ ABD
+
+
+ AB
+
+
+ Barındırılan
+
+
+ Veri bölgesi
+
+
+ Bölge
+
Ana parolanız kuruluş ilkelerinizi karşılamıyor. Kasanıza erişmek için ana 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.
diff --git a/src/App/Resources/AppResources.uk.resx b/src/App/Resources/AppResources.uk.resx
index d02f69588..fa8502bde 100644
--- a/src/App/Resources/AppResources.uk.resx
+++ b/src/App/Resources/AppResources.uk.resx
@@ -2495,8 +2495,8 @@
Отримати підказку для головного пароля
-
- Вхід у систему як {0}
+
+ Вхід як {0} на {1}
Не ви?
@@ -2609,6 +2609,21 @@
Немає записів, що відповідають пошуку
+
+ США
+
+
+ ЄС
+
+
+ Власне розміщення
+
+
+ Регіон даних
+
+
+ Регіон
+
Ваш головний пароль не відповідає одній або більше політикам вашої організації. Щоб отримати доступ до сховища, вам необхідно оновити свій головний пароль зараз. Продовживши, ви вийдете з поточного сеансу, після чого потрібно буде повторно виконати вхід. Сеанси на інших пристроях можуть залишатися активними протягом однієї години.
diff --git a/src/App/Resources/AppResources.vi.resx b/src/App/Resources/AppResources.vi.resx
index f4fcf854a..948312155 100644
--- a/src/App/Resources/AppResources.vi.resx
+++ b/src/App/Resources/AppResources.vi.resx
@@ -2495,8 +2495,8 @@ Do you want to switch to this account?
Get master password hint
-
- Đăng nhập với {0}
+
+ Logging in as {0} on {1}
Không phải bạn?
@@ -2609,6 +2609,21 @@ Do you want to switch to this account?
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/src/App/Resources/AppResources.zh-Hans.resx b/src/App/Resources/AppResources.zh-Hans.resx
index a6260ad31..d7bbd3fdd 100644
--- a/src/App/Resources/AppResources.zh-Hans.resx
+++ b/src/App/Resources/AppResources.zh-Hans.resx
@@ -2495,8 +2495,8 @@
获取主密码提示
-
- 正登录为 {0}
+
+ 在 {1} 上以 {0} 身份登录
不是你?
@@ -2609,6 +2609,21 @@
没有匹配搜索条件的项目
+
+ 美国
+
+
+ 欧盟
+
+
+ 自托管
+
+
+ 数据区域
+
+
+ 区域
+
您的主密码不符合某一项或多项组织策略要求。要访问密码库,必须立即更新您的主密码。继续操作将使您退出当前会话,并要求您重新登录。其他设备上的活动会话可能会继续保持活动状态长达一小时。
diff --git a/src/App/Resources/AppResources.zh-Hant.resx b/src/App/Resources/AppResources.zh-Hant.resx
index 782a33982..4dbc8d3b4 100644
--- a/src/App/Resources/AppResources.zh-Hant.resx
+++ b/src/App/Resources/AppResources.zh-Hant.resx
@@ -2495,8 +2495,8 @@
獲取主密碼提示
-
- 正登入為 {0}
+
+ Logging in as {0} on {1}
不是您嗎?
@@ -2609,6 +2609,21 @@
There are no items that match the search
+
+ US
+
+
+ EU
+
+
+ Self-hosted
+
+
+ Data region
+
+
+ Region
+
您的主密碼不符合您的組織政策之一或多個要求。您必須立即更新您的主密碼以存取密碼庫。進行此操作將登出您目前的工作階段,需要您重新登入。其他裝置上的工作階段可能繼續長達一小時。
diff --git a/store/apple/hi/copy.resx b/store/apple/hi/copy.resx
index 1f9138b79..15cb86fae 100644
--- a/store/apple/hi/copy.resx
+++ b/store/apple/hi/copy.resx
@@ -130,7 +130,7 @@
आप जिन वेबसाइट पर जाते है उनके लिए बनाएं ताकतवर, खास, और बेतरतीब पासवर्ड उनकी सुरक्षा ज़रूरतो के हिसाब से।
-बिटवार्डन सेंड किसी को भी एन्क्रिप्टेड जानकारी, फाइल और सादा टेक्सट, तुरंत भेजें।
+बिटवार्डन सेंड किसी को भी एन्क्रिप्टेड जानकारी, फाइल, और सादा टेक्सट, फौरन भेजें।
बिटवार्डन कंपनियों के लिए टीम और बिज़नेस प्लान भी देता है ताकि आप अपने साथ काम करनेवालो के साथ पासवर्ड शेयर करे सुरक्षित होकर।
diff --git a/store/google/hi/copy.resx b/store/google/hi/copy.resx
index 62790245b..67819bd80 100644
--- a/store/google/hi/copy.resx
+++ b/store/google/hi/copy.resx
@@ -134,7 +134,7 @@
आप जिन वेबसाइट पर जाते है उनके लिए बनाएं ताकतवर, खास, और बेतरतीब पासवर्ड उनकी सुरक्षा ज़रूरतो के हिसाब से।
-बिटवार्डन सेंड किसी को भी एन्क्रिप्टेड जानकारी, फाइल और सादा टेक्सट, तुरंत भेजें।
+बिटवार्डन सेंड किसी को भी एन्क्रिप्टेड जानकारी, फाइल, और सादा टेक्सट, फौरन भेजें।
बिटवार्डन कंपनियों के लिए टीम और बिज़नेस प्लान भी देता है ताकि आप अपने साथ काम करनेवालो के साथ पासवर्ड शेयर करे सुरक्षित होकर।
From 79241731e7b14f3e76d5a15060caffb39c8d2e0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Ch=C4=99ci=C5=84ski?=
Date: Wed, 24 May 2023 16:04:39 +0200
Subject: [PATCH 04/33] Add github actions to renovate (#2536)
* Add github actions to renovate
* Add gh actions manager
* Apply whole renovate config
* Add newline
---
.github/renovate.json | 57 +++++++++++++++++++++++++++----------------
1 file changed, 36 insertions(+), 21 deletions(-)
diff --git a/.github/renovate.json b/.github/renovate.json
index 6c498a64b..52e80afcf 100644
--- a/.github/renovate.json
+++ b/.github/renovate.json
@@ -1,22 +1,37 @@
{
- "$schema": "https://docs.renovatebot.com/renovate-schema.json",
- "extends": [
- "config:base",
- "schedule:monthly",
- ":maintainLockFilesMonthly",
- ":preserveSemverRanges",
- ":rebaseStalePrs",
- ":disableDependencyDashboard"
- ],
- "enabledManagers": [
- "nuget"
- ],
- "packageRules": [
- {
- "matchManagers": ["nuget"],
- "groupName": "Nuget updates",
- "groupSlug": "nuget",
- "separateMajorMinor": false
- }
- ]
- }
\ No newline at end of file
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+ "extends": [
+ "config:base",
+ ":combinePatchMinorReleases",
+ ":dependencyDashboard",
+ ":maintainLockFilesWeekly",
+ ":pinAllExceptPeerDependencies",
+ ":prConcurrentLimit10",
+ ":rebaseStalePrs",
+ "schedule:weekends",
+ ":separateMajorReleases"
+ ],
+ "enabledManagers": ["cargo", "github-actions", "npm", "nuget"],
+ "packageRules": [
+ {
+ "groupName": "cargo minor",
+ "matchManagers": ["cargo"],
+ "matchUpdateTypes": ["minor", "patch"]
+ },
+ {
+ "groupName": "gh minor",
+ "matchManagers": ["github-actions"],
+ "matchUpdateTypes": ["minor", "patch"]
+ },
+ {
+ "groupName": "npm minor",
+ "matchManagers": ["npm"],
+ "matchUpdateTypes": ["minor", "patch"]
+ },
+ {
+ "groupName": "nuget minor",
+ "matchManagers": ["nuget"],
+ "matchUpdateTypes": ["minor", "patch"]
+ },
+ ]
+}
From c7fd113f2605cc1d4ca0ff6671c8fa549aabe4d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Bispo?=
Date: Thu, 25 May 2023 14:37:53 +0100
Subject: [PATCH 05/33] [PM-2347] Refresh feature flags when environment urls
change (#2538)
---
src/App/Pages/Accounts/HomePageViewModel.cs | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/App/Pages/Accounts/HomePageViewModel.cs b/src/App/Pages/Accounts/HomePageViewModel.cs
index f0ac6e699..d212f4f7b 100644
--- a/src/App/Pages/Accounts/HomePageViewModel.cs
+++ b/src/App/Pages/Accounts/HomePageViewModel.cs
@@ -165,6 +165,7 @@ namespace Bit.App.Pages
public async Task ShowEnvironmentPickerAsync()
{
+ _displayEuEnvironment = await _configService.GetFeatureFlagBoolAsync(Constants.DisplayEuEnvironmentFlag);
var options = _displayEuEnvironment
? new string[] { AppResources.US, AppResources.EU, AppResources.SelfHosted }
: new string[] { AppResources.US, AppResources.SelfHosted };
@@ -185,6 +186,7 @@ namespace Bit.App.Pages
}
await _environmentService.SetUrlsAsync(result == AppResources.EU ? EnvironmentUrlData.DefaultEU : EnvironmentUrlData.DefaultUS);
+ await _configService.GetAsync(true);
SelectedEnvironmentName = result;
});
}
@@ -210,6 +212,7 @@ namespace Bit.App.Pages
}
else
{
+ await _configService.GetAsync(true);
SelectedEnvironmentName = AppResources.SelfHosted;
}
}
From 0288a6659c9841379e2727cd44d6033fbb467497 Mon Sep 17 00:00:00 2001
From: mpbw2 <59324545+mpbw2@users.noreply.github.com>
Date: Thu, 25 May 2023 11:43:45 -0400
Subject: [PATCH 06/33] reset lock delay when returning from activity result
(#2539)
---
src/Android/MainActivity.cs | 3 +++
src/App/App.xaml.cs | 2 +-
src/App/Pages/Vault/AttachmentsPageViewModel.cs | 2 +-
src/Core/Abstractions/IVaultTimeoutService.cs | 3 ++-
src/Core/Services/VaultTimeoutService.cs | 12 +++++++++---
5 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/src/Android/MainActivity.cs b/src/Android/MainActivity.cs
index f4fc640d0..566ff378f 100644
--- a/src/Android/MainActivity.cs
+++ b/src/Android/MainActivity.cs
@@ -44,6 +44,7 @@ namespace Bit.Droid
private IAppIdService _appIdService;
private IEventService _eventService;
private IPushNotificationListenerService _pushNotificationListenerService;
+ private IVaultTimeoutService _vaultTimeoutService;
private ILogger _logger;
private PendingIntent _eventUploadPendingIntent;
private AppOptions _appOptions;
@@ -68,6 +69,7 @@ namespace Bit.Droid
_appIdService = ServiceContainer.Resolve("appIdService");
_eventService = ServiceContainer.Resolve("eventService");
_pushNotificationListenerService = ServiceContainer.Resolve();
+ _vaultTimeoutService = ServiceContainer.Resolve();
_logger = ServiceContainer.Resolve("logger");
TabLayoutResource = Resource.Layout.Tabbar;
@@ -232,6 +234,7 @@ namespace Bit.Droid
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
+ _vaultTimeoutService.ResetTimeoutDelay = true;
if (resultCode == Result.Ok &&
(requestCode == Core.Constants.SelectFileRequestCode || requestCode == Core.Constants.SaveFileRequestCode))
{
diff --git a/src/App/App.xaml.cs b/src/App/App.xaml.cs
index aa839370b..a3deede96 100644
--- a/src/App/App.xaml.cs
+++ b/src/App/App.xaml.cs
@@ -297,7 +297,7 @@ namespace Bit.App
{
await _vaultTimeoutService.CheckVaultTimeoutAsync();
// Reset delay on every start
- _vaultTimeoutService.DelayLockAndLogoutMs = null;
+ _vaultTimeoutService.DelayTimeoutMs = null;
}
await _configService.GetAsync();
diff --git a/src/App/Pages/Vault/AttachmentsPageViewModel.cs b/src/App/Pages/Vault/AttachmentsPageViewModel.cs
index 02e9b2ae6..253e2c2c6 100644
--- a/src/App/Pages/Vault/AttachmentsPageViewModel.cs
+++ b/src/App/Pages/Vault/AttachmentsPageViewModel.cs
@@ -156,7 +156,7 @@ namespace Bit.App.Pages
// Prevent Android from locking if vault timeout set to "immediate"
if (Device.RuntimePlatform == Device.Android)
{
- _vaultTimeoutService.DelayLockAndLogoutMs = 60000;
+ _vaultTimeoutService.DelayTimeoutMs = 60000;
}
await _fileService.SelectFileAsync();
}
diff --git a/src/Core/Abstractions/IVaultTimeoutService.cs b/src/Core/Abstractions/IVaultTimeoutService.cs
index c74001b17..8c20a5d17 100644
--- a/src/Core/Abstractions/IVaultTimeoutService.cs
+++ b/src/Core/Abstractions/IVaultTimeoutService.cs
@@ -6,7 +6,8 @@ namespace Bit.Core.Abstractions
{
public interface IVaultTimeoutService
{
- long? DelayLockAndLogoutMs { get; set; }
+ long? DelayTimeoutMs { get; set; }
+ bool ResetTimeoutDelay { get; set; }
Task CheckVaultTimeoutAsync();
Task ShouldTimeoutAsync(string userId = null);
diff --git a/src/Core/Services/VaultTimeoutService.cs b/src/Core/Services/VaultTimeoutService.cs
index f5bd7d4bd..c61a77aad 100644
--- a/src/Core/Services/VaultTimeoutService.cs
+++ b/src/Core/Services/VaultTimeoutService.cs
@@ -50,7 +50,8 @@ namespace Bit.Core.Services
_loggedOutCallback = loggedOutCallback;
}
- public long? DelayLockAndLogoutMs { get; set; }
+ public long? DelayTimeoutMs { get; set; }
+ public bool ResetTimeoutDelay { get; set; }
public async Task IsLockedAsync(string userId = null)
{
@@ -117,7 +118,7 @@ namespace Bit.Core.Services
{
return false;
}
- if (vaultTimeoutMinutes == 0 && !DelayLockAndLogoutMs.HasValue)
+ if (vaultTimeoutMinutes == 0 && !DelayTimeoutMs.HasValue)
{
return true;
}
@@ -127,8 +128,13 @@ namespace Bit.Core.Services
return false;
}
var diffMs = _platformUtilsService.GetActiveTime() - lastActiveTime;
- if (DelayLockAndLogoutMs.HasValue && diffMs < DelayLockAndLogoutMs)
+ if (DelayTimeoutMs.HasValue && diffMs < DelayTimeoutMs)
{
+ if (ResetTimeoutDelay)
+ {
+ DelayTimeoutMs = null;
+ ResetTimeoutDelay = false;
+ }
return false;
}
var vaultTimeoutMs = vaultTimeoutMinutes * 60000;
From b7ff636862e147f20f600f7b61555db542af4840 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 26 May 2023 08:12:16 +0200
Subject: [PATCH 07/33] Autosync the updated translations (#2540)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
---
src/App/Resources/AppResources.hi.resx | 89 +++++-----
src/App/Resources/AppResources.ml.resx | 34 ++--
src/App/Resources/AppResources.pt-PT.resx | 198 +++++++++++-----------
src/App/Resources/AppResources.ta.resx | 60 +++----
store/apple/pt-PT/copy.resx | 2 +-
store/google/pt-PT/copy.resx | 4 +-
6 files changed, 193 insertions(+), 194 deletions(-)
diff --git a/src/App/Resources/AppResources.hi.resx b/src/App/Resources/AppResources.hi.resx
index 1b3a33030..766d26e66 100644
--- a/src/App/Resources/AppResources.hi.resx
+++ b/src/App/Resources/AppResources.hi.resx
@@ -285,7 +285,7 @@
खाता पहले से जोड़ा गया
- अभी खाता इस्तेमाल करें?
+ खाता अभी इस्तेमाल करें?
मुख्य पासवर्ड
@@ -431,7 +431,7 @@
बिटवार्डन ऐप एक्सटेंशन
- बिटवार्डन ऐप एक्सटेंशन अपने तिजोरी में नए चीज़ डालने का सबसे आसात तरीका है। बिटवार्डन ऐप एक्सटेंशन के इस्तेमाल से जुड़ी जानकारी लेने के लिए "सेटिंग" में जाएं।
+ बिटवार्डन ऐप एक्सटेंशन तिजोरी में नए चीज़ डालने का सबसे आसात तरीका है। बिटवार्डन ऐप एक्सटेंशन के इस्तेमाल से जुड़ी जानकारी लेने के लिए "सेटिंग" में जाएं।
सफारी और दूसरे ऐप में अपने लॉगइन अपनेआप भरने के लिए बिटवार्डन इस्तेमाल करें।
@@ -477,59 +477,59 @@
मुख्य पासवर्ड इशारा लेने के लिए अपने खाते का ईमेल पता डालें।
- ऐप विस्तारण को फिर चालू करें
+ ऐप एक्सटेंशन वापस चालू करें
- लगभग सम्पूर्ण!
+ करीब-करीब खत्म!
- ऐप विस्तारण को चालू करें
+ ऐप एक्सटेंशन चालू करें
- In Safari, find bitwarden using the share icon (hint: scroll to the right on the bottom row of the menu).
+ सफारी में, शेयर आइकन से बिटवार्डन का पता लगाएं (इशारा: मेन्यू के सबसे निचले पट्टी पर दाएं तरफ जाएं)।
Safari is the name of apple's web browser
- अपने पासवर्ड को तुरंत प्राप्त करें
+ अपने पासवर्ड को तुरंत एक्सेस करें!
- आप लॉग इन करने के लिए तैयार हैं!
+ आप लॉगइन करने के लिए तैयार हैं!
- Your logins are now easily accessable from Safari, Chrome, and other supported apps.
+ अब सफारी, क्रोम, और दूसरे सपोर्ट किए गए ऐप से लॉगइन आसानी से एक्सेस किए जा सकते है।
- In Safari and Chrome, find bitwarden using the share icon (hint: scroll to the right on the bottom row of the share menu).
+ सफारी और क्रोम में, शेयर आइकन से बिटवार्डन का पता लगाएं (इशारा: मेन्यू के सबसे निचले पट्टी पर दाएं तरफ जाएं)
- Tap the bitwarden icon in the menu to launch the extension.
+ एक्सटेंशन खोलने के लिए मेन्यू में बिटवार्डन आइकन पर दबाएं।
- To turn on bitwarden in Safari and other apps, tap the "more" icon on the bottom row of the menu.
+ सफारी और दूसरे ऐप में बिटवार्डन चालू करने के लिए, मेन्यू के सबसे निचले पट्टी में "ज़्यादा" आइकन दबाएं।
- पसंदीदा
+ मनपसंद
फिंगरप्रिंट
- पासवर्ड उत्पन्न करें
+ पासवर्ड बनाएं
- मास्टर पासवर्ड संकेत प्राप्त करें
+ मुख्य पासवर्ड इशारा लें
- आइटम्स आयात करें
+ चीज़ आयात करें
- Bitwarden के वेब-तिजोरी से एक साथ कई आइटम आयातित किए जा सकते हैं। क्या आप वहां जाना चाहते हैं?
+ Bitwarden.com वेब तिजोरी से थोक में चीज़ आयात किए जा सकते हैं। वेबसाइट पर अभी जाएं?
- दूसरे पासवर्ड प्रबंधन ऐप से एक साथ कई आइटम जल्दी आयातित करें।
+ दूसरे पासवर्ड मैनेजमेंट ऐप से थोक में चीज़ जल्दी आयात करें।
- आखिरी बार सिंक हुआ:
+ आखिरी सिंक:
लंबाई
@@ -538,7 +538,7 @@
लॉक
- 15 मिनिट
+ 15 मिनट
1 घंटा
@@ -550,87 +550,86 @@
4 घंटे
- तत्काल
-
+ तुरंत
- तिजोरी का समय समाप्त
+ तिजोरी वक्त खत्म
- तिजोरी का समय समाप्त
+ तिजोरी वक्त खत्म
- लॉग आउट करने से तिजोरी में प्रवेश संभव नहीं होगा और समय समाप्त होने के बाद ऑनलाइन प्रमाणीकरण की आश्यकता होगी। आप इस सेटिंग्स को प्रयोग करने के लिए विश्वस्त हैं?
+ लॉगआउट करने के बाद तिजोरी में जाना मुमकिन नहीं होगा और वक्त खत्म होने के बाद ऑनलाइन सत्यापन की ज़रूरत होगी। इस सेटिंग को पक्का इस्तेमाल करें?
- लॉगिन कर रहा है...
+ लॉगइन कर रहे है...
Message shown when interacting with the server
- सुरक्षित तिजोरी में प्रवेश करने के लिए नया खाता बनाएं या लॉग इन करें।
+ अपनी महफूज़ तिजोरी एक्सेस करने के लिए नया खाता बनाएं या लॉगइन करें।
- प्रबंधन
+ मैनेज करें
पासवर्ड गलत है।
- मास्टर पासवर्ड वह पासवर्ड है जो तिजोरी में प्रवेश के लिए प्रयोग होता है। आप मास्टर पासवर्ड ना भूले यह अतिआवश्यक है। भूलने की अवस्था में पासवर्ड को दोबारा पाना संभव नहीं होगा।
+ मुख्य पासवर्ड वो पासवर्ड है जो तिजोरी एक्सेस करने के लिए इस्तेमाल होता है। मुख्य पासवर्ड ना भूलना बहुत ज़रूरी है। भूलने के बाद पासवर्ड वापस पाना मुमकिन नहीं होगा।
- मास्टर पासवर्ड संकेत (वैकल्पिक)
+ मुख्य पासवर्ड इशारा (ज़रूरी नहीं)
- मास्टर पासवर्ड संकेत आपको भूल जाने की अवस्था में पासवर्ड को याद करने में सहायता करता है।
+ मुख्य पासवर्ड इशारा आपको पासवर्ड भूल जाने के स्थिति में उसको याद करने में मदद करता है।
मुख्य पासवर्ड कम-से-कम {0} अक्षर लंबा होना चाहिए।
- कम से कम अंक
+ कम-से-कम अंक
Minimum numeric characters for password generator settings
- कम से कम विशेष अक्षर
+ कम-से-कम खास अक्षर
Minimum special characters for password generator settings
- अधिक सेटिंग्स
+ ज़्यादा सेटिंग
- You must log into the main bitwarden app before you can use the extension.
+ एक्सटेशन इस्तेमाल करने से पहले मुख्य बिटवार्डन ऐप में लॉगइन करना पड़ेगा।
कभी नहीं
- नया आइटम बनाया गया
+ नया चीज़ बनाया गया
- तिजोरी में कोई अभिमत आइटम नहीं है।
+ तिजोरी में कोई मनपसंद चीज़ नहीं है।
- तिजोरी में कोई आइटम नहीं है।
+ तिजोरी में कोई चीज़ नहीं है।
- There are no items in your vault for this website. Tap to add one.
+ इस वेबसाइट/ऐप के लिए तिजोरी में कोई चीज़ नहीं है। चीज़ जोड़ने के लिए दबाएं।
- इस आइटम में कोई यूजरनेम या पासवर्ड नहीं पड़ा है।
+ इस लॉगइन में कोई यूजरनाम या पासवर्ड नहीं है।
ठीक है, समझ गए!
Confirmation, like "Ok, I understand it"
- Option defaults are set from the main bitwarden app's password generator tool.
+ विकल्प डिफॉल्ट मुख्य बिटवार्डन ऐप के पासवर्ड जनरेटर औज़ार से सेट होता है।
विकल्प
- अन्य
+ दूसरे
पासवर्ड बनाया गया
@@ -639,13 +638,13 @@
पासवर्ड जनरेटर
- पासवर्ड संकेत
+ पासवर्ड इशारा
- हमने आपको मास्टर पासवर्ड संकेत के साथ एक ईमेल भेजा है।
+ हमने आपको मुख्य पासवर्ड इशारा एक ईमेल के साथ भेजा है।
- आप पुराने पासवर्ड के ऊपर दूसरा पासवर्ड लिखने के लिए आश्वस्त हैं?
+ चालू पासवर्ड पक्का ओवरराइट करें?
bitwarden keeps your vault automatically synced by using push notifications. For the best possible experience, please select "Ok" on the following prompt when asked to enable push notifications.
diff --git a/src/App/Resources/AppResources.ml.resx b/src/App/Resources/AppResources.ml.resx
index c5c348259..3abca5ca5 100644
--- a/src/App/Resources/AppResources.ml.resx
+++ b/src/App/Resources/AppResources.ml.resx
@@ -276,7 +276,7 @@
നിങ്ങൾക്ക് ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് ഉറപ്പാണോ?
- Remove account
+ അക്കൗണ്ട് നീക്കംചെയ്യുക
Are you sure you want to remove this account?
@@ -584,7 +584,7 @@
നിങ്ങളുടെ പാസ്വേഡ് മറന്നാൽ അത് ഓർമ്മിക്കാൻ ഒരു പ്രാഥമിക പാസ്വേഡ് സൂചന സഹായിക്കും.
- Master password must be at least {0} characters long.
+ പ്രാഥമിക പാസ്വേഡിന് കുറഞ്ഞത് {0} പ്രതീകങ്ങളെങ്കിലും ദൈർഘ്യമുണ്ടായിരിക്കണം.
കുറഞ്ഞ സംഖ്യകൾ
@@ -775,10 +775,10 @@
പ്രവർത്തനക്ഷമമാക്കി
- Off
+ ഓഫ്
- On
+ ഓൺ
അവസ്ഥ
@@ -900,8 +900,8 @@
ഓതന്റിക്കേറ്റർ കീ വായിക്കാൻ കഴിയുന്നില്ല.
- Point your camera at the QR Code.
-Scanning will happen automatically.
+ നിങ്ങളുടെ ക്യാമറ QR കോഡിലേക്ക് ചൂണ്ടുക.
+സ്കാനിംഗ് സ്വയമേവ നടക്കും.
QR കോഡ് സ്കാൻ ചെയ്യുക
@@ -1080,7 +1080,7 @@ Scanning will happen automatically.
പേരിന്റെ അവസാന ഭാഗം
- Full name
+ പൂര്ണ്ണമായ പേര്
ലൈസൻസ് നമ്പർ
@@ -1210,7 +1210,7 @@ Scanning will happen automatically.
മറച്ചത്
- Linked
+ ബന്ധിപ്പിച്ചത്
വാചകം
@@ -1384,10 +1384,10 @@ Scanning will happen automatically.
കളക്ഷനുകൾ തിരയുക
- Search file Sends
+ അയച്ച വാക്കുകൾ തിരയുക
- Search text Sends
+ അയച്ച വാക്കുകൾ തിരയുക
Search {0}
@@ -1662,10 +1662,10 @@ Scanning will happen automatically.
Send a verification code to your email
- Code sent!
+ കോഡ് അയച്ചു!
- Confirm your identity to continue.
+ തുടരാൻ നിങ്ങളുടെ ഐഡന്റിറ്റി സ്ഥിരീകരിക്കുക.
ഈ എക്സ്പോർട്ടിൽ എൻക്രിപ്റ്റ് ചെയ്യാത്ത ഫോർമാറ്റിൽ നിങ്ങളുടെ വാൾട് ഡാറ്റ അടങ്ങിയിരിക്കുന്നു. എക്സ്പോർട് ചെയ്ത ഫയൽ സുരക്ഷിതമല്ലാത്ത ചാനലുകളിൽ (ഇമെയിൽ പോലുള്ളവ) നിങ്ങൾ സംഭരിക്കുകയോ അയയ്ക്കുകയോ ചെയ്യരുത്. നിങ്ങൾ ഇത് ഉപയോഗിച്ചുകഴിഞ്ഞാലുടൻ അത് മായ്ച്ചുകളയണം.
@@ -1886,7 +1886,7 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Text
+ വാചകം
വാചകം
@@ -1905,13 +1905,13 @@ Scanning will happen automatically.
നിങ്ങൾ അയയ്ക്കാൻ ആഗ്രഹിക്കുന്ന ഫയൽ.
- File type is selected.
+ ഫയൽ തരം തിരഞ്ഞെടുത്തു.
- File type is not selected, tap to select.
+ ഫയൽ തരം തിരഞ്ഞെടുത്തിട്ടില്ല, തിരഞ്ഞെടുക്കാൻ ടാപ്പുചെയ്യുക.
- Text type is selected.
+ ഫയൽ തരം തിരഞ്ഞെടുത്തു.
Text type is not selected, tap to select.
@@ -1927,7 +1927,7 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Pending deletion
+ പരിപൂർണ്ണമാവാത്ത ഇല്ലാതാക്കൽ
കാലഹരണപ്പെടുന്ന തീയതി
diff --git a/src/App/Resources/AppResources.pt-PT.resx b/src/App/Resources/AppResources.pt-PT.resx
index 0d0591836..f203f407e 100644
--- a/src/App/Resources/AppResources.pt-PT.resx
+++ b/src/App/Resources/AppResources.pt-PT.resx
@@ -186,11 +186,11 @@
Short label for an email address.
- Endereço de email
+ Endereço de e-mail
Full label for a email address.
- Enviar-nos um email
+ Enviar-nos um e-mail
Envie-nos um email diretamente para obter ajuda ou deixar feedback.
@@ -203,7 +203,7 @@
Title for your favorite items in the vault.
- Submeter um relatório de bug
+ Apresentar um relatório de erros
Abrir um issue no nosso repositório do GitHub.
@@ -222,14 +222,14 @@
Pasta eliminada.
- Nenhuma pasta
+ Em nenhuma pasta
Items that have no folder specified go in this special "catch-all" folder.
Pastas
- Pasta atualizada.
+ Pasta guardada
Ir para o site
@@ -247,7 +247,7 @@
Description message for the alert when internet connection is required to continue.
- Ligação à internet necessária
+ Ligação à Internet necessária
Title for the alert when internet connection is required to continue.
@@ -276,13 +276,13 @@
Tem a certeza de que pretende terminar sessão?
- Remover Conta
+ Remover conta
Tem a certeza de que deseja remover esta conta?
- Conta Já Adicionada
+ Conta já adicionada
Gostaria de alterar para a adicionada agora?
@@ -342,7 +342,7 @@
Reveal a hidden value (password).
- O item foi eliminado.
+ Item eliminado
Confirmation message after successfully deleting a login.
@@ -364,7 +364,7 @@
Label for a uri/url.
- Utilizar impressão digital para desbloquear
+ Utilizar a impressão digital para desbloquear
Nome de utilizador
@@ -375,17 +375,17 @@
Validation message for when a form field is left blank and is required to be entered.
- {0} foi copiado(a).
+ {0} copiado(a)
Confirmation message after successfully copying a value to the clipboard.
- Verificar impressão digital
+ Verificar a impressão digital
- Verificar palavra-passe mestra
+ Verificar a palavra-passe mestra
- Verifica PIN
+ Verificar PIN
Versão
@@ -394,7 +394,7 @@
Ver
- Visitar o nosso website
+ Visite o nosso site
Visite o nosso website para obter ajuda, notícias, enviar-nos um email, e/ou saber mais acerca de como utilizar o Bitwarden.
@@ -419,10 +419,10 @@
Extensão da aplicação
- Utilize o serviço de acessibilidade do Bitwarden para auto-preencher as suas credencias entre aplicações e a web.
+ Utilize o serviço de acessibilidade do Bitwarden para preencher automaticamente os seus inícios de sessão em todas as aplicações e na web.
- Serviço de auto-preenchimento
+ Serviço de preenchimento automático
Evitar caracteres ambíguos
@@ -431,19 +431,19 @@
Extensão da aplicação Bitwarden
- A maneira mais fácil de adicionar novas credenciais ao seu cofre é a partir da extensão da aplicação Bitwarden. Saiba mais acerca de como utilizar a extensão da aplicação Bitwarden ao navegar para o ecrã de "Definições".
+ A maneira mais fácil de adicionar novos inícios de sessão ao seu cofre é a partir da extensão da aplicação Bitwarden. Saiba mais sobre a utilização da extensão da aplicação Bitwarden ao navegar até ao ecrã "Definições".
- Utilize o Bitwarden no Safari e outras aplicações para auto-preencher as suas credenciais.
+ Utilize o Bitwarden no Safari e noutras aplicações para preencher automaticamente os seus inícios de sessão.
- Serviço de auto-preenchimento Bitwarden
+ Serviço de preenchimento automático do Bitwarden
- Utilize o serviço de acessibilidade do Bitwarden para auto-preencher as suas credencias.
+ Utilize o serviço de acessibilidade do Bitwarden para preencher automaticamente os seus inícios de sessão.
- Alterar email
+ Alterar e-mail
Pode alterar o seu endereço de email no cofre web bitwarden.com. Pretende visitar o website agora?
@@ -471,19 +471,19 @@
Editar item
- Ativar sincronização automática
+ Permitir a sincronização automática
Introduza o endereço de email da sua conta para receber a dica da sua palavra-passe mestra.
- Reativar extensão da aplicação
+ Reativar a extensão da aplicação
Quase feito!
- Ativar extensão da aplicação
+ Ativar a extensão da aplicação
No Safari, encontre o Bitwarden utilizando o ícone de partilha (dica: role para a direita na linha de fundo do menu de partilha).
@@ -581,7 +581,7 @@
Dica da palavra-passe mestra (opcional)
- Uma dica da palavra-passe mestra pode ajudar a lembrar-se da sua palavra-passe se a esquecer.
+ Uma dica da palavra-passe mestra pode ajudá-lo a lembrar-se da sua palavra-passe, caso se esqueça dela.
A palavra-passe mestra deve ter pelo menos {0} caracteres.
@@ -591,7 +591,7 @@
Minimum numeric characters for password generator settings
- Especiais minímos
+ Caracteres especiais minímos
Minimum special characters for password generator settings
@@ -604,7 +604,7 @@
Nunca
- Novo item criado.
+ Item adicionado
Não existem favoritos no seu cofre.
@@ -632,7 +632,7 @@
Outros
- Palavra-passe gerada.
+ Palavra-passe gerada
Gerador de palavras-passe
@@ -647,23 +647,23 @@
Tem a certeza de que pretende sobreescrever a palavra-passe atual?
- O Bitwarden mantém o seu cofre sincronizado automaticamente utilizando notificações push. Para a melhor experiência possível, por favor selecione "Ok" na seguinte solicitação quando solicitado a ativar notificações push.
+ O Bitwarden mantém o seu cofre sincronizado automaticamente através de notificações push. Para obter a melhor experiência possível, selecione "Permitir" na seguinte mensagem quando lhe for pedido para permitir notificações push.
Push notifications for apple products
- Avalie a aplicação
+ Avaliar a aplicação
- Por favor considere ajudar-nos com uma boa análise!
+ Por favor, considere ajudar-nos com uma boa avaliação!
Regenerar palavra-passe
- Reescreva a palavra-passe mestra
+ Reintroduza a palavra-passe mestra
- Pesquisar cofre
+ Procurar no cofre
Segurança
@@ -678,10 +678,10 @@
Introduza um código PIN de 4 dígitos para desbloquear a aplicação.
- Informação do item
+ Informações do item
- Item atualizado.
+ Item guardado
A submeter...
@@ -692,23 +692,23 @@
Message shown when interacting with the server
- Sincronização completada.
+ Sincronização concluída
- Sincronização falhada.
+ Falha na sincronização
- Sincronizar cofre agora
+ Sincronizar o cofre agora
Touch ID
What Apple calls their fingerprint reader.
- Início de sessão de dois passos
+ Verificação de dois passos
- O início de sessão de dois passos torna a sua conta mais segura ao requerer que verifique o seu início de sessão com outro dispositivo como uma chave de segurança, aplicação de autenticação, SMS, chamada telefónica, ou email. O início de sessão de dois passos pode ser ativado no cofre web bitwarden.com. Pretende visitar o website agora?
+ A verificação de dois passos torna a sua conta mais segura, exigindo que verifique o seu início de sessão com outro dispositivo, como uma chave de segurança, aplicação de autenticação, SMS, chamada telefónica ou e-mail. A verificação de dois passos pode ser configurada em bitwarden.com. Pretende visitar o site agora?
Desbloquear com {0}
@@ -754,10 +754,10 @@
This is used for the autofill service. ex. "There are no items in your vault for twitter.com".
- Quando seleciona um campo de entrada e vê uma sobreposição de auto-preenchimento do Bitwarden, irá poder tocar neste para iniciar o serviço de auto-preenchimento.
+ Quando seleciona um campo de entrada e vê uma sobreposição de preenchimento automático do Bitwarden, pode tocar nela para iniciar o serviço de preenchimento automático.
- Toque nesta notificação para auto-preencher um item do seu cofre.
+ Toque nesta notificação para preencher automaticamente um item do seu cofre.
Abrir definições de acessibilidade
@@ -784,16 +784,16 @@
Estado
- A maneira mais fácil de adicionar novas credenciais ao seu cofre é a partir do serviço de auto-preenchimento Bitwarden. Saiba mais acerca do serviço de auto-preenchimento Bitwarden ao navegar para o ecrã de "Ferramentas".
+ A maneira mais fácil de adicionar novos inícios de sessão ao seu cofre é a partir do Serviço de preenchimento automático do Bitwarden. Saiba mais sobre como utilizar o Serviço de preenchimento automático do Bitwarden ao navegar até ao ecrã "Definições".
- Auto-preencher
+ Preencher automaticamente
- Pretende auto-preencher ou ver este item?
+ Pretende preencher automaticamente ou visualizar este item?
- Tem a certeza de que pretende auto-preencher este item? Não é uma correspondência completa para "{0}".
+ Tem a certeza de que pretende preencher automaticamente este item? Não é uma correspondência completa para "{0}".
Itens correspondentes
@@ -805,17 +805,17 @@
Pesquisar
- Está a pesquisar por um item de auto-preenchimento para "{0}".
+ Está à procura de um item de preenchimento automático para "{0}".
- Saiba Mais sobre as Organizações
+ Saiba mais sobre as organizações
Não é possível abrir a aplicação "{0}".
Message shown when trying to launch an app that does not exist on the user's device.
- Aplicação de autenticador
+ Aplicação de autenticação
For 2FA
@@ -831,7 +831,7 @@
For 2FA whenever there are no available providers on this device.
- Esta conta tem início de sessão de dois passos ativado, no entanto, nenhum dos fornecedores de dois passos configurados são suportados neste dispositivo. Por favor utilize um dispositivo suportado e/ou adiciono fornecedores adicionais que são melhor suportados entre dispositivos (como uma aplicação de autenticador).
+ Esta conta tem a verificação de dois passos configurada, no entanto, nenhum dos fornecedores de dois passos configurados é suportado neste dispositivo. Utilize um dispositivo suportado e/ou adicione fornecedores adicionais que sejam mais bem suportados nos dispositivos (como uma aplicação de autenticação).
Código de recuperação
@@ -846,17 +846,17 @@
For 2FA
- Opções de início de sessão de dois passos
+ Opções de verificação de dois passos
- Utilizar outro método de início de sessão de dois passos
+ Utilizar outro método de verificação de dois passos
Não foi possível enviar o email de verificação. Tente novamente.
For 2FA
- Email de verificação enviado.
+ E-mail de verificação enviado
For 2FA
@@ -887,7 +887,7 @@
The placeholder will show the file size of the attachment. Ex "25 MB"
- Chave de autenticador (TOTP)
+ Chave de autenticação (TOTP)
Código de verificação (TOTP)
@@ -916,7 +916,7 @@ Scanning will happen automatically.
Copiar TOTP
- If a login has an authenticator key, copy the TOTP verification code to your clip-board when you auto-fill the login.
+ Se um início de sessão tiver uma chave de autenticação, copie o código de verificação TOTP para a sua área de transferência quando preencher automaticamente o início de sessão.
Copy TOTP automatically
@@ -1080,7 +1080,7 @@ Scanning will happen automatically.
Último nome
- Nome Completo
+ Nome completo
Número da licença
@@ -1149,7 +1149,7 @@ Scanning will happen automatically.
URL do servidor de ícones
- Auto-preencher com o Bitwarden
+ Preencher automaticamente com o Bitwarden
O cofre está bloqueado
@@ -1170,13 +1170,13 @@ Scanning will happen automatically.
Não existem itens no lixo.
- Serviço de acessibilidade de auto-preenchimento
+ Serviço de acessibilidade de preenchimento automático
- O serviço de auto-preenchimento do Bitwarden utiliza a Android Autofill Framework para assistir a preencher credenciais, cartões de crédito, e informação de identidade noutras aplicações do seu dispositivo.
+ O serviço de preenchimento automático do Bitwarden utiliza o Android Autofill Framework para ajudar a preencher as informações de início de sessão noutras aplicações no seu dispositivo.
- Utilize o serviço de auto-preenchimento do Bitwarden para preencher credenciais, cartões de crédito, e informação de identidade noutras aplicações.
+ Utilize o serviço de preenchimento automático do Bitwarden para preencher informações de início de sessão noutras aplicações.
Abrir definições de auto-preenchimento
@@ -1262,7 +1262,7 @@ Scanning will happen automatically.
Sim, e guardar
- Auto-preencher e guardar
+ Preencher automaticamente e guardar
Organização
@@ -1278,7 +1278,7 @@ Scanning will happen automatically.
Para continuar, segure a sua YubiKey NEO contra a parte de trás do dispositivo.
- O serviço de acessibilidade pode ser útil para utilizar quando as aplicações não suportam o serviço de auto-preenchimento padrão.
+ Pode ser útil utilizar o serviço de acessibilidade quando as aplicações não suportam o serviço de preenchimento automático padrão.
Palavra-passe atualizada
@@ -1304,7 +1304,7 @@ Scanning will happen automatically.
Aceda ao seu cofre diretamente a partir do seu teclado para rapidamente auto-preencher palavras-passe.
- Para ativar o auto-preenchimento de palavras-passe no seu dispositivo, siga estas instruções:
+ Para configurar o preenchimento automático de palavras-passe no seu dispositivo, siga estas instruções:
1. Vá à aplicação iOS "Definições"
@@ -1322,7 +1322,7 @@ Scanning will happen automatically.
5. Selecione "Bitwarden"
- Auto-preenchimento de palavras-passe
+ Preenchimento automático de palavras-passe
A maneira mais fácil de adicionar novas credenciais ao seu cofre é ao utilizar a extensão de auto-preenchimento de palavras-passe do Bitwarden. Saiba mais acerca de como utilizar a extensão de auto-preenchimento de palavras-passe do Bitwarden ao navegar para o ecrã de "Definições".
@@ -1390,7 +1390,7 @@ Scanning will happen automatically.
Search text Sends
- Pesquisar {0}
+ Procurar {0}
ex: Search Logins
@@ -1540,7 +1540,7 @@ Scanning will happen automatically.
Default URI match detection for auto-fill.
- Escolha a maneira predefinida pela qual a deteção de correspondência de URI é manuseada para credenciais ao realizar ações como auto-preenchimento.
+ Escolha a forma predefinida como a deteção de correspondência de URI é tratada para inícios de sessão ao executar ações como o preenchimento automático.
Tema
@@ -1553,7 +1553,7 @@ Scanning will happen automatically.
Predefinido (Sistema)
- Tema Escuro Predefinido
+ Tema escuro predefinido
Choose the dark theme to use when using Default (System) theme while your device's dark mode is in use.
@@ -1583,10 +1583,10 @@ Scanning will happen automatically.
'Solarized Dark' is the name of a specific color scheme. It should not be translated.
- Auto-fill blocked URIs
+ Preencher automaticamente URIs bloqueados
- Auto-fill will not be offered for blocked URIs. Separate multiple URIs with a comma. For example: "https://twitter.com, androidapp://com.twitter.android".
+ O preenchimento automático não será oferecido para URIs bloqueados. Separe vários URIs com uma vírgula. Por exemplo: "https://twitter.com, androidapp://com.twitter.android".
Ask to add login
@@ -1598,7 +1598,7 @@ Scanning will happen automatically.
Quando reiniciar a aplicação
- O auto-preenchimento torna fácil aceder em segurança ao seu cofre Bitwarden a partir de outros websites e aplicações. Parece que não ativou um serviço de auto-preenchimento para o Bitwarden. Ative o auto-preenchimento para o Bitwarden a partir do ecrã "Definições".
+ O preenchimento automático facilita o acesso seguro ao seu cofre do Bitwarden a partir de outros sites e aplicações. Parece que o utilizador não configurou um serviço de preenchimento automático do Bitwarden. Configure o preenchimento automático do Bitwarden a partir do ecrã "Definições".
As suas alterações de tema irão ser aplicadas quando a aplicação for reiniciada.
@@ -1632,7 +1632,7 @@ Scanning will happen automatically.
Utilizar biometria para desbloquear
- O Bitwarden precisa da sua atenção - Veja o "Serviço de acessibilidade de auto-preenchimento" nas Definições do Bitwarden
+ O Bitwarden precisa de atenção - Veja o "Serviço de acessibilidade de preenchimento automático" nas definições do Bitwarden
3. No ecrã Definições da App para o Bitwarden no Android, vá às opções "Sobrepor a outras aplicações" (em Avançadas) e toque na opção para ativar o suporte de sobreposição.
@@ -1707,7 +1707,7 @@ Scanning will happen automatically.
Anexo guardado com sucesso
- Por favor ative o "Serviço de acessibilidade de auto-preenchimento" nas Definições do Bitwarden para utilizar o bloco de Auto-preenchimento.
+ Por favor, ative o "Serviço de acessibilidade de preenchimento automático" nas definições do Bitwarden para utilizar o mosaico de preenchimento automático.
Nenhum campo de palavra-passe detetado
@@ -1768,10 +1768,10 @@ Scanning will happen automatically.
Início de Sessão Único da Empresa
- Inicie sessão rapidamente utilizando o portal de início de sessão único da sua organização. Por favor introduza o identificador da sua organização para começar.
+ Inicie sessão rapidamente utilizando o portal de início de sessão único da sua organização. Por favor, introduza o identificador da sua organização para começar.
- Identificador da Organização
+ Identificador da organização
Não foi possível iniciar sessão com SSO
@@ -1780,10 +1780,10 @@ Scanning will happen automatically.
Definir palavra-passe mestra
- Para concluir o início de sessão com SSO, por favor defina uma palavra-passe mestra para aceder e proteger o seu cofre.
+ Para concluir o início de sessão com SSO, por favor, defina uma palavra-passe mestra para aceder e proteger o seu cofre.
- Uma ou mais políticas da organização requerem que a sua palavra-passe mestra cumpra aos seguintes requisitos:
+ Uma ou mais políticas da organização requerem que a sua palavra-passe mestra cumpra os seguintes requisitos:
Pontuação mínima de complexidade de {0}
@@ -1804,7 +1804,7 @@ Scanning will happen automatically.
Contém um ou mais dos seguintes caracteres especiais: {0}
- Palavra-passe Inválida
+ Palavra-passe inválida
Palavra-passe mestra não cumpre os requisitos da organização. Por favor verifique a informação da política e tente novamente.
@@ -1828,7 +1828,7 @@ Scanning will happen automatically.
Bitwarden needs attention - Turn on "Draw-Over" in "Auto-fill Services" from Bitwarden Settings
- Serviços de Autopreenchimento
+ Serviços de preenchimento automático
Usar preenchimento automático
@@ -1840,7 +1840,7 @@ Scanning will happen automatically.
Usar Acessibilidade
- Use the Bitwarden Accessibility Service to auto-fill your logins across apps and the web. When set up, we'll display a popup when login fields are selected.
+ Utilize o Serviço de acessibilidade do Bitwarden para preencher automaticamente os seus inícios de sessão em aplicações e na web. Quando configurado, exibiremos um pop-up quando os campos de início de sessão forem selecionados.
Use the Bitwarden Accessibility Service to auto-fill your logins across apps and the web. (Requires Draw-Over to be turned on as well)
@@ -1858,7 +1858,7 @@ Scanning will happen automatically.
Allows the Bitwarden Accessibility Service to display a popup when login fields are selected.
- If turned on, the Bitwarden Accessibility Service will display a popup when login fields are selected to assist with auto-filling your logins.
+ Se estiver ativado, o Serviço de acessibilidade do Bitwarden apresentará um pop-up quando os campos de início de sessão forem selecionados para ajudar no preenchimento automático dos seus inícios de sessão.
If turned on, accessibility will show a popup to augment the Autofill Service for older apps that don't support the Android Autofill Framework.
@@ -2089,7 +2089,7 @@ Scanning will happen automatically.
Captcha failed. Please try again.
- Palavra-passe Mestra Atualizada
+ Palavra-passe mestra atualizada
Update master password
@@ -2155,7 +2155,7 @@ Scanning will happen automatically.
One or more organization policies prevents your from exporting your individual vault.
- Adicionar Conta
+ Adicionar conta
Desbloqueado
@@ -2164,13 +2164,13 @@ Scanning will happen automatically.
Bloqueado
- Sessão Terminada
+ Sessão terminada
- Alterada para a próxima conta disponível
+ Alterada para a conta seguinte disponível
- Conta Bloqueada
+ Conta bloqueada
Sessão terminada com sucesso
@@ -2215,10 +2215,10 @@ Scanning will happen automatically.
A verificar
- Reenviar Código
+ Reenviar código
- Um código de verificação foi enviado para o seu e-mail
+ Foi enviado um código de verificação para o seu e-mail
Ocorreu um erro ao enviar um código de verificação para o seu e-mail. Por favor, tente novamente
@@ -2239,13 +2239,13 @@ Scanning will happen automatically.
Options are collapsed, tap to expand.
- Uppercase (A to Z)
+ Maiúsculas (A-Z)
- Lowercase (A to Z)
+ Minúsculas (a-z)
- Numbers (0 to 9)
+ Números (0-9)
Special characters (!@#$%^&*)
@@ -2263,7 +2263,7 @@ Scanning will happen automatically.
Filtrar itens por cofre
- Todos os Cofres
+ Todos os cofres
Cofres
@@ -2366,19 +2366,19 @@ select Add TOTP to store the key safely
Aprovar pedidos de início de sessão
- Utilize este dispositivo para aprovar pedidos de inícios de sessão feitos a partir de outros dispositivos.
+ Utilize este dispositivo para aprovar pedidos de início de sessão efetuados a partir de outros dispositivos.
Permitir notificações
- Receber notificações para novos pedidos de início de sessão
+ Receber notificações push de novos pedidos de início de sessão
Não, obrigado
- Confirmar tentativa de início de sessão para {0}
+ Confirmar tentativa de início de sessão de {0}
Todas as notificações
@@ -2387,7 +2387,7 @@ select Add TOTP to store the key safely
Password type
- What would you like to generate?
+ O que é que gostaria de gerar?
Tipo de nome de utilizador
@@ -2490,7 +2490,7 @@ select Add TOTP to store the key safely
Deseja mudar para esta conta?
- Novo por aqui?
+ É novo por cá?
Obter dica da palavra-passe mestra
@@ -2544,13 +2544,13 @@ Deseja mudar para esta conta?
No pending requests
- Ative a permissão da câmara para usar o digitalizador
+ Ative a permissão da câmara para utilizar o digitalizador
Idioma
- O idioma foi alterado para {0}. Por favor, reinicie a aplicação para ver a alteração
+ O idioma foi alterado para {0}. Por favor, reinicie a aplicação para ver as alterações
A alteração do idioma requer o reinício da aplicação
diff --git a/src/App/Resources/AppResources.ta.resx b/src/App/Resources/AppResources.ta.resx
index 21aada232..3594b496d 100644
--- a/src/App/Resources/AppResources.ta.resx
+++ b/src/App/Resources/AppResources.ta.resx
@@ -190,7 +190,7 @@
Full label for a email address.
- எங்களுக்கு மின்னஞ்சலிடு
+ எமக்கு மின்னஞ்சலிடு
நேரடியாக உதவி பெற அ கருத்து தெரிவிக்க எங்களுக்கு மின்னஞ்சலிடு
@@ -229,7 +229,7 @@
கோப்புறைகள்
- கோப்புறை புதுப்பிக்கப்பட்டது.
+ கோப்புறை சேமிக்கப்பட்டது
வலைத்தளத்திற்குச் செல்
@@ -342,7 +342,7 @@
Reveal a hidden value (password).
- உருப்படி நீக்கப்பட்டது.
+ உருப்படி நீக்கப்பட்டது
Confirmation message after successfully deleting a login.
@@ -364,7 +364,7 @@
Label for a uri/url.
- கைரேகையைப் பயன்படுத்தி பூட்டவிழ்
+ கைரேகை பயன்படுத்தி பூட்டவிழ்
பயனர்பெயர்
@@ -375,7 +375,7 @@
Validation message for when a form field is left blank and is required to be entered.
- {0} நகலெடுக்கப்பட்டது.
+ {0} நகலெடுக்கப்பட்டது
Confirmation message after successfully copying a value to the clipboard.
@@ -431,7 +431,7 @@
Bitwarden செயலி நீட்டிப்பு
- உங்கள் பெட்டகத்திற்கு புதிய உள்நுழைவுகளைச் சேர்ப்பதற்கான மிக எளிய வழி பிட்வார்டன் செயலி நீட்டிப்பு மூலமே. "அமைப்புகள்" திரைக்கு செல்வதன் மூலம் பிட்வார்டன் செயலி நீட்டிப்பைப் பயன்படுத்துவது பற்றி மேலுமறிக.
+ உம் பெட்டகத்திற்கு புதிய உள்நுழைவுகளைச் சேர்ப்பதற்கான மிக எளிய வழி பிட்வார்டன் செயலி நீட்டிப்பிலிருந்தே. "அமைப்புகள்" திரைக்குச் சென்று பிட்வார்டன் செயலி நீட்டிப்பைப் பயன்படுத்துவது பற்றி மேலுமறிக.
Safari மற்றும் பிற செயலிகளில் உமது உள்நுழைவுகளைத் தன்னிரப்ப Bitwardenஐப் பயன்படுத்து.
@@ -461,7 +461,7 @@
தொடர்
- கணக்கு உருவாக்கு
+ கணக்கை உருவாக்கு
கணக்கை உருவாக்குகிறது...
@@ -471,7 +471,7 @@
உருப்படியைத் திருத்து
- தானியங்கு ஒத்திசைவை இயக்கு
+ தானியங்கு ஒத்திசைவை அனுமதி
உமது பிரதான கடவுச்சொல் குறிப்பைப் பெற உமது கணக்கு மின்னஞ்சல் முகவரியை உள்ளிடு.
@@ -529,7 +529,7 @@
உங்கள் உருப்படிகளை மற்ற கடவுச்சொல் நிர்வாக செயலிகளிலிருந்து விரைவாக மொத்த இறக்குமதி செய்க.
- கடந்த ஒத்திசைவு:
+ கடந்த ஒத்திசைவு:
நீளம்
@@ -1580,20 +1580,20 @@
'Nord' is the name of a specific color scheme. It should not be translated.
- Solarized Dark
+ சோலரைஸ்டு இருள்
'Solarized Dark' is the name of a specific color scheme. It should not be translated.
- Auto-fill blocked URIs
+ தடுக்கப்பட்ட உரலிகளைத் தன்னிரப்பு
- Auto-fill will not be offered for blocked URIs. Separate multiple URIs with a comma. For example: "https://twitter.com, androidapp://com.twitter.android".
+ தடுக்கப்பட்ட உரலிகளுக்கு தன்னிரப்பல் அளிக்கப்படா. பல உரலிகள் காற்புள்ளியுடன் பிரிக்கவும். எ.கா:"https://twitter.com, androidapp://com.twitter.android".
உள்நுழைவைச் சேர்க்க கேள்
- Ask to add an item if one isn't found in your vault.
+ உமது பெட்டகத்தில் உருப்படி இல்லையெனில் சேர்க்க கேள்.
செயலி மறுதொடக்கத்தில்
@@ -1754,7 +1754,7 @@
Confirmation alert message when soft-deleting a cipher.
- Biometric unlock for this account is disabled pending verification of master password.
+ இக்கணக்கிற்கான உயிரியளவு பூட்டவிழ்த்தல் முடக்கப்பட்டது பிரதான கடவுச்சொல் சரிபார்ப்பு நிலுவையிலுள்ளது.
Autofill biometric unlock for this account is disabled pending verification of master password.
@@ -2144,10 +2144,10 @@
உம் நிறுவன கொள்கைகள் உம் பெட்டக நேரமுடிவைப் பாதிக்கிறது. அனுமதிக்கப்பட்ட அதிகபட்ச பெட்டக நேரமுடிவு {0} மணிநேரம் மற்றும் {1} நிமிடம(கள்) ஆகும்
- Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is {0} hour(s) and {1} minute(s). Your vault timeout action is set to {2}.
+ உம் நிறுவன கொள்கைகள் உம் பெட்டக நேரமுடிவைப் பாதிக்கிறது. அனுமதிக்கப்பட்ட அதிகபட்ச பெட்டக நேரமுடிவு {0} மணிநேரம் மற்றும் {1} நிமிடம(கள்) ஆகும். உம் பெட்டக நேரமுடிவுச் செயல் {2} என அமைக்கப்ப்பட்டுள்ளது.
- Your organization policies have set your vault timeout action to {0}.
+ உம் நிறுவன கொள்கைகள் உம் பெட்டக நேரமுடிவு செயலை {0} என அமைத்துள்ளன.
உமது பெட்டக நேரமுடிவு உம் நிறுவனம் அமைத்த கட்டுப்பாடுகளை தாண்டுகிறது.
@@ -2231,7 +2231,7 @@
சிதைவுக்குறிப்புகளைச் சமர்ப்பி
- Help Bitwarden improve app stability by submitting crash reports.
+ சிதைவு அறிக்கைகளைச் சமர்ப்பித்துச் செயலி உறுதிநிலையை மேம்படுத்த Bitwardenக்கு உதவுக.
தெரிவுகள் விரிவாகின, சுருக்கத் தட்டு.
@@ -2279,25 +2279,25 @@
TOTP
- Verification codes
+ சரிபார்ப்பு குறியீடுகள்
- Premium subscription required
+ உயர்தரச் சந்தா தேவை
- Cannot add authenticator key?
+ அங்கீகரிப்பான் விசையைச் சேர்க்க முடியவில்லையா?
- Scan QR Code
+ விரைவுக்குறியை வருடு
- Cannot scan QR Code?
+ விரைவுக்குறியை வருட முடியவில்லையா?
- Authenticator key
+ அங்கீகரிப்பான் விசை
- Enter key manually
+ கைமுறையாக விசையை உள்ளிடு
Add TOTP
@@ -2494,10 +2494,10 @@ select Add TOTP to store the key safely
New around here?
- Get master password hint
+ பிரதான கடவுச்சொல் குறிப்பைப் பெறு
- Logging in as {0} on {1}
+ {1} இல் {0} ஆக உள்நுழைகிறது
நீங்கள் இல்லையா?
@@ -2611,19 +2611,19 @@ select Add TOTP to store the key safely
There are no items that match the search
- US
+ அமெரிக்க ஐக்கிய நாடுகள்
- EU
+ ஐரோப்பிய ஒன்றியம்
Self-hosted
- Data region
+ தரவு இடம்
- Region
+ இடம்
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/store/apple/pt-PT/copy.resx b/store/apple/pt-PT/copy.resx
index 66aad239b..277d5dce4 100644
--- a/store/apple/pt-PT/copy.resx
+++ b/store/apple/pt-PT/copy.resx
@@ -164,7 +164,7 @@ Secure and share sensitive data within your Bitwarden Vault from any browser, mo
Proteja o seu cofre com Touch ID, código PIN, ou palavra-passe mestra
- Auto-preencha credenciais do Safari, Chrome, e centenas de outras aplicações
+ Preenchimento automático de inícios de sessão no Safari, Chrome e centenas de outras aplicações
Sincronize e aceda ao seu cofre através de múltiplos dispositivos
diff --git a/store/google/pt-PT/copy.resx b/store/google/pt-PT/copy.resx
index 4095e8f8a..c8106a026 100644
--- a/store/google/pt-PT/copy.resx
+++ b/store/google/pt-PT/copy.resx
@@ -161,13 +161,13 @@ Secure and share sensitive data within your Bitwarden Vault from any browser, mo
Gira todas as suas credenciais e palavras-passe a partir de um cofre seguro
- Gira automaticamente palavras-passe fortes, aleatórias e seguras
+ Gera automaticamente palavras-passe fortes, aleatórias e seguras
Proteja o seu cofre com impressão digital, código PIN, ou palavra-passe mestra
- Auto-preencha rapidamente credenciais a partir do seu navegador web e outras aplicações
+ Preencher rapidamente os inícios de sessão de forma automática a partir do seu navegador web e de outras aplicações
Sincronize e aceda ao seu cofre a partir de múltiplos dispositivos
From e78833cbcbba54ffa92daf5bab0724104c4a71a9 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 31 May 2023 09:33:47 -0400
Subject: [PATCH 08/33] Bumped version to 2023.5.0 (#2553)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
---
src/Android/Properties/AndroidManifest.xml | 2 +-
src/iOS.Autofill/Info.plist | 2 +-
src/iOS.Extension/Info.plist | 2 +-
src/iOS.ShareExtension/Info.plist | 2 +-
src/iOS/Info.plist | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/Android/Properties/AndroidManifest.xml b/src/Android/Properties/AndroidManifest.xml
index 5e0839872..67cfb1652 100644
--- a/src/Android/Properties/AndroidManifest.xml
+++ b/src/Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/src/iOS.Autofill/Info.plist b/src/iOS.Autofill/Info.plist
index c5466ecfb..2f9d98cbd 100644
--- a/src/iOS.Autofill/Info.plist
+++ b/src/iOS.Autofill/Info.plist
@@ -11,7 +11,7 @@
CFBundleIdentifier
com.8bit.bitwarden.autofill
CFBundleShortVersionString
- 2023.4.1
+ 2023.5.0
CFBundleVersion
1
CFBundleLocalizations
diff --git a/src/iOS.Extension/Info.plist b/src/iOS.Extension/Info.plist
index 0d913e4b2..5408b7a2d 100644
--- a/src/iOS.Extension/Info.plist
+++ b/src/iOS.Extension/Info.plist
@@ -11,7 +11,7 @@
CFBundleIdentifier
com.8bit.bitwarden.find-login-action-extension
CFBundleShortVersionString
- 2023.4.1
+ 2023.5.0
CFBundleLocalizations
en
diff --git a/src/iOS.ShareExtension/Info.plist b/src/iOS.ShareExtension/Info.plist
index d86024116..4ece99627 100644
--- a/src/iOS.ShareExtension/Info.plist
+++ b/src/iOS.ShareExtension/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
XPC!
CFBundleShortVersionString
- 2023.4.1
+ 2023.5.0
CFBundleVersion
1
MinimumOSVersion
diff --git a/src/iOS/Info.plist b/src/iOS/Info.plist
index 256054ab5..b25a764ad 100644
--- a/src/iOS/Info.plist
+++ b/src/iOS/Info.plist
@@ -11,7 +11,7 @@
CFBundleIdentifier
com.8bit.bitwarden
CFBundleShortVersionString
- 2023.4.1
+ 2023.5.0
CFBundleVersion
1
CFBundleIconName
From bebf23785d2b4d8cab49eaf20fba0e2d91840561 Mon Sep 17 00:00:00 2001
From: Federico Maccaroni
Date: Thu, 1 Jun 2023 10:35:35 +0300
Subject: [PATCH 09/33] PM-2232 Fix api response not being read as string
because the content was not being considered json when it was indeed. Now
Netacea messages are shown on the UI. (#2541)
---
src/Core/Services/ApiService.cs | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/Core/Services/ApiService.cs b/src/Core/Services/ApiService.cs
index 436916aff..dde3b9505 100644
--- a/src/Core/Services/ApiService.cs
+++ b/src/Core/Services/ApiService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
@@ -975,7 +976,19 @@ namespace Bit.Core.Services
private bool IsJsonResponse(HttpResponseMessage response)
{
- return (response.Content?.Headers?.ContentType?.MediaType ?? string.Empty) == "application/json";
+ if (response.Content?.Headers is null)
+ {
+ return false;
+ }
+
+ if (response.Content.Headers.ContentType?.MediaType == "application/json")
+ {
+ return true;
+ }
+
+ return response.Content.Headers.TryGetValues("Content-Type", out var vals)
+ &&
+ vals?.Any(v => v.Contains("application/json")) is true;
}
#endregion
From 7cd40d4d89e6eb7574583a449f0fe37761598dd4 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 1 Jun 2023 12:18:12 -0400
Subject: [PATCH 10/33] Bumped version to 2023.5.1 (#2554)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
---
src/Android/Properties/AndroidManifest.xml | 2 +-
src/iOS.Autofill/Info.plist | 2 +-
src/iOS.Extension/Info.plist | 2 +-
src/iOS.ShareExtension/Info.plist | 2 +-
src/iOS/Info.plist | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/Android/Properties/AndroidManifest.xml b/src/Android/Properties/AndroidManifest.xml
index 67cfb1652..77372ff73 100644
--- a/src/Android/Properties/AndroidManifest.xml
+++ b/src/Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/src/iOS.Autofill/Info.plist b/src/iOS.Autofill/Info.plist
index 2f9d98cbd..00d9aeca6 100644
--- a/src/iOS.Autofill/Info.plist
+++ b/src/iOS.Autofill/Info.plist
@@ -11,7 +11,7 @@
CFBundleIdentifier
com.8bit.bitwarden.autofill
CFBundleShortVersionString
- 2023.5.0
+ 2023.5.1
CFBundleVersion
1
CFBundleLocalizations
diff --git a/src/iOS.Extension/Info.plist b/src/iOS.Extension/Info.plist
index 5408b7a2d..ee48ccdf5 100644
--- a/src/iOS.Extension/Info.plist
+++ b/src/iOS.Extension/Info.plist
@@ -11,7 +11,7 @@
CFBundleIdentifier
com.8bit.bitwarden.find-login-action-extension
CFBundleShortVersionString
- 2023.5.0
+ 2023.5.1
CFBundleLocalizations
en
diff --git a/src/iOS.ShareExtension/Info.plist b/src/iOS.ShareExtension/Info.plist
index 4ece99627..4e2ed6ff9 100644
--- a/src/iOS.ShareExtension/Info.plist
+++ b/src/iOS.ShareExtension/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
XPC!
CFBundleShortVersionString
- 2023.5.0
+ 2023.5.1
CFBundleVersion
1
MinimumOSVersion
diff --git a/src/iOS/Info.plist b/src/iOS/Info.plist
index b25a764ad..1dd43ff9f 100644
--- a/src/iOS/Info.plist
+++ b/src/iOS/Info.plist
@@ -11,7 +11,7 @@
CFBundleIdentifier
com.8bit.bitwarden
CFBundleShortVersionString
- 2023.5.0
+ 2023.5.1
CFBundleVersion
1
CFBundleIconName
From 8bc2df6c8afb723d39c72163f08ef0f4bf191433 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Sun, 4 Jun 2023 16:23:34 +0200
Subject: [PATCH 11/33] Autosync the updated translations (#2555)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
---
src/App/Resources/AppResources.af.resx | 18 +-
src/App/Resources/AppResources.el.resx | 4 +-
src/App/Resources/AppResources.pt-PT.resx | 242 +++++++++++-----------
src/App/Resources/AppResources.sl.resx | 44 ++--
store/apple/af/copy.resx | 3 +-
store/apple/pt-PT/copy.resx | 12 +-
store/google/af/copy.resx | 3 +-
store/google/pt-PT/copy.resx | 12 +-
8 files changed, 170 insertions(+), 168 deletions(-)
diff --git a/src/App/Resources/AppResources.af.resx b/src/App/Resources/AppResources.af.resx
index e793cbd82..5040fcc0b 100644
--- a/src/App/Resources/AppResources.af.resx
+++ b/src/App/Resources/AppResources.af.resx
@@ -1753,10 +1753,10 @@ Skandering gebeur outomaties.
Confirmation alert message when soft-deleting a cipher.
- Biometric unlock for this account is disabled pending verification of master password.
+ Biometriese ontgrendeling vir hierdie rekening is gedeaktiveer hangende bevestiging van hoofwagwoord.
- Autofill biometric unlock for this account is disabled pending verification of master password.
+ Outovul-biometriese ontgrendeline vir hierdie rekening is gedeaktiveer hangende bevestiging van hoofwagwoord.
Aktiveer sinchronisering by verfrissing
@@ -2496,7 +2496,7 @@ Wil u na die rekening omskakel?
Kry hoofwagwoord wenk
- Logging in as {0} on {1}
+ Teken aan as {0} op {1}
Nie jy nie?
@@ -2610,24 +2610,24 @@ Wil u na die rekening omskakel?
Daar is geen items wat met die soekterm ooreenstem nie
- US
+ VS
EU
- Self-hosted
+ Selghehuisves
- Data region
+ Datastreek
- Region
+ Streek
- Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
+ U hoofwagwoord voldoen nie aan een of meer van die organisasiebeleide nie. Om toegang tot die kluis te kry, moet u nou u hoofwagwoord bywerk. Deur voort te gaan sal u van u huidige sessie afgeteken word, en u sal weer moet aanteken. Aktiewe sessies op ander toestelle kan vir tot een uur aktief bly.
- Current master password
+ Huidige hoofwagwoord
diff --git a/src/App/Resources/AppResources.el.resx b/src/App/Resources/AppResources.el.resx
index b18910bf0..909df12de 100644
--- a/src/App/Resources/AppResources.el.resx
+++ b/src/App/Resources/AppResources.el.resx
@@ -2496,7 +2496,7 @@
Λάβετε υπόδειξη κύριου κωδικού
- Logging in as {0} on {1}
+ Σύνδεση ως {0} στις {1}
Δεν είστε εσείς;
@@ -2622,7 +2622,7 @@
Data region
- Region
+ Περιοχή
Ο κύριος κωδικός πρόσβασής σας δεν πληροί μία ή περισσότερες πολιτικές του οργανισμού σας. Για να αποκτήσετε πρόσβαση στο Vault σας, πρέπει να ενημερώσετε τον κύριο κωδικό πρόσβασής σας τώρα. Η διαδικασία θα σας αποσυνδέσει από την τρέχουσα συνεδρία σας, απαιτώντας από εσάς να συνδεθείτε ξανά. Οι ενεργές συνεδρίες σε άλλες συσκευές ενδέχεται να συνεχίσουν να είναι ενεργές εώς και μία ώρα.
diff --git a/src/App/Resources/AppResources.pt-PT.resx b/src/App/Resources/AppResources.pt-PT.resx
index f203f407e..77e76b9f6 100644
--- a/src/App/Resources/AppResources.pt-PT.resx
+++ b/src/App/Resources/AppResources.pt-PT.resx
@@ -118,7 +118,7 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- Acerca
+ Acerca de
Adicionar
@@ -182,7 +182,7 @@
Editar pasta
- Email
+ E-mail
Short label for an email address.
@@ -193,7 +193,7 @@
Enviar-nos um e-mail
- Envie-nos um email diretamente para obter ajuda ou deixar feedback.
+ Envie-nos um e-mail diretamente para obter ajuda ou deixar feedback.
Introduza o seu código PIN.
@@ -243,7 +243,7 @@
Hide a secret value that is currently shown (password).
- Por favor ligue-se à internet antes de continuar.
+ Por favor, ligue-se à Internet antes de continuar.
Description message for the alert when internet connection is required to continue.
@@ -371,7 +371,7 @@
Label for a username.
- O campo {0} é requerido.
+ O campo {0} é necessário.
Validation message for when a form field is left blank and is required to be entered.
@@ -397,10 +397,10 @@
Visite o nosso site
- Visite o nosso website para obter ajuda, notícias, enviar-nos um email, e/ou saber mais acerca de como utilizar o Bitwarden.
+ Visite o nosso site para obter ajuda, notícias, enviar-nos um e-mail e/ou saber mais sobre como usar o Bitwarden.
- Website
+ Site
Label for a website.
@@ -410,7 +410,7 @@
Conta
- A sua nova conta foi criada! Agora pode iniciar sessão.
+ A sua nova conta foi criada! Pode agora iniciar sessão.
Adicionar um item
@@ -446,13 +446,13 @@
Alterar e-mail
- Pode alterar o seu endereço de email no cofre web bitwarden.com. Pretende visitar o website agora?
+ Pode alterar o seu endereço de e-mail no cofre do site bitwarden.com. Deseja visitar o site agora?
Alterar palavra-passe mestra
- Pode alterar a sua palavra-passe mestra no cofre web bitwarden.com. Pretende visitar o website agora?
+ Pode alterar o seu endereço de e-mail no cofre do site bitwarden.com. Deseja visitar o site agora?
Fechar
@@ -474,19 +474,19 @@
Permitir a sincronização automática
- Introduza o endereço de email da sua conta para receber a dica da sua palavra-passe mestra.
+ Introduza o endereço de e-mail da sua conta para receber a dica da sua palavra-passe mestra.
Reativar a extensão da aplicação
- Quase feito!
+ Quase pronto!
Ativar a extensão da aplicação
- No Safari, encontre o Bitwarden utilizando o ícone de partilha (dica: role para a direita na linha de fundo do menu de partilha).
+ No Safari, encontre o Bitwarden utilizando o ícone de partilha (dica: deslize para a direita na linha inferior do menu).
Safari is the name of apple's web browser
@@ -496,16 +496,16 @@
Está pronto para iniciar sessão!
- As suas credenciais estão agora facilmente acessíveis a partir do Safari, Chrome, e outras aplicações suportadas.
+ Os seus inícios de sessão estão agora facilmente acessíveis a partir do Safari, Chrome, e outras aplicações suportadas.
- No Safari e Chrome, encontre o Bitwarden utilizando o ícone de partilha (dica: desloque para a direita na linha de fundo do menu de partilha).
+ No Safari e no Chrome, encontre o Bitwarden utilizando o ícone de partilha (dica: deslize para a direita na linha inferior do menu de partilha).
Toque no ícone do Bitwarden no menu para iniciar a extensão.
- Para ligar o Bitwarden no Safari e outras aplicações, toque no ícone "mais" na linha de fundo do menu.
+ Para ativar o Bitwarden no Safari e noutras aplicações, toque no ícone "mais" na linha inferior do menu.
Favorito
@@ -523,10 +523,10 @@
Importar itens
- Pode importar em massa os seus itens a partir do cofre web bitwarden.com. Pretende visitar o website agora?
+ Pode importar itens em massa do cofre da web bitwarden.com. Deseja visitar o site agora?
- Importe rapidamente em massa os seus itens de outras aplicações de gestão de palavras-passe.
+ Importe rapidamente e em massa os seus itens de outras aplicações de gestão de palavras-passe.
Última sincronização:
@@ -559,7 +559,7 @@
Ação de expiração do cofre
- Terminar sessão irá remover todos os acessos ao seu cofre e requer autenticação online após o período de expiração. Tem a certeza de que pretende utilizar esta definição?
+ Ao terminar sessão removerá todo o acesso ao seu cofre e requer autenticação online após o período de tempo limite. Tem a certeza de que pretende utilizar esta definição?
A iniciar sessão...
@@ -575,7 +575,7 @@
A confirmação da palavra-passe não está correta.
- A palavra-passe mestra é a palavra-passe que utiliza para aceder ao seu cofre. É muito importante que não se esqueça da sua palavra-passe mestra. Não existe maneira de recuperar a palavra-passe no caso de a esquecer.
+ A palavra-passe mestra é a palavra-passe que utiliza para aceder ao seu cofre. É muito importante que não se esqueça da sua palavra-passe mestra. Não há forma de recuperar a palavra-passe no caso de a esquecer.
Dica da palavra-passe mestra (opcional)
@@ -613,17 +613,17 @@
Não existem itens no seu cofre.
- Não existem itens no seu cofre para este website/aplicação. Toque para adicionar um.
+ Não existem itens no seu cofre para este site/aplicação. Toque para adicionar um.
- Esta credencial não tem um nome de utilizador ou palavra passe configurados.
+ Este início de sessão não tem um nome de utilizador ou palavra-passe configurados.
- Ok, entendi!
+ Ok, entendido!
Confirmation, like "Ok, I understand it"
- Predefinições de opções são definidas a partir da ferramenta de geração de palavras-passe da aplicação principal Bitwarden.
+ As predefinições das opções são definidas a partir da ferramenta principal de geração de palavras-passe da aplicação Bitwarden.
Opções
@@ -641,10 +641,10 @@
Dica da palavra-passe
- Enviámos-lhe um email com a dica da sua palavra-passe mestra.
+ Enviámos-lhe um e-mail com a dica da sua palavra-passe mestra.
- Tem a certeza de que pretende sobreescrever a palavra-passe atual?
+ Tem a certeza de que pretende substituir a palavra-passe atual?
O Bitwarden mantém o seu cofre sincronizado automaticamente através de notificações push. Para obter a melhor experiência possível, selecione "Permitir" na seguinte mensagem quando lhe for pedido para permitir notificações push.
@@ -730,7 +730,7 @@
Cofre web Bitwarden
- Perdeu a aplicação do autenticador?
+ Perdeu a aplicação de autenticação?
Itens
@@ -802,7 +802,7 @@
Possíveis itens correspondentes
- Pesquisar
+ Procurar
Está à procura de um item de preenchimento automático para "{0}".
@@ -819,11 +819,11 @@
For 2FA
- Introduza o código de verificação de 6 dígitos da sua aplicação de autenticador.
+ Introduza o código de verificação de 6 dígitos da sua aplicação de autenticação.
For 2FA
- Introduza o código de verificação de 6 dígitos que foi enviado por email para {0}.
+ Introduza o código de verificação de 6 dígitos que foi enviado por e-mail para {0}.
For 2FA
@@ -831,7 +831,7 @@
For 2FA whenever there are no available providers on this device.
- Esta conta tem a verificação de dois passos configurada, no entanto, nenhum dos fornecedores de dois passos configurados é suportado neste dispositivo. Utilize um dispositivo suportado e/ou adicione fornecedores adicionais que sejam mais bem suportados nos dispositivos (como uma aplicação de autenticação).
+ Esta conta tem a verificação de dois passos configurada, no entanto, nenhum dos fornecedores da verificação de dois passos configurada é suportado neste dispositivo. Utilize um dispositivo suportado e/ou adicione fornecedores adicionais que sejam mais bem suportados nos dispositivos (como uma aplicação de autenticação).
Código de recuperação
@@ -852,7 +852,7 @@
Utilizar outro método de verificação de dois passos
- Não foi possível enviar o email de verificação. Tente novamente.
+ Não foi possível enviar o e-mail de verificação. Tente novamente.
For 2FA
@@ -873,17 +873,17 @@
Anexos
- Não foi possível descarregar o ficheiro.
+ Não foi possível transferir o ficheiro.
O seu dispositivo não consegue abrir este tipo de ficheiro.
- A descarregar...
+ A transferir...
Message shown when downloading a file
- O anexo tem {0} de tamanho. Tem a certeza que deseja descarregá-lo para o seu dispositivo?
+ O anexo tem {0} de tamanho. Tem a certeza que deseja transferi-lo para o seu dispositivo?
The placeholder will show the file size of the attachment. Ex "25 MB"
@@ -897,11 +897,11 @@
Chave de autenticador adicionada.
- Não é possível ler a chave de autenticador.
+ Não é possível ler a chave de autenticação.
- Point your camera at the QR Code.
-Scanning will happen automatically.
+ Aponte a sua câmara para o código QR.
+A leitura será efetuada automaticamente.
Digitalizar código QR
@@ -922,7 +922,7 @@ Scanning will happen automatically.
Copy TOTP automatically
- É requerida uma adesão premium para utilizar esta funcionalidade.
+ É necessária uma subscrição Premium para utilizar esta funcionalidade.
Anexo adicionado
@@ -943,7 +943,7 @@ Scanning will happen automatically.
Não existem anexos.
- Fonte de ficheiro
+ Fonte do ficheiro
Funcionalidade indisponível
@@ -1014,19 +1014,19 @@ Scanning will happen automatically.
Identidade
- Credencial
+ Início de sessão
Nota segura
- Endereço 1
+ 1.ª morada
- Endereço 2
+ 2.ª morada
- Endereço 3
+ 3.ª morada
Abril
@@ -1041,7 +1041,7 @@ Scanning will happen automatically.
Nome do titular do cartão
- Cidade / localidade
+ Cidade / Localidade
Empresa
@@ -1053,19 +1053,19 @@ Scanning will happen automatically.
Dezembro
- Dr
+ Dr.
- Mês de expiração
+ Mês de validade
- Ano de expiração
+ Ano de validade
Fevereiro
- Primeiro nome
+ Nome próprio
Janeiro
@@ -1077,7 +1077,7 @@ Scanning will happen automatically.
Junho
- Último nome
+ Apelido
Nome completo
@@ -1092,16 +1092,16 @@ Scanning will happen automatically.
Maio
- Nome do meio
+ Segundo nome
- Sr
+ Sr.
- Sra
+ Sra.
- Sra
+ Sra.
Mx
@@ -1125,7 +1125,7 @@ Scanning will happen automatically.
Número de segurança social
- Estado / província
+ Estado / Província
Título
@@ -1134,7 +1134,7 @@ Scanning will happen automatically.
Código postal
- Endereço
+ Morada
Expiração
@@ -1179,7 +1179,7 @@ Scanning will happen automatically.
Utilize o serviço de preenchimento automático do Bitwarden para preencher informações de início de sessão noutras aplicações.
- Abrir definições de auto-preenchimento
+ Abrir definições de preenchimento automático
Face ID
@@ -1198,7 +1198,7 @@ Scanning will happen automatically.
Windows Hello
- Não conseguimos abrir automaticamente o menu de definições de auto-preenchimento do Android por si. Pode navegar até ao menu de definições de auto-preenchimento manualmente a partir de Definições do Android > Sistema > Idiomas e introdução > Avançado > Serviço de auto-preenchimento.
+ Não foi possível abrir automaticamente o menu de definições de preenchimento automático do Android. Pode navegar manualmente para o menu de definições de preenchimento automático a partir das Definições do Android > Sistema > Idiomas e introdução > Avançado > Serviço de preenchimento automático.
Nome do campo personalizado
@@ -1285,38 +1285,38 @@ Scanning will happen automatically.
ex. Date this password was updated
- Atualizado
+ Atualizado a
ex. Date this item was updated
- Auto-preenchimento ativado!
+ Preenchimento automático ativado!
- Tem de iniciar sessão na aplicação Bitwarden principal antes de poder utilizar auto-preenchimento.
+ Tem de iniciar sessão na aplicação Bitwarden principal antes de poder utilizar o preenchimento automático.
- As suas credenciais estão agora facilmente acessíveis a partir do seu teclado ao iniciar sessão em aplicações e websites.
+ Os seus inícios de sessão estão agora facilmente acessíveis a partir do seu teclado ao iniciar sessão em aplicações e sites.
- Recomendamos desativar quaisquer outras aplicações de auto-preenchimento nas Definições se não as planeia utilizar.
+ Recomendamos a desativação de quaisquer outras aplicações de preenchimento automático nas Definições, se não tencionar utilizá-las.
- Aceda ao seu cofre diretamente a partir do seu teclado para rapidamente auto-preencher palavras-passe.
+ Aceda ao seu cofre diretamente a partir do seu teclado para preencher rapidamente as palavras-passe automaticamente.
Para configurar o preenchimento automático de palavras-passe no seu dispositivo, siga estas instruções:
- 1. Vá à aplicação iOS "Definições"
+ 1. Vá à aplicação "Definições" do iOS
2. Toque em "Palavras-passe e contas"
- 3. Toque em "auto-preencher palavras-passe"
+ 3. Toque em "Autopreenchimento de palavras-passe"
- 4. Ligue o auto-preenchimento
+ 4. Ligue o Autopreenchimento
5. Selecione "Bitwarden"
@@ -1325,10 +1325,10 @@ Scanning will happen automatically.
Preenchimento automático de palavras-passe
- A maneira mais fácil de adicionar novas credenciais ao seu cofre é ao utilizar a extensão de auto-preenchimento de palavras-passe do Bitwarden. Saiba mais acerca de como utilizar a extensão de auto-preenchimento de palavras-passe do Bitwarden ao navegar para o ecrã de "Definições".
+ A maneira mais fácil de adicionar novos inícios de sessão ao seu cofre é utilizando a extensão de preenchimento automático de palavras-passe do Bitwarden. Saiba mais sobre como utilizar a extensão de preenchimento automático de palavras-passe do Bitwarden ao navegar até ao ecrã "Definições".
- Endereço de email inválido.
+ Endereço de e-mail inválido.
Cartões
@@ -1337,7 +1337,7 @@ Scanning will happen automatically.
Identidades
- Credenciais
+ Inícios de sessão
Notas seguras
@@ -1354,13 +1354,13 @@ Scanning will happen automatically.
A loading message when doing an exposed password check.
- Verifica se a palavra-passe foi exposta.
+ Verificar se a palavra-passe foi exposta.
- Esta palavra-passe foi exposta {0} vez(es) em brechas de dados. Deve alterá-la.
+ Esta palavra-passe foi exposta {0} vez(es) em violações de dados. Deve alterá-la.
- Esta palavra-passe não foi encontrada em nenhuma brecha de dados conhecida. Esta deve ser segura de utilizar.
+ Esta palavra-passe não foi encontrada em nenhuma violação de dados conhecida. A sua utilização deve ser segura.
Nome de identidade
@@ -1381,7 +1381,7 @@ Scanning will happen automatically.
Não existem itens para listar.
- Pesquisar coleção
+ Procurar na coleção
Search file Sends
@@ -1403,7 +1403,7 @@ Scanning will happen automatically.
Mover para cima
- Miscelânea
+ Diversos
Propriedade
@@ -1437,13 +1437,13 @@ Scanning will happen automatically.
Nenhuma organização para listar.
- Choose an organization that you wish to move this item to. Moving to an organization transfers ownership of the item to that organization. You will no longer be the direct owner of this item once it has been moved.
+ Escolha uma organização para a qual pretende mover este item. Mover para uma organização transfere a propriedade do item para essa organização. Deixará de ser o proprietário directo deste item depois de este ter sido movido.
Número de palavras
- Frase-passe
+ Frase de acesso
Separador de palavras
@@ -1464,11 +1464,11 @@ Scanning will happen automatically.
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.
- A frase de impressão digital da sua conta
+ Frase da impressão digital da sua conta
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.
- Bitwarden allows you to share your vault items with others by using an organization account. Would you like to visit the bitwarden.com website to learn more?
+ O Bitwarden permite-lhe partilhar os itens do seu cofre com outros ao utilizar uma conta de organização. Gostaria de visitar o website bitwarden.com para saber mais?
Exportar cofre
@@ -1489,7 +1489,7 @@ Scanning will happen automatically.
30 minutos
- Defina o seu código PIN para desbloquear o Bitwarden. As suas definições PIN serão redefinidas se terminar sessão completamente da aplicação.
+ Defina o seu código PIN para desbloquear o Bitwarden. As suas definições de PIN serão redifinidas se alguma vez sair completamente da aplicação.
Sessão iniciada como {0} em {1}.
@@ -1499,7 +1499,7 @@ Scanning will happen automatically.
O seu cofre está bloqueado. Verifique a sua palavra-passe mestra para continuar.
- O seu cofre está bloqueado. Verifique o seu PIN para continuar.
+ O seu cofre está bloqueado. Verifique o seu código PIN para continuar.
Your vault is locked. Verify your identity to continue.
@@ -1532,7 +1532,7 @@ Scanning will happen automatically.
Clipboard is the operating system thing where you copy/paste data to on your device.
- Limpar automaticamente valores copiados da sua área de transferência.
+ Limpar automaticamente os valores copiados da sua área de transferência.
Clipboard is the operating system thing where you copy/paste data to on your device.
@@ -1547,7 +1547,7 @@ Scanning will happen automatically.
Color theme
- Altere o tema de cor da aplicação.
+ Alterar o tema de cores da aplicação.
Predefinido (Sistema)
@@ -1559,7 +1559,7 @@ Scanning will happen automatically.
Choose the dark theme to use when using Default (System) theme while your device's dark mode is in use.
- Copiar notas
+ Copiar nota
Sair
@@ -1568,7 +1568,7 @@ Scanning will happen automatically.
Tem a certeza de que deseja sair do Bitwarden?
- Pretende requerer desbloquear com a sua palavra-passe mestra quando a aplicação é reiniciada?
+ Pretende exigir o desbloqueio com a sua palavra-passe mestra quando a aplicação é reiniciada?
Preto
@@ -1579,7 +1579,7 @@ Scanning will happen automatically.
'Nord' is the name of a specific color scheme. It should not be translated.
- Escuro Solarizado
+ Solarized Dark
'Solarized Dark' is the name of a specific color scheme. It should not be translated.
@@ -1601,7 +1601,7 @@ Scanning will happen automatically.
O preenchimento automático facilita o acesso seguro ao seu cofre do Bitwarden a partir de outros sites e aplicações. Parece que o utilizador não configurou um serviço de preenchimento automático do Bitwarden. Configure o preenchimento automático do Bitwarden a partir do ecrã "Definições".
- As suas alterações de tema irão ser aplicadas quando a aplicação for reiniciada.
+ As alterações ao tema serão aplicadas quando a aplicação for reiniciada.
Capitalizar
@@ -1623,10 +1623,10 @@ Scanning will happen automatically.
A sua sessão expirou.
- Utilizar biometria para verificar.
+ Verificação biométrica
- Biométrica
+ Biometria
Utilizar biometria para desbloquear
@@ -1635,7 +1635,7 @@ Scanning will happen automatically.
O Bitwarden precisa de atenção - Veja o "Serviço de acessibilidade de preenchimento automático" nas definições do Bitwarden
- 3. No ecrã Definições da App para o Bitwarden no Android, vá às opções "Sobrepor a outras aplicações" (em Avançadas) e toque na opção para ativar o suporte de sobreposição.
+ 3. No ecrã Definições do Android, selecione "Sobrepor a outras aplicações" (em "Avançadas") para o Bitwarden e toque na opção para ativar o suporte à sobreposição.
Permissão
@@ -1644,7 +1644,7 @@ Scanning will happen automatically.
Abrir definições de permissões de sobreposição
- 3. No ecrã Definições da App para o Bitwarden no Android, selecione "Sobrepor a outras aplicações" (em "Avançadas") e toque na opção para ativar a sobreposição.
+ 3. No ecrã Definições do Android, selecione "Sobrepor a outras aplicações" (em "Avançadas") para o Bitwarden e toque na opção para ativar a sobreposição.
Negado
@@ -1653,7 +1653,7 @@ Scanning will happen automatically.
Concedido
- Formato do Ficheiro
+ Formato do ficheiro
Introduza a sua palavra-passe mestra para exportar os dados do seu cofre.
@@ -1668,23 +1668,23 @@ Scanning will happen automatically.
Confirm your identity to continue.
- Esta exportação contém os dados do seu cofre num formato desencriptado. Não deve armazenar ou enviar o ficheiro exportado através de canais inseguros (como o email). Elimine-o imediatamente quando terminar de o utilizar.
+ Esta exportação contém os dados do seu cofre num formato não encriptado. Não deve armazenar ou enviar o ficheiro exportado através de canais não seguros (como o e-mail). Elimine-o imediatamente após terminar a sua utilização.
- This export encrypts your data using your account's encryption key. If you ever rotate your account's encryption key you should export again since you will not be able to decrypt this export file.
+ Esta exportação encripta os seus dados utilizando a chave de encriptação da sua conta. Se alguma vez mudar a chave de encriptação da sua conta, deve exportar novamente, uma vez que não conseguirá desencriptar este ficheiro de exportação.
- Account encryption keys are unique to each Bitwarden user account, so you can't import an encrypted export into a different account.
+ As chaves de encriptação da conta são únicas para cada conta de utilizador Bitwarden, pelo que não é possível importar uma exportação encriptada para uma conta diferente.
- Confirmar exportação de cofre
+ Confirmar a exportação do cofre
Title for the alert to confirm vault exports.
Aviso
- Houve um problema a exportar o seu cofre. Se o problema persistir, irá necessitar de o exportar através do cofre web.
+ Ocorreu um problema ao exportar o seu cofre. Se o problema persistir, terá de exportar a partir do cofre web.
Cofre exportado com sucesso
@@ -1717,7 +1717,7 @@ Scanning will happen automatically.
Message shown when interacting with the server
- O item foi enviado para o lixo.
+ O item foi movido para o lixo.
Confirmation message after successfully soft-deleting a login
@@ -1729,7 +1729,7 @@ Scanning will happen automatically.
Message shown when interacting with the server
- O item foi restaurado.
+ Item restaurado
Confirmation message after successfully restoring a soft-deleted item
@@ -1737,7 +1737,7 @@ Scanning will happen automatically.
(noun) Location of deleted items which have not yet been permanently deleted
- Pesquisar lixo
+ Procurar no lixo
(action prompt) Label for the search text field when viewing the trash folder
@@ -1759,13 +1759,13 @@ Scanning will happen automatically.
Autofill biometric unlock for this account is disabled pending verification of master password.
- Ativar sincronização ao atualizar
+ Permitir a sincronização ao atualizar
Sincronizar o cofre com o gesto de deslizar para baixo.
- Início de Sessão Único da Empresa
+ Início de sessão único para empresas
Inicie sessão rapidamente utilizando o portal de início de sessão único da sua organização. Por favor, introduza o identificador da sua organização para começar.
@@ -1783,7 +1783,7 @@ Scanning will happen automatically.
Para concluir o início de sessão com SSO, por favor, defina uma palavra-passe mestra para aceder e proteger o seu cofre.
- Uma ou mais políticas da organização requerem que a sua palavra-passe mestra cumpra os seguintes requisitos:
+ Uma ou mais políticas da organização exigem que a sua palavra-passe mestra cumpra os seguintes requisitos:
Pontuação mínima de complexidade de {0}
@@ -1807,7 +1807,7 @@ Scanning will happen automatically.
Palavra-passe inválida
- Palavra-passe mestra não cumpre os requisitos da organização. Por favor verifique a informação da política e tente novamente.
+ A palavra-passe não corresponde aos requisitos da organização. Verifique as informações da política e tente novamente.
A carregar
@@ -1816,10 +1816,10 @@ Scanning will happen automatically.
Ao marcar esta caixa concorda com o seguinte:
- Os Termos de Serviço e a Política de Privacidade não foram aceites.
+ Os Termos de utilização e a Política de privacidade não foram aceites.
- Termos de serviço
+ Termos de utilização
Política de privacidade
@@ -1831,13 +1831,13 @@ Scanning will happen automatically.
Serviços de preenchimento automático
- Usar preenchimento automático
+ Utilizar o preenchimento automático em linha
Use inline autofill if your selected IME (keyboard) supports it. If your configuration is not supported (or this option is turned off), the default Autofill overlay will be used.
- Usar Acessibilidade
+ Utilizar a acessibilidade
Utilize o Serviço de acessibilidade do Bitwarden para preencher automaticamente os seus inícios de sessão em aplicações e na web. Quando configurado, exibiremos um pop-up quando os campos de início de sessão forem selecionados.
@@ -1917,13 +1917,13 @@ Scanning will happen automatically.
Text type is not selected, tap to select.
- Deletion date
+ Data de eliminação
Deletion time
- The Send will be permanently deleted on the specified date and time.
+ O Send será permanentemente eliminado na data e hora especificadas.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2021,7 +2021,7 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Send saved
+ Send guardado
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2062,7 +2062,7 @@ Scanning will happen automatically.
Hide my email address from recipients
- One or more organization policies are affecting your Send options.
+ Uma ou mais políticas da organização estão a afetar as suas opções do Send.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2092,10 +2092,10 @@ Scanning will happen automatically.
Palavra-passe mestra atualizada
- Update master password
+ Atualizar palavra-passe mestra
- Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
+ A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Se prosseguir, sairá da sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.
Updating password
@@ -2152,7 +2152,7 @@ Scanning will happen automatically.
Your vault timeout exceeds the restrictions set by your organization.
- One or more organization policies prevents your from exporting your individual vault.
+ Uma ou mais políticas da organização impedem-no de exportar o seu cofre pessoal.
Adicionar conta
@@ -2281,7 +2281,7 @@ Scanning will happen automatically.
Verification codes
- Premium subscription required
+ É necessária uma subscrição Premium
Cannot add authenticator key?
@@ -2440,7 +2440,7 @@ select Add TOTP to store the key safely
API access token
- Tem a certeza de que deseja sobrescrever o nome de utilizador atual?
+ Tem a certeza de que pretende substituir o nome de utilizador atual?
Gerar nome de utilizador
@@ -2470,10 +2470,10 @@ select Add TOTP to store the key safely
Conectar ao Relógio
- Divulgação do Serviço de Acessibilidade
+ Divulgação do serviço de acessibilidade
- O Bitwarden utiliza o Serviço de Acessibilidade na procura de campos de início de sessão em aplicações e sites, para que assim estabeleça os campos ID apropriados ao introduzir o nome de utilizador e palavra-passe assim que seja encontrada uma correspondência. Não armazenamos nenhuma das informações que nos são apresentadas pelo serviço, nem fazemos nenhuma tentativa de controlar quaisquer elementos no ecrã para além da introdução de credenciais de texto.
+ O Bitwarden utiliza o Serviço de acessibilidade para procurar campos de início de sessão em aplicações e sites e, em seguida, estabelece os IDs de campo adequados para introduzir um nome de utilizador e palavra-passe quando é encontrada uma correspondência para a aplicação ou site. Não armazenamos nenhuma das informações que nos são apresentadas pelo serviço, nem fazemos qualquer tentativa de controlar quaisquer elementos no ecrã para além da introdução de texto das credenciais.
Aceitar
@@ -2505,7 +2505,7 @@ Deseja mudar para esta conta?
Iniciar sessão com a palavra-passe mestra
- Iniciar sessão com outro dispositivo
+ Iniciar sessão com o dispositivo
Log in initiated
@@ -2625,7 +2625,7 @@ Deseja mudar para esta conta?
Região
- Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
+ A sua palavra-passe mestra não cumpre uma ou mais políticas da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Se prosseguir, sairá da sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.
Current master password
diff --git a/src/App/Resources/AppResources.sl.resx b/src/App/Resources/AppResources.sl.resx
index 86792ce78..2da8658a7 100644
--- a/src/App/Resources/AppResources.sl.resx
+++ b/src/App/Resources/AppResources.sl.resx
@@ -474,7 +474,7 @@
Omogoči samodejno sinhronizacijo
- Vnesite e-poštni naslov svojega računa za pridobitev namiga glavnega gesla.
+ Vnesite e-naslov svojega računa in poslali vam bomo namig za glavno geslo.
Ponovno omogoči razširitev aplikacije
@@ -562,7 +562,7 @@
Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?
- Vpisujem...
+ Prijava poteka...
Message shown when interacting with the server
@@ -937,7 +937,7 @@ Scanning will happen automatically.
Datoteka
- Nobena datoteka izbrana
+ Datoteka ni izbrana
Ni prilog.
@@ -1384,10 +1384,10 @@ Scanning will happen automatically.
Preišči zbirko
- Search file Sends
+ Išči med datotečnimi pošiljkami
- Search text Sends
+ Išči med besedilnimi pošiljkami
Išči {0}
@@ -1879,11 +1879,11 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Poslano
+ Pošiljke
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- A friendly name to describe this Send.
+ Prijazno ime, ki opisuje to pošiljko.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -1980,15 +1980,15 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Deactivate this Send so that no one can access it
+ Onemogoči to pošiljko, da ne bo dostopna nikomur
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- There are no Sends in your account.
+ Vaš račun ne vsebuje pošiljk.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Add a Send
+ Dodaj pošiljko
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2002,31 +2002,31 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Išči poslano
+ Išči med pošiljkami
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Uredi poslano
+ Uredi pošiljko
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Dodaj poslano
+ Nova pošiljka
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Ali želite izbrisati to poslano?
+ Ali želite izbrisati to pošiljko?
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Poslano je bilo izbrisano.
+ Pošiljka je bila izbrisana.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Poslano posodobljeno.
+ Pošiljka shranjena.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Ustvarjeno novo poslano.
+ Pošiljka ustvarjena.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2048,7 +2048,7 @@ Scanning will happen automatically.
Po meri
- Deli to poslano po shranjevanju.
+ Deli to pošiljko, ko bo shranjena
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2056,7 +2056,7 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- O poslanem
+ O pošiljkah
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2067,11 +2067,11 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Brezplačni računi so omejeni samo na skupno rabo besedila. Za uporabo pošiljanje datotek preko Pošlji je potrebno premium članstvo.
+ Brezplačni računi so omejeni samo na besedilne pošiljke. Za uporabo datotečnih pošiljk je potrebno članstvo Premium.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Če želite uporabljati datoteke s funkcijo Pošlji, morate potrditi svoj e-poštni naslov.
+ Če želite uporabljati datotečne pošiljke, morate potrditi svoj e-naslov. To lahko storite v trezorju na spletu.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2093,7 +2093,7 @@ Scanning will happen automatically.
Updated master password
- Update master password
+ Posodobi glavno geslo
Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
diff --git a/store/apple/af/copy.resx b/store/apple/af/copy.resx
index 565d10ec1..036bc3b04 100644
--- a/store/apple/af/copy.resx
+++ b/store/apple/af/copy.resx
@@ -146,7 +146,8 @@ Wêreldwye vertalings
Bitwarden-vertalings bestaan in 40 tale en groei danksy ons wêreldwye gemeenskap.
Kruisplatformtoepassings
-Beveilig en deel gevoelige data in u Bitwarden kluis vanuit enige blaaier, mobiele toestel of werkskermbedryfstelsel, en meer.
+Beveilig en deel gevoelige data in u Bitwarden kluis vanuit enige blaaier, mobiele toestel of werkskermbedryfstelsel, en meer.
+
Max 4000 characters
diff --git a/store/apple/pt-PT/copy.resx b/store/apple/pt-PT/copy.resx
index 277d5dce4..b6ba0902c 100644
--- a/store/apple/pt-PT/copy.resx
+++ b/store/apple/pt-PT/copy.resx
@@ -118,7 +118,7 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- Bitwarden
+ Bitwarden - gestor de palavras-passe
Max 30 characters
@@ -151,22 +151,22 @@ Secure and share sensitive data within your Bitwarden Vault from any browser, mo
Max 4000 characters
- bit warden,8bit,password,free password manager,password manager,login manager
+ bit warden,8bit,palavra-passe,gestor de palavras-passe gratuito,gestor de palavras-passe,gestor de inícios de sessão
Max 100 characters
- Gira todas as suas credenciais e palavras-passe a partir de um cofre seguro
+ Gira todos os seus inícios de sessão e palavras-passe a partir de um cofre seguro
- Gira automaticamente palavras-passe fortes, aleatórias e seguras
+ Gera automaticamente palavras-passe fortes, aleatórias e seguras
- Proteja o seu cofre com Touch ID, código PIN, ou palavra-passe mestra
+ Proteja o seu cofre com Touch ID, código PIN ou palavra-passe mestra
Preenchimento automático de inícios de sessão no Safari, Chrome e centenas de outras aplicações
- Sincronize e aceda ao seu cofre através de múltiplos dispositivos
+ Sincronize e aceda ao seu cofre através de vários dispositivos
diff --git a/store/google/af/copy.resx b/store/google/af/copy.resx
index 4c4159e25..06fbda780 100644
--- a/store/google/af/copy.resx
+++ b/store/google/af/copy.resx
@@ -150,7 +150,8 @@ Wêreldwye vertalings
Bitwarden-vertalings bestaan in 40 tale en groei danksy ons wêreldwye gemeenskap.
Kruisplatformtoepassings
-Beveilig en deel gevoelige data in u Bitwarden kluis vanuit enige blaaier, mobiele toestel of werkskermbedryfstelsel, en meer.
+Beveilig en deel gevoelige data in u Bitwarden kluis vanuit enige blaaier, mobiele toestel of werkskermbedryfstelsel, en meer.
+
Max 4000 characters
diff --git a/store/google/pt-PT/copy.resx b/store/google/pt-PT/copy.resx
index c8106a026..250d8ad4c 100644
--- a/store/google/pt-PT/copy.resx
+++ b/store/google/pt-PT/copy.resx
@@ -118,11 +118,11 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- Bitwarden - Gestor de palavras-passe
+ Bitwarden - gestor de palavras-passe
Max 30 characters
- O Bitwarden é um gestor de palavras-passe que lhe ajuda a manter-se seguro online.
+ O Bitwarden é um gestor de inícios de sessão e de palavras-passe que o ajuda a manter-se seguro enquanto está online.
Max 80 characters
@@ -158,19 +158,19 @@ Secure and share sensitive data within your Bitwarden Vault from any browser, mo
Um gestor de palavras-passe seguro e gratuito para todos os seus dispositivos
- Gira todas as suas credenciais e palavras-passe a partir de um cofre seguro
+ Gira todos os seus inícios de sessão e palavras-passe a partir de um cofre seguro
Gera automaticamente palavras-passe fortes, aleatórias e seguras
- Proteja o seu cofre com impressão digital, código PIN, ou palavra-passe mestra
+ Proteja o seu cofre com impressão digital, código PIN ou palavra-passe mestra
- Preencher rapidamente os inícios de sessão de forma automática a partir do seu navegador web e de outras aplicações
+ Preencha rapidamente os inícios de sessão de forma automática a partir do seu navegador web e de outras aplicações
- Sincronize e aceda ao seu cofre a partir de múltiplos dispositivos
+ Sincronize e aceda ao seu cofre a partir de vários dispositivos
- Telemóvel
- Tablet
From eeb634e69886be2ff48f1776965268bb86db8483 Mon Sep 17 00:00:00 2001
From: Federico Maccaroni
Date: Mon, 5 Jun 2023 19:58:38 +0300
Subject: [PATCH 12/33] PM-1798 Added accessibility names on entries on cipher
add (#2550)
---
.../HiddenCustomFieldItemLayout.xaml | 4 +-
.../TextCustomFieldItemLayout.xaml | 4 +-
src/App/Pages/Vault/CipherAddEditPage.xaml | 112 +++++++++++++-----
src/App/Resources/AppResources.Designer.cs | 45 ++++---
src/App/Resources/AppResources.resx | 3 +
5 files changed, 119 insertions(+), 49 deletions(-)
diff --git a/src/App/Lists/ItemLayouts/CustomFields/HiddenCustomFieldItemLayout.xaml b/src/App/Lists/ItemLayouts/CustomFields/HiddenCustomFieldItemLayout.xaml
index 59d05d14c..2ed17144d 100644
--- a/src/App/Lists/ItemLayouts/CustomFields/HiddenCustomFieldItemLayout.xaml
+++ b/src/App/Lists/ItemLayouts/CustomFields/HiddenCustomFieldItemLayout.xaml
@@ -54,7 +54,9 @@
IsPassword="{Binding ShowHiddenValue, Converter={StaticResource inverseBool}}"
IsEnabled="{Binding ShowViewHidden}"
IsSpellCheckEnabled="False"
- IsTextPredictionEnabled="False">
+ IsTextPredictionEnabled="False"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{Binding Field.Name}">
diff --git a/src/App/Lists/ItemLayouts/CustomFields/TextCustomFieldItemLayout.xaml b/src/App/Lists/ItemLayouts/CustomFields/TextCustomFieldItemLayout.xaml
index a5d3239b0..238fbe0ab 100644
--- a/src/App/Lists/ItemLayouts/CustomFields/TextCustomFieldItemLayout.xaml
+++ b/src/App/Lists/ItemLayouts/CustomFields/TextCustomFieldItemLayout.xaml
@@ -41,7 +41,9 @@
StyleClass="box-value"
Grid.Row="1"
Grid.Column="0"
- IsVisible="{Binding IsEditing}" />
+ IsVisible="{Binding IsEditing}"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{Binding Field.Name}" />
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Name}" />
+ Grid.Row="1"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Username}"/>
+ IsEnabled="{Binding Cipher.ViewPassword}"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Password}"/>
+ Grid.ColumnSpan="{Binding TotpColumnSpan}"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n AuthenticatorKey}" />
+ Grid.RowSpan="2"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n CopyTotp}" />
+ IsTextPredictionEnabled="False"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Number}" />
+ Keyboard="Numeric"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n ExpirationYear}" />
@@ -371,7 +385,9 @@
Keyboard="Numeric"
IsPassword="{Binding ShowCardCode, Converter={StaticResource inverseBool}}"
IsSpellCheckEnabled="False"
- IsTextPredictionEnabled="False" />
+ IsTextPredictionEnabled="False"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n SecurityCode}" />
+ StyleClass="box-value,capitalize-word-input"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n FirstName}"/>
+ StyleClass="box-value,capitalize-word-input"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n MiddleName}" />
+ StyleClass="box-value,capitalize-word-input"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n LastName}" />
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Username}" />
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Company}"/>
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n SSN}"/>
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n PassportNumber}"/>
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n LicenseNumber}" />
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Email}"/>
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Phone}" />
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Address1}"/>
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Address2}" />
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Address3}" />
+ StyleClass="box-value,capitalize-sentence-input"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n CityTown}" />
+ StyleClass="box-value,capitalize-sentence-input"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n StateProvince}" />
+ StyleClass="box-value"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n ZipPostalCode}" />
+ StyleClass="box-value,capitalize-sentence-input"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Country}" />
@@ -578,7 +628,9 @@
Keyboard="Url"
StyleClass="box-value"
Grid.Row="1"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n URI}" />
+ Text="{Binding Cipher.Notes}"
+ AutomationProperties.IsInAccessibleTree="True"
+ AutomationProperties.Name="{u:I18n Notes}" >
@@ -717,7 +771,7 @@
+ HorizontalOptions="End"/>
diff --git a/src/App/Resources/AppResources.Designer.cs b/src/App/Resources/AppResources.Designer.cs
index 3810c9cf9..20aeb4a19 100644
--- a/src/App/Resources/AppResources.Designer.cs
+++ b/src/App/Resources/AppResources.Designer.cs
@@ -202,6 +202,24 @@ namespace Bit.App.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Biometric unlock for this account is disabled pending verification of master password..
+ ///
+ public static string AccountBiometricInvalidated {
+ get {
+ return ResourceManager.GetString("AccountBiometricInvalidated", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Autofill biometric unlock for this account is disabled pending verification of master password..
+ ///
+ public static string AccountBiometricInvalidatedExtension {
+ get {
+ return ResourceManager.GetString("AccountBiometricInvalidatedExtension", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Your new account has been created! You may now log in..
///
@@ -967,24 +985,6 @@ namespace Bit.App.Resources {
}
}
- ///
- /// Looks up a localized string similar to Biometric unlock disabled pending verification of master password..
- ///
- public static string AccountBiometricInvalidated {
- get {
- return ResourceManager.GetString("AccountBiometricInvalidated", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Biometric unlock for autofill disabled pending verification of master password..
- ///
- public static string AccountBiometricInvalidatedExtension {
- get {
- return ResourceManager.GetString("AccountBiometricInvalidatedExtension", resourceCulture);
- }
- }
-
///
/// Looks up a localized string similar to Biometrics.
///
@@ -3894,6 +3894,15 @@ namespace Bit.App.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Master password re-prompt help.
+ ///
+ public static string MasterPasswordRePromptHelp {
+ get {
+ return ResourceManager.GetString("MasterPasswordRePromptHelp", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Match detection.
///
diff --git a/src/App/Resources/AppResources.resx b/src/App/Resources/AppResources.resx
index a94cdb2b4..a137e2384 100644
--- a/src/App/Resources/AppResources.resx
+++ b/src/App/Resources/AppResources.resx
@@ -2631,4 +2631,7 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
From 1c13ed9895c3d141cfeef376416709e41dc25812 Mon Sep 17 00:00:00 2001
From: ifernandezdiaz
Date: Tue, 6 Jun 2023 21:00:01 -0300
Subject: [PATCH 13/33] [PS-2558] Mobile Automation - Starting automationIDs
additions to our codebase (#2558)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Adding locators for Environment, Hope, Login and Register pages
* Adding Locators on LockPage
* Adding Álison's suggestions
---
src/App/Pages/Accounts/EnvironmentPage.xaml | 15 ++++++---
src/App/Pages/Accounts/HomePage.xaml | 22 ++++++++-----
src/App/Pages/Accounts/LockPage.xaml | 16 +++++++---
src/App/Pages/Accounts/LoginPage.xaml | 35 ++++++++++++++-------
src/App/Pages/Accounts/RegisterPage.xaml | 22 ++++++++-----
5 files changed, 75 insertions(+), 35 deletions(-)
diff --git a/src/App/Pages/Accounts/EnvironmentPage.xaml b/src/App/Pages/Accounts/EnvironmentPage.xaml
index cabf07ed7..73a1beb04 100644
--- a/src/App/Pages/Accounts/EnvironmentPage.xaml
+++ b/src/App/Pages/Accounts/EnvironmentPage.xaml
@@ -34,7 +34,8 @@
Placeholder="ex. https://bitwarden.company.com"
StyleClass="box-value"
ReturnType="Go"
- ReturnCommand="{Binding SubmitCommand}" />
+ ReturnCommand="{Binding SubmitCommand}"
+ AutomationId="ServerUrlEntry"/>
+ StyleClass="box-value"
+ AutomationId="WebVaultUrlEntry"/>
+ StyleClass="box-value"
+ AutomationId="ApiUrlEntry"/>
+ StyleClass="box-value"
+ AutomationId="IdentityUrlEntry"/>
+ ReturnCommand="{Binding SubmitCommand}"
+ AutomationId="IconsUrlEntry"/>
+ ReturnCommand="{Binding ContinueCommand}"
+ AutomationId="EmailAddressEntry"
+ >
@@ -78,7 +80,8 @@
FontSize="13"
TextColor="{DynamicResource PrimaryColor}"
VerticalOptions="Center"
- VerticalTextAlignment="Center"/>
+ VerticalTextAlignment="Center"
+ AutomationId="RegionSelectorDropdown"/>
+ VerticalTextAlignment="Center"
+ />
+ VerticalOptions="Center"
+ AutomationId="RememberMeSwitch"
+ />
+ Command="{Binding ContinueCommand}"
+ AutomationId="ContinueButton"
+ />
+ StyleClass="box-footer-label"
+ AutomationId="CreateAccountLabel">
@@ -132,5 +141,4 @@
MainPage="{Binding Source={x:Reference _page}}"
BindingContext="{Binding AccountSwitchingOverlayViewModel}"/>
-
diff --git a/src/App/Pages/Accounts/LockPage.xaml b/src/App/Pages/Accounts/LockPage.xaml
index 18d2f8b9c..561b051f5 100644
--- a/src/App/Pages/Accounts/LockPage.xaml
+++ b/src/App/Pages/Accounts/LockPage.xaml
@@ -71,7 +71,8 @@
Grid.Row="1"
Grid.Column="0"
ReturnType="Go"
- ReturnCommand="{Binding SubmitCommand}" />
+ ReturnCommand="{Binding SubmitCommand}"
+ AutomationId="PinEntry"/>
+ AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
+ AutomationId="PinVisibilityToggle"/>
+ ReturnCommand="{Binding SubmitCommand}"
+ AutomationId="MasterPasswordEntry"/>
+ AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
+ AutomationId="PasswordVisibilityToggle"
+ />
+ Clicked="Unlock_Clicked"
+ AutomationId="UnlockVaultButton"/>
diff --git a/src/App/Pages/Accounts/LoginPage.xaml b/src/App/Pages/Accounts/LoginPage.xaml
index aa23b782b..fd2bb3fbd 100644
--- a/src/App/Pages/Accounts/LoginPage.xaml
+++ b/src/App/Pages/Accounts/LoginPage.xaml
@@ -9,16 +9,15 @@
xmlns:u="clr-namespace:Bit.App.Utilities"
x:DataType="pages:LoginPageViewModel"
x:Name="_page"
- Title="{Binding PageTitle}">
+ Title="{Binding PageTitle}"
+ AutomationId="PageTitleLabel">
-
+ AutomationProperties.Name="{u:I18n Options}"
+ AutomationId="OptionsButton"/>
+ ReturnCommand="{Binding LogInCommand}"
+ AutomationId="MasterPasswordEntry"
+ />
+ Grid.ColumnSpan="2"
+ AutomationId="GetMasterPasswordHintLabel"
+ >
@@ -104,19 +109,24 @@
+ Clicked="LogIn_Clicked"
+ AutomationId="LogInWithMasterPasswordButton"
+ />
+ IsVisible="{Binding IsKnownDevice}"
+ AutomationId="LogInWithAnotherDeviceButton"
+ />
+ Label="{u:I18n LogInSso}"
+ AutomationId="LogInWithSsoButton">
@@ -124,12 +134,15 @@
+ Margin="0,40,0,0"
+ AutomationId="LoggingInAsLabel"
+ />
+ TextColor="{DynamicResource HyperlinkColor}"
+ AutomationId="NotYouLabel">
diff --git a/src/App/Pages/Accounts/RegisterPage.xaml b/src/App/Pages/Accounts/RegisterPage.xaml
index 3902e3ca5..3224b6c38 100644
--- a/src/App/Pages/Accounts/RegisterPage.xaml
+++ b/src/App/Pages/Accounts/RegisterPage.xaml
@@ -35,7 +35,8 @@
x:Name="_email"
Text="{Binding Email}"
Keyboard="Email"
- StyleClass="box-value" />
+ StyleClass="box-value"
+ AutomationId="EmailAddressEntry"/>
@@ -59,7 +60,8 @@
IsTextPredictionEnabled="False"
IsPassword="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
Grid.Row="1"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationId="MasterPasswordEntry"/>
+ AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
+ AutomationId="PasswordVisibilityToggle"/>
+ Grid.Column="0"
+ AutomationId="ConfirmMasterPasswordEntry"/>
@@ -130,7 +135,8 @@
Text="{Binding Hint}"
StyleClass="box-value"
ReturnType="Go"
- ReturnCommand="{Binding SubmitCommand}" />
+ ReturnCommand="{Binding SubmitCommand}"
+ AutomationId="MasterPasswordHintLabel" />
+ Margin="0, 0, 10, 0"
+ AutomationId="CheckExposedMasterPasswordToggle"/>
+ Margin="0, 0, 10, 0"
+ AutomationId="AcceptPoliciesToggle"/>
From 3b087c50ae14d8b8a7b2f560fe2b46f060b1de71 Mon Sep 17 00:00:00 2001
From: Federico Maccaroni
Date: Wed, 7 Jun 2023 16:21:51 +0200
Subject: [PATCH 14/33] PM-1076 added warning on unlocking iOS extensions when
the kdf type is argon2id and the memory is higher than 48MB, to let the user
know that unlocking might crash the extension (#2560)
---
src/App/Resources/AppResources.Designer.cs | 9 +++++++++
src/App/Resources/AppResources.resx | 3 +++
src/iOS.Core/Constants.cs | 1 +
.../Controllers/BaseLockPasswordViewController.cs | 12 ++++++++++++
4 files changed, 25 insertions(+)
diff --git a/src/App/Resources/AppResources.Designer.cs b/src/App/Resources/AppResources.Designer.cs
index 20aeb4a19..51a6cfb8c 100644
--- a/src/App/Resources/AppResources.Designer.cs
+++ b/src/App/Resources/AppResources.Designer.cs
@@ -6434,6 +6434,15 @@ namespace Bit.App.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
+ ///
+ public static string UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve {
+ get {
+ return ResourceManager.GetString("UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Unlock vault.
///
diff --git a/src/App/Resources/AppResources.resx b/src/App/Resources/AppResources.resx
index a137e2384..f4bae0727 100644
--- a/src/App/Resources/AppResources.resx
+++ b/src/App/Resources/AppResources.resx
@@ -2634,4 +2634,7 @@ Do you want to switch to this account?
Master password re-prompt help
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/iOS.Core/Constants.cs b/src/iOS.Core/Constants.cs
index 402988dd7..1c9896ec1 100644
--- a/src/iOS.Core/Constants.cs
+++ b/src/iOS.Core/Constants.cs
@@ -32,5 +32,6 @@
public const string UTTypeAppExtensionImage = "public.image";
public const string AutofillNeedsIdentityReplacementKey = "autofillNeedsIdentityReplacement";
+ public const int MaximumArgon2IdMemoryBeforeExtensionCrashing = 48;
}
}
diff --git a/src/iOS.Core/Controllers/BaseLockPasswordViewController.cs b/src/iOS.Core/Controllers/BaseLockPasswordViewController.cs
index 855581b4b..db0a946c2 100644
--- a/src/iOS.Core/Controllers/BaseLockPasswordViewController.cs
+++ b/src/iOS.Core/Controllers/BaseLockPasswordViewController.cs
@@ -225,6 +225,18 @@ namespace Bit.iOS.Core.Controllers
var kdfConfig = await _stateService.GetActiveUserCustomDataAsync(a => new KdfConfig(a?.Profile));
var inputtedValue = MasterPasswordCell.TextField.Text;
+ // HACK: iOS extensions have constrained memory, given how it works Argon2Id, it's likely to crash
+ // the extension depending on the argon2id memory configured.
+ // So, we warn the user and advise to decrease the configured memory letting them the option to continue, if wanted.
+ if (kdfConfig.Type == KdfType.Argon2id
+ &&
+ kdfConfig.Memory > Constants.MaximumArgon2IdMemoryBeforeExtensionCrashing
+ &&
+ !await _platformUtilsService.ShowDialogAsync(AppResources.UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve, AppResources.Warning, AppResources.Continue, AppResources.Cancel))
+ {
+ return;
+ }
+
if (_pinLock)
{
var failed = true;
From dcf9acb51c601e7e336cdd0c14cce2ea606ff7bf Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 9 Jun 2023 09:19:34 +0200
Subject: [PATCH 15/33] Autosync the updated translations (#2562)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
---
src/App/Resources/AppResources.af.resx | 6 +++
src/App/Resources/AppResources.ar.resx | 22 +++++---
src/App/Resources/AppResources.az.resx | 6 +++
src/App/Resources/AppResources.be.resx | 18 ++++---
src/App/Resources/AppResources.bg.resx | 6 +++
src/App/Resources/AppResources.bn.resx | 6 +++
src/App/Resources/AppResources.bs.resx | 6 +++
src/App/Resources/AppResources.ca.resx | 6 +++
src/App/Resources/AppResources.cs.resx | 6 +++
src/App/Resources/AppResources.cy.resx | 6 +++
src/App/Resources/AppResources.da.resx | 6 +++
src/App/Resources/AppResources.de.resx | 6 +++
src/App/Resources/AppResources.el.resx | 6 +++
src/App/Resources/AppResources.en-GB.resx | 6 +++
src/App/Resources/AppResources.en-IN.resx | 6 +++
src/App/Resources/AppResources.es.resx | 6 +++
src/App/Resources/AppResources.et.resx | 6 +++
src/App/Resources/AppResources.eu.resx | 42 ++++++++-------
src/App/Resources/AppResources.fa.resx | 6 +++
src/App/Resources/AppResources.fi.resx | 6 +++
src/App/Resources/AppResources.fil.resx | 6 +++
src/App/Resources/AppResources.fr.resx | 6 +++
src/App/Resources/AppResources.gl.resx | 6 +++
src/App/Resources/AppResources.he.resx | 6 +++
src/App/Resources/AppResources.hi.resx | 6 +++
src/App/Resources/AppResources.hr.resx | 6 +++
src/App/Resources/AppResources.hu.resx | 6 +++
src/App/Resources/AppResources.id.resx | 6 +++
src/App/Resources/AppResources.it.resx | 6 +++
src/App/Resources/AppResources.ja.resx | 6 +++
src/App/Resources/AppResources.ka.resx | 6 +++
src/App/Resources/AppResources.kn.resx | 6 +++
src/App/Resources/AppResources.ko.resx | 6 +++
src/App/Resources/AppResources.lt.resx | 6 +++
src/App/Resources/AppResources.lv.resx | 6 +++
src/App/Resources/AppResources.ml.resx | 6 +++
src/App/Resources/AppResources.my.resx | 6 +++
src/App/Resources/AppResources.nb.resx | 6 +++
src/App/Resources/AppResources.ne.resx | 6 +++
src/App/Resources/AppResources.nl.resx | 6 +++
src/App/Resources/AppResources.nn.resx | 6 +++
src/App/Resources/AppResources.or.resx | 6 +++
src/App/Resources/AppResources.pl.resx | 6 +++
src/App/Resources/AppResources.pt-BR.resx | 6 +++
src/App/Resources/AppResources.pt-PT.resx | 58 +++++++++++---------
src/App/Resources/AppResources.ro.resx | 6 +++
src/App/Resources/AppResources.ru.resx | 6 +++
src/App/Resources/AppResources.si.resx | 6 +++
src/App/Resources/AppResources.sk.resx | 6 +++
src/App/Resources/AppResources.sl.resx | 59 +++++++++++----------
src/App/Resources/AppResources.sr.resx | 6 +++
src/App/Resources/AppResources.sv.resx | 6 +++
src/App/Resources/AppResources.ta.resx | 6 +++
src/App/Resources/AppResources.te.resx | 6 +++
src/App/Resources/AppResources.th.resx | 6 +++
src/App/Resources/AppResources.tr.resx | 6 +++
src/App/Resources/AppResources.uk.resx | 6 +++
src/App/Resources/AppResources.vi.resx | 6 +++
src/App/Resources/AppResources.zh-Hans.resx | 6 +++
src/App/Resources/AppResources.zh-Hant.resx | 6 +++
store/apple/pt-PT/copy.resx | 6 +--
store/google/pt-PT/copy.resx | 6 +--
62 files changed, 450 insertions(+), 91 deletions(-)
diff --git a/src/App/Resources/AppResources.af.resx b/src/App/Resources/AppResources.af.resx
index 5040fcc0b..b9215918c 100644
--- a/src/App/Resources/AppResources.af.resx
+++ b/src/App/Resources/AppResources.af.resx
@@ -2630,4 +2630,10 @@ Wil u na die rekening omskakel?
Huidige hoofwagwoord
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.ar.resx b/src/App/Resources/AppResources.ar.resx
index 6e7b9bfc0..f182a41c1 100644
--- a/src/App/Resources/AppResources.ar.resx
+++ b/src/App/Resources/AppResources.ar.resx
@@ -1753,10 +1753,10 @@
Confirmation alert message when soft-deleting a cipher.
- Biometric unlock for this account is disabled pending verification of master password.
+ تم تعطيل فتح القفل الحيوي لهذا الحساب في انتظار التحقق من كلمة المرور الرئيسية.
- Autofill biometric unlock for this account is disabled pending verification of master password.
+ إلغاء القفل الحيوي للملء التلقائي لهذا الحساب معطل في انتظار التحقق من كلمة المرور الرئيسية.
تمكين المزامنة عند التحديث
@@ -2497,7 +2497,7 @@
احصل على تلميح كلمة المرور الرئيسية
- Logging in as {0} on {1}
+ تسجيل الدخول كـ {0} في {1}
ليس أنت؟
@@ -2611,19 +2611,19 @@
لا توجد عناصر تطابق البحث
- US
+ الولايات المتحدة
- EU
+ الاتحاد الأوروبي
- Self-hosted
+ استضافة ذاتية
- Data region
+ منطقة البيانات
- Region
+ المنطقة
كلمة المرور الرئيسية الخاصة بك لا تفي بواحدة أو أكثر من سياسات مؤسستك. من أجل الوصول إلى الخزنة، يجب عليك تحديث كلمة المرور الرئيسية الآن. سيتم تسجيل خروجك من الجلسة الحالية، مما يتطلب منك تسجيل الدخول مرة أخرى. وقد تظل الجلسات النشطة على أجهزة أخرى نشطة لمدة تصل إلى ساعة واحدة.
@@ -2631,4 +2631,10 @@
كلمة المرور الرئيسية الحالية
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.az.resx b/src/App/Resources/AppResources.az.resx
index 5093abe1e..0e6982ac7 100644
--- a/src/App/Resources/AppResources.az.resx
+++ b/src/App/Resources/AppResources.az.resx
@@ -2629,4 +2629,10 @@ Bu hesaba keçmək istəyirsiniz?
Hazırkı ana parol
+
+ Ana parolu təkrar soruş köməyi
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.be.resx b/src/App/Resources/AppResources.be.resx
index b73d32376..b4dd153f8 100644
--- a/src/App/Resources/AppResources.be.resx
+++ b/src/App/Resources/AppResources.be.resx
@@ -2496,7 +2496,7 @@
Атрымаць падказку да асноўнага пароля
- Logging in as {0} on {1}
+ Вы ўваходзіце як {0} у {1}
Не вы?
@@ -2610,19 +2610,19 @@
Адсутнічаюць элементы, якія адпавядаюць пошуку
- US
+ ЗША
- EU
+ ЕС
- Self-hosted
+ Уласнае размяшчэнне
- Data region
+ Рэгіён даных
- Region
+ Рэгіён
Ваш асноўны пароль не адпавядае адной або некалькім палітыкам арганізацыі. Для атрымання доступу да сховішча, вы павінны абнавіць яго. Працягваючы, вы выйдзіце з бягучага сеанса і вам неабходна будзе ўвайсці паўторна. Актыўныя сеансы на іншых прыладах могуць заставацца актыўнымі на працягу адной гадзіны.
@@ -2630,4 +2630,10 @@
Бягучы асноўны пароль
+
+ Дапамога з паўторным запытам асноўнага пароля
+
+
+ Па прычыне недахопу памяці можа адбыцца збой разблакіроўкі. Паменшыце налады памяці KDF, каб вырашыць гэту праблему
+
diff --git a/src/App/Resources/AppResources.bg.resx b/src/App/Resources/AppResources.bg.resx
index e4997b40a..67383725a 100644
--- a/src/App/Resources/AppResources.bg.resx
+++ b/src/App/Resources/AppResources.bg.resx
@@ -2630,4 +2630,10 @@ select Add TOTP to store the key safely
Текуща главна парола
+
+ Помощ за повторното запитване за главната парола
+
+
+ Отключването може да бъде неуспешно заради недостатъчно памет. Намалете настройките на паметта за KDF, за да разрешите проблема.
+
diff --git a/src/App/Resources/AppResources.bn.resx b/src/App/Resources/AppResources.bn.resx
index ee3bac41f..8435cacef 100644
--- a/src/App/Resources/AppResources.bn.resx
+++ b/src/App/Resources/AppResources.bn.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.bs.resx b/src/App/Resources/AppResources.bs.resx
index 93fc3f66d..8885eb936 100644
--- a/src/App/Resources/AppResources.bs.resx
+++ b/src/App/Resources/AppResources.bs.resx
@@ -2629,4 +2629,10 @@ Skeniranje će biti izvršeno automatski.
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.ca.resx b/src/App/Resources/AppResources.ca.resx
index cee3bf0fe..87a1af98c 100644
--- a/src/App/Resources/AppResources.ca.resx
+++ b/src/App/Resources/AppResources.ca.resx
@@ -2630,4 +2630,10 @@ Voleu canviar a aquest compte?
Contrasenya mestra actual
+
+ Ajuda per tornar a demanar la contrasenya mestra
+
+
+ El desbloqueig pot fallar a causa de memòria insuficient. Disminueix la configuració de memòria KDF per resoldre-ho
+
diff --git a/src/App/Resources/AppResources.cs.resx b/src/App/Resources/AppResources.cs.resx
index 85f2e234e..0257e42e8 100644
--- a/src/App/Resources/AppResources.cs.resx
+++ b/src/App/Resources/AppResources.cs.resx
@@ -2629,4 +2629,10 @@ Chcete se přepnout na tento účet?
Aktuální hlavní heslo
+
+ Nápověda pro znovuzeptání se na hlavní heslo
+
+
+ Odemknutí může selhat z důvodu nedostatku paměti. Pro vyřešení snižte nastavení paměti KDF.
+
diff --git a/src/App/Resources/AppResources.cy.resx b/src/App/Resources/AppResources.cy.resx
index ceaffdd00..d3ba16b90 100644
--- a/src/App/Resources/AppResources.cy.resx
+++ b/src/App/Resources/AppResources.cy.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.da.resx b/src/App/Resources/AppResources.da.resx
index 2f15be698..9dbbcc683 100644
--- a/src/App/Resources/AppResources.da.resx
+++ b/src/App/Resources/AppResources.da.resx
@@ -2630,4 +2630,10 @@ Vil du skifte til denne konto?
Aktuel hovedadgangskode
+
+ Hjælp til genanmodning om hovedadgangskode
+
+
+ Oplåsning kan fejle grundet utilstrækkelig hukommelse. Reducér KDF-hukommelsesindstillinger for at afhjælpe
+
diff --git a/src/App/Resources/AppResources.de.resx b/src/App/Resources/AppResources.de.resx
index 230411b84..16e3a4e65 100644
--- a/src/App/Resources/AppResources.de.resx
+++ b/src/App/Resources/AppResources.de.resx
@@ -2629,4 +2629,10 @@ Möchtest du zu diesem Konto wechseln?
Aktuelles Master-Passwort
+
+ Hilfe zum erneuten Abfragen des Master-Passworts
+
+
+ Das Entsperren kann aufgrund von unzureichendem Arbeitsspeicher fehlschlagen. Verringere deine KDF-Speichereinstellungen, um das Problem zu beheben.
+
diff --git a/src/App/Resources/AppResources.el.resx b/src/App/Resources/AppResources.el.resx
index 909df12de..260b0903c 100644
--- a/src/App/Resources/AppResources.el.resx
+++ b/src/App/Resources/AppResources.el.resx
@@ -2630,4 +2630,10 @@
Τρέχων κύριος κωδικός
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.en-GB.resx b/src/App/Resources/AppResources.en-GB.resx
index 3a07f6b16..5c01b5f42 100644
--- a/src/App/Resources/AppResources.en-GB.resx
+++ b/src/App/Resources/AppResources.en-GB.resx
@@ -2630,4 +2630,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.en-IN.resx b/src/App/Resources/AppResources.en-IN.resx
index 85718ac95..6f794ea70 100644
--- a/src/App/Resources/AppResources.en-IN.resx
+++ b/src/App/Resources/AppResources.en-IN.resx
@@ -2644,4 +2644,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.es.resx b/src/App/Resources/AppResources.es.resx
index 6ed1776db..0fa3fbc12 100644
--- a/src/App/Resources/AppResources.es.resx
+++ b/src/App/Resources/AppResources.es.resx
@@ -2631,4 +2631,10 @@ seleccione Agregar TOTP para almacenar la clave de forma segura
Contraseña maestra actual
+
+ Master password re-prompt help
+
+
+ El desbloqueo puede fallar por falta de memoria. Disminuye los ajustes de memoria KDF para resolver
+
diff --git a/src/App/Resources/AppResources.et.resx b/src/App/Resources/AppResources.et.resx
index 5a2df7bd6..42b1de318 100644
--- a/src/App/Resources/AppResources.et.resx
+++ b/src/App/Resources/AppResources.et.resx
@@ -2630,4 +2630,10 @@ Soovid selle konto peale lülituda?
Praegune ülemparool
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.eu.resx b/src/App/Resources/AppResources.eu.resx
index ca021a83a..b17c17954 100644
--- a/src/App/Resources/AppResources.eu.resx
+++ b/src/App/Resources/AppResources.eu.resx
@@ -584,7 +584,7 @@
Pasahitz nagusia ahazten baduzu, pista batek pasahitza gogoratzen lagunduko dizu.
- Master password must be at least {0} characters long.
+ Pasahitz nagusiak {0} karaktere izan behar ditu gutxienez.
Gutxieneko zenbaki kopurua
@@ -1752,10 +1752,10 @@
Confirmation alert message when soft-deleting a cipher.
- Biometric unlock for this account is disabled pending verification of master password.
+ Desblokeatze biometrikoa desgaituta dago kontu honentzat, pasahitz nagusia egiaztatzeko zain.
- Autofill biometric unlock for this account is disabled pending verification of master password.
+ Desblokeatze biometriko automatikoa desgaituta dago kontu honentzat, pasahitz nagusia egiaztatzeko zain.
Gaitu eguneratzean sinkronizatzea
@@ -2495,7 +2495,7 @@ Kontu honetara aldatu nahi duzu?
Jaso pasahitz nagusiaren pista
- Logging in as {0} on {1}
+ {0} bezala saioa hasten {1}(e)n
Ez zara zu?
@@ -2531,31 +2531,31 @@ Kontu honetara aldatu nahi duzu?
Pending login requests
- Decline all requests
+ Ukatu eskaera guztiak
- Are you sure you want to decline all pending login requests?
+ Ziur al zaude zain dauden saioa hasteko eskaera guztiak ukatu nahi dituzula?
- Requests declined
+ Eskaerak ukatuta
- No pending requests
+ Ez dago eskaerarik zain
Gaitu kameraren baimena eskanerra erabiltzeko
- Language
+ Hizkuntza
- The language has been changed to {0}. Please restart the app to see the change
+ {0} hizkuntza ezarri da. Berrabiarazi aplikazioa mesedez aldaketa ikusi ahal izateko
- Language change requires app restart
+ Hizkuntza aldatzeak aplikazioa berabiaraztea behar du
- Default (System)
+ Lehenetsia (Sistema)
Garrantzitsua
@@ -2594,7 +2594,7 @@ Kontu honetara aldatu nahi duzu?
Pasahitz ahul hau datu-urraketa batean aurkitu da. Erabil ezazu beste inon erabili ez duzun pasahitz sendi bat zure kontua babesteko. Ziur zaude pasahitz hau erabili nahi duzula?
- Organization SSO identifier required.
+ Erakundearen identifikazio bakarra (SSO) beharrezkoa da.
Add the key to an existing or new item
@@ -2603,13 +2603,13 @@ Kontu honetara aldatu nahi duzu?
There are no items in your vault that match "{0}"
- Search for an item or add a new item
+ Bilatu elementu bat ala gehitu elementu berria
- There are no items that match the search
+ Ez dago bilaketarekin bat datorren emaitzarik
- US
+ AEB
EU
@@ -2621,12 +2621,18 @@ Kontu honetara aldatu nahi duzu?
Data region
- Region
+ Eskualdea
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
- Current master password
+ Uneko pasahitz nagusia
+
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
diff --git a/src/App/Resources/AppResources.fa.resx b/src/App/Resources/AppResources.fa.resx
index cbd510f3a..d4ee84398 100644
--- a/src/App/Resources/AppResources.fa.resx
+++ b/src/App/Resources/AppResources.fa.resx
@@ -2631,4 +2631,10 @@
کلمه عبور اصلی فعلی
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.fi.resx b/src/App/Resources/AppResources.fi.resx
index a91f21234..63f4c4d1c 100644
--- a/src/App/Resources/AppResources.fi.resx
+++ b/src/App/Resources/AppResources.fi.resx
@@ -2631,4 +2631,10 @@ Haluatko vaihtaa tähän tiliin?
Nykyinen pääsalasana
+
+ Pääsalasanan uudelleenkyselyn ohje
+
+
+ Lukituksen avaus voi epäonnistua riittämättömän keskusmuistin vuoksi. Tämän välttämiseksi voit madaltaa KDF-muistiasetuksiasi.
+
diff --git a/src/App/Resources/AppResources.fil.resx b/src/App/Resources/AppResources.fil.resx
index b86e5ae25..5c8ff019c 100644
--- a/src/App/Resources/AppResources.fil.resx
+++ b/src/App/Resources/AppResources.fil.resx
@@ -2631,4 +2631,10 @@ Gusto mo bang pumunta sa account na ito?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.fr.resx b/src/App/Resources/AppResources.fr.resx
index 8be56944a..f5b8ff1e7 100644
--- a/src/App/Resources/AppResources.fr.resx
+++ b/src/App/Resources/AppResources.fr.resx
@@ -2631,4 +2631,10 @@ Voulez-vous basculer vers ce compte ?
Mot de passe principal actuel
+
+ Aide sur la ressaisie du mot de passe principal
+
+
+ Le déverrouillage peut échouer en raison d'une mémoire insuffisante. Diminuez les paramètres de mémoire KDF pour y remédier
+
diff --git a/src/App/Resources/AppResources.gl.resx b/src/App/Resources/AppResources.gl.resx
index ceaffdd00..d3ba16b90 100644
--- a/src/App/Resources/AppResources.gl.resx
+++ b/src/App/Resources/AppResources.gl.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.he.resx b/src/App/Resources/AppResources.he.resx
index 2df5ba7fb..daf57c2c0 100644
--- a/src/App/Resources/AppResources.he.resx
+++ b/src/App/Resources/AppResources.he.resx
@@ -2633,4 +2633,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.hi.resx b/src/App/Resources/AppResources.hi.resx
index 766d26e66..2775646e7 100644
--- a/src/App/Resources/AppResources.hi.resx
+++ b/src/App/Resources/AppResources.hi.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
चालू मुख्य पासवर्ड
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.hr.resx b/src/App/Resources/AppResources.hr.resx
index 55f28f1bf..a3645f7f9 100644
--- a/src/App/Resources/AppResources.hr.resx
+++ b/src/App/Resources/AppResources.hr.resx
@@ -2628,4 +2628,10 @@
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.hu.resx b/src/App/Resources/AppResources.hu.resx
index 12ad6d78f..7ed1a4827 100644
--- a/src/App/Resources/AppResources.hu.resx
+++ b/src/App/Resources/AppResources.hu.resx
@@ -2629,4 +2629,10 @@ Szeretnénk átváltani erre a fiókra?
Jelenlegi mesterjelszó
+
+ Mesterjelszó újbóli bekérés súgó
+
+
+ A feloldás meghiúsulhat, mert nincs elegendő memória. A megoldáshoz csökkentsül a KDF memóriabeállításait.
+
diff --git a/src/App/Resources/AppResources.id.resx b/src/App/Resources/AppResources.id.resx
index 5d51b1b3d..287fdad01 100644
--- a/src/App/Resources/AppResources.id.resx
+++ b/src/App/Resources/AppResources.id.resx
@@ -2630,4 +2630,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.it.resx b/src/App/Resources/AppResources.it.resx
index 978257c7a..aac088ade 100644
--- a/src/App/Resources/AppResources.it.resx
+++ b/src/App/Resources/AppResources.it.resx
@@ -2630,4 +2630,10 @@ Vuoi passare a questo account?
Password principale corrente
+
+ Auto per chiedere la password principale di nuovo
+
+
+ Lo sblocco potrebbe fallire a causa di memoria insufficiente. Riduci le impostazioni della memoria KDF per risolvere il problema
+
diff --git a/src/App/Resources/AppResources.ja.resx b/src/App/Resources/AppResources.ja.resx
index 03e41e2bb..831ebb4af 100644
--- a/src/App/Resources/AppResources.ja.resx
+++ b/src/App/Resources/AppResources.ja.resx
@@ -2630,4 +2630,10 @@
現在のマスターパスワード
+
+ マスターパスワードの再プロンプトヘルプ
+
+
+ メモリ不足のためロック解除に失敗することがあります。KDF のメモリ設定を減らして解決してください
+
diff --git a/src/App/Resources/AppResources.ka.resx b/src/App/Resources/AppResources.ka.resx
index ceaffdd00..d3ba16b90 100644
--- a/src/App/Resources/AppResources.ka.resx
+++ b/src/App/Resources/AppResources.ka.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.kn.resx b/src/App/Resources/AppResources.kn.resx
index 40439a259..ea080506f 100644
--- a/src/App/Resources/AppResources.kn.resx
+++ b/src/App/Resources/AppResources.kn.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.ko.resx b/src/App/Resources/AppResources.ko.resx
index a4685a060..8a8f2f58d 100644
--- a/src/App/Resources/AppResources.ko.resx
+++ b/src/App/Resources/AppResources.ko.resx
@@ -2630,4 +2630,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.lt.resx b/src/App/Resources/AppResources.lt.resx
index 66d87fe99..88f186937 100644
--- a/src/App/Resources/AppResources.lt.resx
+++ b/src/App/Resources/AppResources.lt.resx
@@ -2631,4 +2631,10 @@ Ar norite pereiti prie šios paskyros?
Dabartinis pagrindinis slaptažodis
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.lv.resx b/src/App/Resources/AppResources.lv.resx
index d95625461..7ea7c13b9 100644
--- a/src/App/Resources/AppResources.lv.resx
+++ b/src/App/Resources/AppResources.lv.resx
@@ -2630,4 +2630,10 @@ Vai pārslēgties uz šo kontu?
Pašreizējā galvenā parole
+
+ Galvenās paroles pārvaicāšanas palīdzība
+
+
+ Atslēgšana var neizdoties nepietiekamas atmiņas dēļ. Lai to novērstu, jāsamazina KDF atmiņas iestatījmi
+
diff --git a/src/App/Resources/AppResources.ml.resx b/src/App/Resources/AppResources.ml.resx
index 3abca5ca5..b8c2071ec 100644
--- a/src/App/Resources/AppResources.ml.resx
+++ b/src/App/Resources/AppResources.ml.resx
@@ -2630,4 +2630,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.my.resx b/src/App/Resources/AppResources.my.resx
index ceaffdd00..d3ba16b90 100644
--- a/src/App/Resources/AppResources.my.resx
+++ b/src/App/Resources/AppResources.my.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.nb.resx b/src/App/Resources/AppResources.nb.resx
index 04b50f002..0dd2d2d67 100644
--- a/src/App/Resources/AppResources.nb.resx
+++ b/src/App/Resources/AppResources.nb.resx
@@ -2631,4 +2631,10 @@ Vil du bytte til denne kontoen?
Nåværende hovedpassord
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.ne.resx b/src/App/Resources/AppResources.ne.resx
index ceaffdd00..d3ba16b90 100644
--- a/src/App/Resources/AppResources.ne.resx
+++ b/src/App/Resources/AppResources.ne.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.nl.resx b/src/App/Resources/AppResources.nl.resx
index 5becc90b9..9eba0b8d4 100644
--- a/src/App/Resources/AppResources.nl.resx
+++ b/src/App/Resources/AppResources.nl.resx
@@ -2630,4 +2630,10 @@ Wilt u naar dit account wisselen?
Huidig hoofdwachtwoord
+
+ Hulptekst hoofdwachtwoord opnieuw vragen
+
+
+ Ontgrendelen kan mislukken als er onvoldoende geheugen is. Verminder je KDF-geheugeninstellingen om dit op te lossen
+
diff --git a/src/App/Resources/AppResources.nn.resx b/src/App/Resources/AppResources.nn.resx
index a6195852b..6027fd1e4 100644
--- a/src/App/Resources/AppResources.nn.resx
+++ b/src/App/Resources/AppResources.nn.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.or.resx b/src/App/Resources/AppResources.or.resx
index 67d09670c..82d37cb1d 100644
--- a/src/App/Resources/AppResources.or.resx
+++ b/src/App/Resources/AppResources.or.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.pl.resx b/src/App/Resources/AppResources.pl.resx
index 1411206af..10014c4da 100644
--- a/src/App/Resources/AppResources.pl.resx
+++ b/src/App/Resources/AppResources.pl.resx
@@ -2630,4 +2630,10 @@ Czy chcesz przełączyć się na to konto?
Aktualne hasło główne
+
+ Master password re-prompt help
+
+
+ Odblokowanie może się nie powieść z powodu niewystarczającej ilości pamięci. Zmniejsz ustawienia pamięci KDF, aby to rozwiązać
+
diff --git a/src/App/Resources/AppResources.pt-BR.resx b/src/App/Resources/AppResources.pt-BR.resx
index 0753a00a2..2c1e40328 100644
--- a/src/App/Resources/AppResources.pt-BR.resx
+++ b/src/App/Resources/AppResources.pt-BR.resx
@@ -2631,4 +2631,10 @@ Você deseja mudar para esta conta?
Senha mestra atual
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.pt-PT.resx b/src/App/Resources/AppResources.pt-PT.resx
index 77e76b9f6..271080db1 100644
--- a/src/App/Resources/AppResources.pt-PT.resx
+++ b/src/App/Resources/AppResources.pt-PT.resx
@@ -222,7 +222,7 @@
Pasta eliminada.
- Em nenhuma pasta
+ Sem pasta
Items that have no folder specified go in this special "catch-all" folder.
@@ -419,7 +419,7 @@
Extensão da aplicação
- Utilize o serviço de acessibilidade do Bitwarden para preencher automaticamente os seus inícios de sessão em todas as aplicações e na web.
+ Utilize o serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em todas as aplicações e na web.
Serviço de preenchimento automático
@@ -431,16 +431,16 @@
Extensão da aplicação Bitwarden
- A maneira mais fácil de adicionar novos inícios de sessão ao seu cofre é a partir da extensão da aplicação Bitwarden. Saiba mais sobre a utilização da extensão da aplicação Bitwarden ao navegar até ao ecrã "Definições".
+ A maneira mais fácil de adicionar novas credenciais ao seu cofre é a partir da extensão da aplicação Bitwarden. Saiba mais sobre a utilização da extensão da aplicação Bitwarden ao navegar até ao ecrã "Definições".
- Utilize o Bitwarden no Safari e noutras aplicações para preencher automaticamente os seus inícios de sessão.
+ Utilize o Bitwarden no Safari e noutras aplicações para preencher automaticamente as suas credenciais.
Serviço de preenchimento automático do Bitwarden
- Utilize o serviço de acessibilidade do Bitwarden para preencher automaticamente os seus inícios de sessão.
+ Utilize o serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais.
Alterar e-mail
@@ -496,7 +496,7 @@
Está pronto para iniciar sessão!
- Os seus inícios de sessão estão agora facilmente acessíveis a partir do Safari, Chrome, e outras aplicações suportadas.
+ As suas credenciais estão agora facilmente acessíveis a partir do Safari, Chrome, e outras aplicações suportadas.
No Safari e no Chrome, encontre o Bitwarden utilizando o ícone de partilha (dica: deslize para a direita na linha inferior do menu de partilha).
@@ -616,7 +616,7 @@
Não existem itens no seu cofre para este site/aplicação. Toque para adicionar um.
- Este início de sessão não tem um nome de utilizador ou palavra-passe configurados.
+ Esta credencial não tem um nome de utilizador ou palavra-passe configurados.
Ok, entendido!
@@ -784,7 +784,7 @@
Estado
- A maneira mais fácil de adicionar novos inícios de sessão ao seu cofre é a partir do Serviço de preenchimento automático do Bitwarden. Saiba mais sobre como utilizar o Serviço de preenchimento automático do Bitwarden ao navegar até ao ecrã "Definições".
+ A maneira mais fácil de adicionar novas credenciais ao seu cofre é a partir do Serviço de preenchimento automático do Bitwarden. Saiba mais sobre como utilizar o Serviço de preenchimento automático do Bitwarden ao navegar até ao ecrã "Definições".
Preencher automaticamente
@@ -842,7 +842,7 @@
Remember my two-step login
- Enviar código de verificação novamente
+ Enviar e-mail com o código de verificação novamente
For 2FA
@@ -916,7 +916,7 @@ A leitura será efetuada automaticamente.
Copiar TOTP
- Se um início de sessão tiver uma chave de autenticação, copie o código de verificação TOTP para a sua área de transferência quando preencher automaticamente o início de sessão.
+ Se uma credencial tiver uma chave de autenticação, copie o código de verificação TOTP para a sua área de transferência quando preencher automaticamente o início de sessão.
Copy TOTP automatically
@@ -1014,19 +1014,19 @@ A leitura será efetuada automaticamente.
Identidade
- Início de sessão
+ Credencial
Nota segura
- 1.ª morada
+ Endereço 1
- 2.ª morada
+ Endereço 2
- 3.ª morada
+ Endereço 3
Abril
@@ -1134,7 +1134,7 @@ A leitura será efetuada automaticamente.
Código postal
- Morada
+ Endereço
Expiração
@@ -1295,7 +1295,7 @@ A leitura será efetuada automaticamente.
Tem de iniciar sessão na aplicação Bitwarden principal antes de poder utilizar o preenchimento automático.
- Os seus inícios de sessão estão agora facilmente acessíveis a partir do seu teclado ao iniciar sessão em aplicações e sites.
+ As suas credenciais estão agora facilmente acessíveis a partir do seu teclado ao iniciar sessão em aplicações e sites.
Recomendamos a desativação de quaisquer outras aplicações de preenchimento automático nas Definições, se não tencionar utilizá-las.
@@ -1325,7 +1325,7 @@ A leitura será efetuada automaticamente.
Preenchimento automático de palavras-passe
- A maneira mais fácil de adicionar novos inícios de sessão ao seu cofre é utilizando a extensão de preenchimento automático de palavras-passe do Bitwarden. Saiba mais sobre como utilizar a extensão de preenchimento automático de palavras-passe do Bitwarden ao navegar até ao ecrã "Definições".
+ A maneira mais fácil de adicionar novas credenciais ao seu cofre é utilizando a extensão de preenchimento automático de palavras-passe do Bitwarden. Saiba mais sobre como utilizar a extensão de preenchimento automático de palavras-passe do Bitwarden ao navegar até ao ecrã "Definições".
Endereço de e-mail inválido.
@@ -1337,7 +1337,7 @@ A leitura será efetuada automaticamente.
Identidades
- Inícios de sessão
+ Credenciais
Notas seguras
@@ -1437,7 +1437,7 @@ A leitura será efetuada automaticamente.
Nenhuma organização para listar.
- Escolha uma organização para a qual pretende mover este item. Mover para uma organização transfere a propriedade do item para essa organização. Deixará de ser o proprietário directo deste item depois de este ter sido movido.
+ Escolha uma organização para a qual pretende mover este item. Mover para uma organização transfere a propriedade do item para essa organização. Deixará de ser o proprietário direto deste item depois de este ter sido movido.
Número de palavras
@@ -1540,7 +1540,7 @@ A leitura será efetuada automaticamente.
Default URI match detection for auto-fill.
- Escolha a forma predefinida como a deteção de correspondência de URI é tratada para inícios de sessão ao executar ações como o preenchimento automático.
+ Escolha a forma predefinida como a deteção de correspondência de URI é tratada para credenciais ao executar ações como o preenchimento automático.
Tema
@@ -1690,7 +1690,7 @@ A leitura será efetuada automaticamente.
Cofre exportado com sucesso
- Clonar
+ Duplicar
Clone an entity (verb).
@@ -1840,7 +1840,7 @@ A leitura será efetuada automaticamente.
Utilizar a acessibilidade
- Utilize o Serviço de acessibilidade do Bitwarden para preencher automaticamente os seus inícios de sessão em aplicações e na web. Quando configurado, exibiremos um pop-up quando os campos de início de sessão forem selecionados.
+ Utilize o Serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em aplicações e na web. Quando configurado, exibiremos um pop-up quando os campos de início de sessão forem selecionados.
Use the Bitwarden Accessibility Service to auto-fill your logins across apps and the web. (Requires Draw-Over to be turned on as well)
@@ -1858,7 +1858,7 @@ A leitura será efetuada automaticamente.
Allows the Bitwarden Accessibility Service to display a popup when login fields are selected.
- Se estiver ativado, o Serviço de acessibilidade do Bitwarden apresentará um pop-up quando os campos de início de sessão forem selecionados para ajudar no preenchimento automático dos seus inícios de sessão.
+ Se estiver ativado, o Serviço de acessibilidade do Bitwarden apresentará um pop-up quando os campos de início de sessão forem selecionados para ajudar no preenchimento automático das suas credenciais.
If turned on, accessibility will show a popup to augment the Autofill Service for older apps that don't support the Android Autofill Framework.
@@ -2021,7 +2021,7 @@ A leitura será efetuada automaticamente.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Send guardado
+ Send atualizado
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2095,7 +2095,7 @@ A leitura será efetuada automaticamente.
Atualizar palavra-passe mestra
- A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Se prosseguir, sairá da sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.
+ A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.
Updating password
@@ -2625,9 +2625,15 @@ Deseja mudar para esta conta?
Região
- A sua palavra-passe mestra não cumpre uma ou mais políticas da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Se prosseguir, sairá da sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.
+ A sua palavra-passe mestra não cumpre uma ou mais políticas da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.
Current master password
+
+ Master password re-prompt help
+
+
+ O desbloqueio pode falhar devido a memória insuficiente. Diminua as definições de memória do KDF para resolver o problema
+
diff --git a/src/App/Resources/AppResources.ro.resx b/src/App/Resources/AppResources.ro.resx
index 09866057d..6ddf289ff 100644
--- a/src/App/Resources/AppResources.ro.resx
+++ b/src/App/Resources/AppResources.ro.resx
@@ -2630,4 +2630,10 @@ Doriți să comutați la acest cont?
Parola principală curentă
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.ru.resx b/src/App/Resources/AppResources.ru.resx
index 6f005d28f..189958fce 100644
--- a/src/App/Resources/AppResources.ru.resx
+++ b/src/App/Resources/AppResources.ru.resx
@@ -2630,4 +2630,10 @@
Текущий мастер-пароль
+
+ Помощь с повторным запросом мастер-пароля
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.si.resx b/src/App/Resources/AppResources.si.resx
index 7c6c36aae..9a1511a63 100644
--- a/src/App/Resources/AppResources.si.resx
+++ b/src/App/Resources/AppResources.si.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.sk.resx b/src/App/Resources/AppResources.sk.resx
index ba197ee0a..9c3120c85 100644
--- a/src/App/Resources/AppResources.sk.resx
+++ b/src/App/Resources/AppResources.sk.resx
@@ -2630,4 +2630,10 @@ Chcete prepnúť na toto konto?
Súčasné hlavné heslo
+
+ Pomoc s opätovnou výzvou na zadanie hlavného hesla
+
+
+ Odomknutie môže zlyhať z dôvodu nedostatku pamäte. Znížte nastavenia pamäte KDF, aby ste vyriešili problém
+
diff --git a/src/App/Resources/AppResources.sl.resx b/src/App/Resources/AppResources.sl.resx
index 2da8658a7..7324fede5 100644
--- a/src/App/Resources/AppResources.sl.resx
+++ b/src/App/Resources/AppResources.sl.resx
@@ -382,7 +382,7 @@
Potrdi prstni odtis
- Potrdi glavno geslo
+ Preverjanje glavnega gesla
Potrdi PIN
@@ -446,13 +446,13 @@
Spremeni e-poštni naslov
- Svoje glavno geslo lahko spremenite na bitwarden.com spletnem trezorju. Želite to stran obiskati sedaj?
+ Svoje e-naslov lahko spremenite v spletnem trezorju na bitwarden.com. Želite to stran obiskati sedaj?
Spremeni glavno geslo
- Svoje glavno geslo lahko spremenite na bitwarden.com spletnem trezorju. Želite to stran obiskati sedaj?
+ Svoje glavno geslo lahko spremenite v spletnem trezorju na bitwarden.com. Želite to stran obiskati sedaj?
Zapri
@@ -461,7 +461,7 @@
Nadaljuj
- Ustvari račun
+ Ustvarite račun
Ustvarjanje računa...
@@ -578,16 +578,16 @@
The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it.
- Namig glavnega gesla (opcijsko)
+ Namig za glavno geslo (neobvezno)
- Namig glavnega gesla se vam lahko pomaga spomniti geslo, v kolikor bi ga pozabili.
+ Namig vam lahko pomaga, da se spomnite glavnega gesla, če bi ga pozabili.
Glavno geslo mora vsebovati vsaj {0} znakov.
- Minimalno števil
+ Minimalno števk
Minimum numeric characters for password generator settings
@@ -708,7 +708,7 @@
Prijava v dveh korakih
- Avtentikacija v dveh korakih naredi vaš račun bolj varen, saj od vas zahteva, da svojo prijavo preverite z drugo napravo, kot je varnostni ključ, aplikacija za preverjanje pristnosti, SMS, telefonski klic ali e-pošta. V spletnem trezorju bitwarden.com je lahko omogočite prijavo v dveh korakih. Ali želite spletno stran obiskati sedaj?
+ Avtentikacija v dveh korakih naredi vaš račun bolj varen, saj od vas zahteva, da svojo prijavo potrdite z drugo napravo oz. na dodaten način, n.pr. varnostni ključ, aplikacija za preverjanje pristnosti, SMS, telefonski klic ali e-pošta. Prijavo v dveh korakih lahko omogočite v spletnem trezorju bitwarden.com. Ali želite to spletno stran obiskati sedaj?
Odkleni z {0}
@@ -1468,7 +1468,7 @@ Scanning will happen automatically.
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.
- Bitwaren omogoča delitev vašega trezorja z drugimi s pomočjo organizacijskega računa. Želite obiskati bitwarden.dom spletno stran za več informacij?
+ Bitwaren vam omogoča souporabo vašega trezorja z drugimi s pomočjo računa organizacije. Želite obiskati spletno mesto bitwarden.dom za več informacij?
Izvoz trezorja
@@ -1496,7 +1496,7 @@ Scanning will happen automatically.
ex: Logged in as user@example.com on bitwarden.com.
- Vaš trezor je zaklenjen. Potrdite vaše glavno geslo za nadaljevanje.
+ Vaš trezor je zaklenjen. Vpišite svoje glavno geslo za nadaljevanje.
Vaš trezor je zaklenjen. Potrdite PIN kodo za nadaljevanje.
@@ -1813,8 +1813,7 @@ Scanning will happen automatically.
Nalaganje
- By activating this switch you agree to the following:
-
+ Potrjujem, da se strinjam z naslednjim:
Terms of Service and Privacy Policy have not been acknowledged.
@@ -2075,7 +2074,7 @@ Scanning will happen automatically.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Master password re-prompt
+ Ponovno zahtevaj glavno geslo
Master password confirmation
@@ -2246,7 +2245,7 @@ Scanning will happen automatically.
Male črke (a-z)
- Numbers (0 to 9)
+ Števke (0-9)
Posebni znaki (!@#$%^&*)
@@ -2391,22 +2390,22 @@ select Add TOTP to store the key safely
Kaj želite generirati?
- Username type
+ Vrsta uporabniškega imena
- Plus addressed email
+ E-naslov s plusom
- Catch-all email
+ E-naslov za vse
- Forwarded email alias
+ Posredniški psevdonim
- Random word
+ Naključna beseda
- Email (required)
+ E-naslov (obvezno)
Domain name (required)
@@ -2447,7 +2446,7 @@ select Add TOTP to store the key safely
Generiraj uporabniško ime
- Email Type
+ Vrsta e-pošte
Website (required)
@@ -2456,16 +2455,16 @@ select Add TOTP to store the key safely
Unknown {0} error occurred.
- Use your email provider's subaddress capabilities
+ Uporabite možnosti podnaslavljanja vašega ponudnika elektronske pošte.
- Use your domain's configured catch-all inbox.
+ Uporabite naslov za vse ("catch-all"), ki ste ga nastavili za svojo domeno.
- Generate an email alias with an external forwarding service.
+ Ustvari psevdonim (alias) za elektronski naslov z uporabo zunanjega ponudnika posredovanja pošte.
- Random
+ Naključno
Connect to Watch
@@ -2620,10 +2619,10 @@ Do you want to switch to this account?
Self-hosted
- Data region
+ Podatkovna regija
- Region
+ Regija
Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.
@@ -2631,4 +2630,10 @@ Do you want to switch to this account?
Trenutno glavno geslo
+
+ Pomoč o ponovnem zahtevku za glavno geslo
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.sr.resx b/src/App/Resources/AppResources.sr.resx
index 039096db0..25a1ec2bc 100644
--- a/src/App/Resources/AppResources.sr.resx
+++ b/src/App/Resources/AppResources.sr.resx
@@ -2632,4 +2632,10 @@
Тренутна главна лозинка
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.sv.resx b/src/App/Resources/AppResources.sv.resx
index 9f6fa168c..5809aac31 100644
--- a/src/App/Resources/AppResources.sv.resx
+++ b/src/App/Resources/AppResources.sv.resx
@@ -2632,4 +2632,10 @@ Vill du byta till detta konto?
Nuvarande huvudlösenord
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.ta.resx b/src/App/Resources/AppResources.ta.resx
index 3594b496d..c27f12abd 100644
--- a/src/App/Resources/AppResources.ta.resx
+++ b/src/App/Resources/AppResources.ta.resx
@@ -2631,4 +2631,10 @@ select Add TOTP to store the key safely
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.te.resx b/src/App/Resources/AppResources.te.resx
index ceaffdd00..d3ba16b90 100644
--- a/src/App/Resources/AppResources.te.resx
+++ b/src/App/Resources/AppResources.te.resx
@@ -2631,4 +2631,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.th.resx b/src/App/Resources/AppResources.th.resx
index fdeb4418f..af4435eb4 100644
--- a/src/App/Resources/AppResources.th.resx
+++ b/src/App/Resources/AppResources.th.resx
@@ -2638,4 +2638,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.tr.resx b/src/App/Resources/AppResources.tr.resx
index 977699df0..152c53489 100644
--- a/src/App/Resources/AppResources.tr.resx
+++ b/src/App/Resources/AppResources.tr.resx
@@ -2629,4 +2629,10 @@ Bu hesaba geçmek ister misiniz?
Mevcut ana parola
+
+ Ana parola yeniden istemi yardımı
+
+
+ Yetersiz bellek nedeniyle kilit açma başarısız olabilir. Çözmek için KDF bellek ayarlarınızı azaltın
+
diff --git a/src/App/Resources/AppResources.uk.resx b/src/App/Resources/AppResources.uk.resx
index fa8502bde..d73e0dba2 100644
--- a/src/App/Resources/AppResources.uk.resx
+++ b/src/App/Resources/AppResources.uk.resx
@@ -2630,4 +2630,10 @@
Поточний головний пароль
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.vi.resx b/src/App/Resources/AppResources.vi.resx
index 948312155..726be32c1 100644
--- a/src/App/Resources/AppResources.vi.resx
+++ b/src/App/Resources/AppResources.vi.resx
@@ -2630,4 +2630,10 @@ Do you want to switch to this account?
Current master password
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/src/App/Resources/AppResources.zh-Hans.resx b/src/App/Resources/AppResources.zh-Hans.resx
index d7bbd3fdd..137ad4a73 100644
--- a/src/App/Resources/AppResources.zh-Hans.resx
+++ b/src/App/Resources/AppResources.zh-Hans.resx
@@ -2630,4 +2630,10 @@
当前主密码
+
+ 主密码重新询问帮助
+
+
+ 解锁可能由于内存不足而失败。可以通过减少 KDF 内存设置来解决。
+
diff --git a/src/App/Resources/AppResources.zh-Hant.resx b/src/App/Resources/AppResources.zh-Hant.resx
index 4dbc8d3b4..735e7f9a9 100644
--- a/src/App/Resources/AppResources.zh-Hant.resx
+++ b/src/App/Resources/AppResources.zh-Hant.resx
@@ -2630,4 +2630,10 @@
目前主密碼
+
+ Master password re-prompt help
+
+
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+
diff --git a/store/apple/pt-PT/copy.resx b/store/apple/pt-PT/copy.resx
index b6ba0902c..5038a1ee3 100644
--- a/store/apple/pt-PT/copy.resx
+++ b/store/apple/pt-PT/copy.resx
@@ -151,11 +151,11 @@ Secure and share sensitive data within your Bitwarden Vault from any browser, mo
Max 4000 characters
- bit warden,8bit,palavra-passe,gestor de palavras-passe gratuito,gestor de palavras-passe,gestor de inícios de sessão
+ bit warden,8bit,palavra-passe,gestor de palavras-passe gratuito,gestor de palavras-passe,gestor de credenciais
Max 100 characters
- Gira todos os seus inícios de sessão e palavras-passe a partir de um cofre seguro
+ Gira todos as suas credenciais e palavras-passe a partir de um cofre seguro
Gera automaticamente palavras-passe fortes, aleatórias e seguras
@@ -164,7 +164,7 @@ Secure and share sensitive data within your Bitwarden Vault from any browser, mo
Proteja o seu cofre com Touch ID, código PIN ou palavra-passe mestra
- Preenchimento automático de inícios de sessão no Safari, Chrome e centenas de outras aplicações
+ Preenchimento automático de credenciais no Safari, Chrome e centenas de outras aplicações
Sincronize e aceda ao seu cofre através de vários dispositivos
diff --git a/store/google/pt-PT/copy.resx b/store/google/pt-PT/copy.resx
index 250d8ad4c..65ccd2687 100644
--- a/store/google/pt-PT/copy.resx
+++ b/store/google/pt-PT/copy.resx
@@ -122,7 +122,7 @@
Max 30 characters
- O Bitwarden é um gestor de inícios de sessão e de palavras-passe que o ajuda a manter-se seguro enquanto está online.
+ O Bitwarden é um gestor de credenciais e de palavras-passe que o ajuda a manter-se seguro enquanto está online.
Max 80 characters
@@ -158,7 +158,7 @@ Secure and share sensitive data within your Bitwarden Vault from any browser, mo
Um gestor de palavras-passe seguro e gratuito para todos os seus dispositivos
- Gira todos os seus inícios de sessão e palavras-passe a partir de um cofre seguro
+ Gira todos as suas credenciais e palavras-passe a partir de um cofre seguro
Gera automaticamente palavras-passe fortes, aleatórias e seguras
@@ -167,7 +167,7 @@ Secure and share sensitive data within your Bitwarden Vault from any browser, mo
Proteja o seu cofre com impressão digital, código PIN ou palavra-passe mestra
- Preencha rapidamente os inícios de sessão de forma automática a partir do seu navegador web e de outras aplicações
+ Preencha rapidamente as credenciais de forma automática a partir do seu navegador web e de outras aplicações
Sincronize e aceda ao seu cofre a partir de vários dispositivos
From f604da13a1cedb801a2758237f8998094615d53e Mon Sep 17 00:00:00 2001
From: Opeyemi <54288773+Eeebru@users.noreply.github.com>
Date: Tue, 13 Jun 2023 15:57:02 +0100
Subject: [PATCH 16/33] add more comment to missing actions (#2567)
---
.github/workflows/build.yml | 2 +-
.github/workflows/crowdin-pull.yml | 2 +-
.github/workflows/enforce-labels.yml | 2 +-
.github/workflows/release.yml | 8 ++++----
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 452fe72b8..57812aa82 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -793,7 +793,7 @@ jobs:
done
- name: Upload Sources
- uses: crowdin/github-action@ecd7eb0ef6f3cfa16293c79e9cbc4bc5b5fd9c49 # v1.4.9
+ uses: crowdin/github-action@965d501f160af7b1f88aed4c29154b0caf1e94b9 # v1.9.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }}
diff --git a/.github/workflows/crowdin-pull.yml b/.github/workflows/crowdin-pull.yml
index 36aaaa9ab..a2a297a19 100644
--- a/.github/workflows/crowdin-pull.yml
+++ b/.github/workflows/crowdin-pull.yml
@@ -30,7 +30,7 @@ jobs:
secrets: "crowdin-api-token, github-gpg-private-key, github-gpg-private-key-passphrase"
- name: Download translations
- uses: crowdin/github-action@ecd7eb0ef6f3cfa16293c79e9cbc4bc5b5fd9c49 # v1.4.9
+ uses: crowdin/github-action@965d501f160af7b1f88aed4c29154b0caf1e94b9 # v1.9.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }}
diff --git a/.github/workflows/enforce-labels.yml b/.github/workflows/enforce-labels.yml
index 417e34e9b..4e3127761 100644
--- a/.github/workflows/enforce-labels.yml
+++ b/.github/workflows/enforce-labels.yml
@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Enforce Label
- uses: yogevbd/enforce-label-action@a3c219da6b8fa73f6ba62b68ff09c469b3a1c024 # v2.2.2
+ uses: yogevbd/enforce-label-action@a3c219da6b8fa73f6ba62b68ff09c469b3a1c024 # 2.2.2
with:
BANNED_LABELS: "hold,needs-qa"
BANNED_LABELS_DESCRIPTION: "PRs with the hold or needs-qa labels cannot be merged"
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index f1e57bbe9..50f4128e9 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -68,7 +68,7 @@ jobs:
- name: Download all artifacts
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: dawidd6/action-download-artifact@575b1e4167df67acf7e692af784566618b23c71e # v2.17.10
+ uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0
with:
workflow: build.yml
workflow_conclusion: success
@@ -76,7 +76,7 @@ jobs:
- name: Dry Run - Download all artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: dawidd6/action-download-artifact@575b1e4167df67acf7e692af784566618b23c71e # v2.17.10
+ uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0
with:
workflow: build.yml
workflow_conclusion: success
@@ -130,7 +130,7 @@ jobs:
- name: Download F-Droid .apk artifact
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: dawidd6/action-download-artifact@575b1e4167df67acf7e692af784566618b23c71e # v2.17.10
+ uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0
with:
workflow: build.yml
workflow_conclusion: success
@@ -139,7 +139,7 @@ jobs:
- name: Dry Run - Download F-Droid .apk artifact
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: dawidd6/action-download-artifact@575b1e4167df67acf7e692af784566618b23c71e # v2.17.10
+ uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0
with:
workflow: build.yml
workflow_conclusion: success
From 04e30c21462fb379cf57244dff700fd65a632cdb Mon Sep 17 00:00:00 2001
From: mpbw2 <59324545+mpbw2@users.noreply.github.com>
Date: Tue, 13 Jun 2023 12:46:41 -0400
Subject: [PATCH 17/33] Update F-Droid listing author name (#2501)
Update F-Droid listing author name to `Bitwarden Inc`
---
store/fdroid/metadata/com.x8bit.bitwarden.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/store/fdroid/metadata/com.x8bit.bitwarden.yml b/store/fdroid/metadata/com.x8bit.bitwarden.yml
index ef7c14a74..47eb42eca 100644
--- a/store/fdroid/metadata/com.x8bit.bitwarden.yml
+++ b/store/fdroid/metadata/com.x8bit.bitwarden.yml
@@ -7,7 +7,7 @@ SourceCode: https://github.com/bitwarden/mobile
Changelog: https://github.com/bitwarden/mobile/releases
WebSite: https://bitwarden.com
-AuthorName: 8bit Solutions LLC
+AuthorName: Bitwarden, Inc.
Name: Bitwarden
Summary: A secure and free password manager for all of your devices.
Description: |
From 1332ef7b433e8645eecfdeefdc9fe483adec5a7d Mon Sep 17 00:00:00 2001
From: mpbw2 <59324545+mpbw2@users.noreply.github.com>
Date: Tue, 13 Jun 2023 13:54:28 -0400
Subject: [PATCH 18/33] Enhancement to login field detection for Android
autofill (#2561)
---
src/Android/Autofill/FieldCollection.cs | 41 +++++++++++++------------
1 file changed, 21 insertions(+), 20 deletions(-)
diff --git a/src/Android/Autofill/FieldCollection.cs b/src/Android/Autofill/FieldCollection.cs
index a01aaad70..63d2e512b 100644
--- a/src/Android/Autofill/FieldCollection.cs
+++ b/src/Android/Autofill/FieldCollection.cs
@@ -12,7 +12,7 @@ namespace Bit.Droid.Autofill
private List _passwordFields = null;
private List _usernameFields = null;
private HashSet _ignoreSearchTerms = new HashSet { "search", "find", "recipient", "edit" };
- private HashSet _usernameTerms = new HashSet { "email", "phone", "username"};
+ private HashSet _usernameTerms = new HashSet { "email", "phone", "username" };
private HashSet _passwordTerms = new HashSet { "password", "pswd" };
public List AutofillIds { get; private set; } = new List();
@@ -54,15 +54,14 @@ namespace Bit.Droid.Autofill
if (HintToFieldsMap.ContainsKey(View.AutofillHintPassword))
{
_passwordFields.AddRange(HintToFieldsMap[View.AutofillHintPassword]);
+ return _passwordFields;
}
}
- else
+
+ _passwordFields = Fields.Where(f => FieldIsPassword(f)).ToList();
+ if (!_passwordFields.Any())
{
- _passwordFields = Fields.Where(f => FieldIsPassword(f)).ToList();
- if (!_passwordFields.Any())
- {
- _passwordFields = Fields.Where(f => FieldHasPasswordTerms(f)).ToList();
- }
+ _passwordFields = Fields.Where(f => FieldHasPasswordTerms(f)).ToList();
}
return _passwordFields;
}
@@ -87,24 +86,26 @@ namespace Bit.Droid.Autofill
{
_usernameFields.AddRange(HintToFieldsMap[View.AutofillHintUsername]);
}
+ if (_usernameFields.Any())
+ {
+ return _usernameFields;
+ }
}
- else
- {
- foreach (var passwordField in PasswordFields)
- {
- var usernameField = Fields.TakeWhile(f => f.AutofillId != passwordField.AutofillId)
- .LastOrDefault();
- if (usernameField != null)
- {
- _usernameFields.Add(usernameField);
- }
- }
- if (!_usernameFields.Any())
+ foreach (var passwordField in PasswordFields)
+ {
+ var usernameField = Fields.TakeWhile(f => f.AutofillId != passwordField.AutofillId)
+ .LastOrDefault();
+ if (usernameField != null)
{
- _usernameFields = Fields.Where(f => FieldIsUsername(f)).ToList();
+ _usernameFields.Add(usernameField);
}
}
+
+ if (!_usernameFields.Any())
+ {
+ _usernameFields = Fields.Where(f => FieldIsUsername(f)).ToList();
+ }
return _usernameFields;
}
}
From 98705e443f321411dd3b7c8d54581fe4462cc3c5 Mon Sep 17 00:00:00 2001
From: Federico Maccaroni
Date: Tue, 13 Jun 2023 22:38:08 +0200
Subject: [PATCH 19/33] PM-2575 Fixed extension freeze when using the return
button on the keyboard when unlocking the extension. Also added way to
prevent multiple executions of checking the password and logging exceptions.
(#2568)
---
src/App/Resources/AppResources.Designer.cs | 2 +-
src/App/Resources/AppResources.resx | 2 +-
.../LockPasswordViewController.cs | 3 +-
.../BaseLockPasswordViewController.cs | 176 ++++++++++--------
4 files changed, 99 insertions(+), 84 deletions(-)
diff --git a/src/App/Resources/AppResources.Designer.cs b/src/App/Resources/AppResources.Designer.cs
index 51a6cfb8c..f4bf3ff61 100644
--- a/src/App/Resources/AppResources.Designer.cs
+++ b/src/App/Resources/AppResources.Designer.cs
@@ -6435,7 +6435,7 @@ namespace Bit.App.Resources {
}
///
- /// Looks up a localized string similar to Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
+ /// Looks up a localized string similar to Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve..
///
public static string UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve {
get {
diff --git a/src/App/Resources/AppResources.resx b/src/App/Resources/AppResources.resx
index f4bae0727..8fa9d4375 100644
--- a/src/App/Resources/AppResources.resx
+++ b/src/App/Resources/AppResources.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/iOS.Autofill/LockPasswordViewController.cs b/src/iOS.Autofill/LockPasswordViewController.cs
index a2cad5568..7f5df4c7e 100644
--- a/src/iOS.Autofill/LockPasswordViewController.cs
+++ b/src/iOS.Autofill/LockPasswordViewController.cs
@@ -1,5 +1,6 @@
using System;
using Bit.App.Controls;
+using Bit.Core.Utilities;
using Bit.iOS.Core.Utilities;
using UIKit;
@@ -44,7 +45,7 @@ namespace Bit.iOS.Autofill
partial void SubmitButton_Activated(UIBarButtonItem sender)
{
- var task = CheckPasswordAsync();
+ CheckPasswordAsync().FireAndForget();
}
partial void CancelButton_Activated(UIBarButtonItem sender)
diff --git a/src/iOS.Core/Controllers/BaseLockPasswordViewController.cs b/src/iOS.Core/Controllers/BaseLockPasswordViewController.cs
index db0a946c2..0edccc732 100644
--- a/src/iOS.Core/Controllers/BaseLockPasswordViewController.cs
+++ b/src/iOS.Core/Controllers/BaseLockPasswordViewController.cs
@@ -36,6 +36,7 @@ namespace Bit.iOS.Core.Controllers
private bool _passwordReprompt = false;
private bool _usesKeyConnector;
private bool _biometricUnlockOnly = false;
+ private bool _checkingPassword;
protected bool autofillExtension = false;
@@ -154,7 +155,7 @@ namespace Bit.iOS.Core.Controllers
MasterPasswordCell.TextField.ReturnKeyType = UIReturnKeyType.Go;
MasterPasswordCell.TextField.ShouldReturn += (UITextField tf) =>
{
- CheckPasswordAsync().GetAwaiter().GetResult();
+ CheckPasswordAsync().FireAndForget();
return true;
};
if (_pinLock)
@@ -208,108 +209,121 @@ namespace Bit.iOS.Core.Controllers
MasterPasswordCell.TextField.BecomeFirstResponder();
}
}
-
+
protected async Task CheckPasswordAsync()
{
- if (string.IsNullOrWhiteSpace(MasterPasswordCell.TextField.Text))
- {
- var alert = Dialogs.CreateAlert(AppResources.AnErrorHasOccurred,
- string.Format(AppResources.ValidationFieldRequired,
- _pinLock ? AppResources.PIN : AppResources.MasterPassword),
- AppResources.Ok);
- PresentViewController(alert, true, null);
- return;
- }
-
- var email = await _stateService.GetEmailAsync();
- var kdfConfig = await _stateService.GetActiveUserCustomDataAsync(a => new KdfConfig(a?.Profile));
- var inputtedValue = MasterPasswordCell.TextField.Text;
-
- // HACK: iOS extensions have constrained memory, given how it works Argon2Id, it's likely to crash
- // the extension depending on the argon2id memory configured.
- // So, we warn the user and advise to decrease the configured memory letting them the option to continue, if wanted.
- if (kdfConfig.Type == KdfType.Argon2id
- &&
- kdfConfig.Memory > Constants.MaximumArgon2IdMemoryBeforeExtensionCrashing
- &&
- !await _platformUtilsService.ShowDialogAsync(AppResources.UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve, AppResources.Warning, AppResources.Continue, AppResources.Cancel))
+ if (_checkingPassword)
{
return;
}
+ _checkingPassword = true;
- if (_pinLock)
+ try
{
- var failed = true;
- try
+ if (string.IsNullOrWhiteSpace(MasterPasswordCell.TextField.Text))
{
- if (_isPinProtected)
+ var alert = Dialogs.CreateAlert(AppResources.AnErrorHasOccurred,
+ string.Format(AppResources.ValidationFieldRequired,
+ _pinLock ? AppResources.PIN : AppResources.MasterPassword),
+ AppResources.Ok);
+ PresentViewController(alert, true, null);
+ return;
+ }
+
+ var email = await _stateService.GetEmailAsync();
+ var kdfConfig = await _stateService.GetActiveUserCustomDataAsync(a => new KdfConfig(a?.Profile));
+ var inputtedValue = MasterPasswordCell.TextField.Text;
+
+ // HACK: iOS extensions have constrained memory, given how it works Argon2Id, it's likely to crash
+ // the extension depending on the argon2id memory configured.
+ // So, we warn the user and advise to decrease the configured memory letting them the option to continue, if wanted.
+ if (kdfConfig.Type == KdfType.Argon2id
+ &&
+ kdfConfig.Memory > Constants.MaximumArgon2IdMemoryBeforeExtensionCrashing
+ &&
+ !await _platformUtilsService.ShowDialogAsync(AppResources.UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve, AppResources.Warning, AppResources.Continue, AppResources.Cancel))
+ {
+ return;
+ }
+
+ if (_pinLock)
+ {
+ var failed = true;
+ try
{
- var key = await _cryptoService.MakeKeyFromPinAsync(inputtedValue, email,
- kdfConfig,
- await _stateService.GetPinProtectedKeyAsync());
- var encKey = await _cryptoService.GetEncKeyAsync(key);
- var protectedPin = await _stateService.GetProtectedPinAsync();
- var decPin = await _cryptoService.DecryptToUtf8Async(new EncString(protectedPin), encKey);
- failed = decPin != inputtedValue;
- if (!failed)
+ if (_isPinProtected)
{
+ var key = await _cryptoService.MakeKeyFromPinAsync(inputtedValue, email,
+ kdfConfig,
+ await _stateService.GetPinProtectedKeyAsync());
+ var encKey = await _cryptoService.GetEncKeyAsync(key);
+ var protectedPin = await _stateService.GetProtectedPinAsync();
+ var decPin = await _cryptoService.DecryptToUtf8Async(new EncString(protectedPin), encKey);
+ failed = decPin != inputtedValue;
+ if (!failed)
+ {
+ await AppHelpers.ResetInvalidUnlockAttemptsAsync();
+ await SetKeyAndContinueAsync(key);
+ }
+ }
+ else
+ {
+ var key2 = await _cryptoService.MakeKeyFromPinAsync(inputtedValue, email,
+ kdfConfig);
+ failed = false;
await AppHelpers.ResetInvalidUnlockAttemptsAsync();
- await SetKeyAndContinueAsync(key);
+ await SetKeyAndContinueAsync(key2);
}
}
- else
+ catch
{
- var key2 = await _cryptoService.MakeKeyFromPinAsync(inputtedValue, email,
- kdfConfig);
- failed = false;
- await AppHelpers.ResetInvalidUnlockAttemptsAsync();
- await SetKeyAndContinueAsync(key2);
+ failed = true;
}
- }
- catch
- {
- failed = true;
- }
- if (failed)
- {
- await HandleFailedCredentialsAsync();
- }
- }
- else
- {
- var key2 = await _cryptoService.MakeKeyAsync(inputtedValue, email, kdfConfig);
-
- var storedKeyHash = await _cryptoService.GetKeyHashAsync();
- if (storedKeyHash == null)
- {
- var oldKey = await _secureStorageService.GetAsync("oldKey");
- if (key2.KeyB64 == oldKey)
+ if (failed)
{
- var localKeyHash = await _cryptoService.HashPasswordAsync(inputtedValue, key2, HashPurpose.LocalAuthorization);
- await _secureStorageService.RemoveAsync("oldKey");
- await _cryptoService.SetKeyHashAsync(localKeyHash);
+ await HandleFailedCredentialsAsync();
}
}
- var passwordValid = await _cryptoService.CompareAndUpdateKeyHashAsync(inputtedValue, key2);
- if (passwordValid)
- {
- if (_isPinProtected)
- {
- var protectedPin = await _stateService.GetProtectedPinAsync();
- var encKey = await _cryptoService.GetEncKeyAsync(key2);
- var decPin = await _cryptoService.DecryptToUtf8Async(new EncString(protectedPin), encKey);
- var pinKey = await _cryptoService.MakePinKeyAysnc(decPin, email,
- kdfConfig);
- await _stateService.SetPinProtectedKeyAsync(await _cryptoService.EncryptAsync(key2.Key, pinKey));
- }
- await AppHelpers.ResetInvalidUnlockAttemptsAsync();
- await SetKeyAndContinueAsync(key2, true);
- }
else
{
- await HandleFailedCredentialsAsync();
+ var key2 = await _cryptoService.MakeKeyAsync(inputtedValue, email, kdfConfig);
+
+ var storedKeyHash = await _cryptoService.GetKeyHashAsync();
+ if (storedKeyHash == null)
+ {
+ var oldKey = await _secureStorageService.GetAsync("oldKey");
+ if (key2.KeyB64 == oldKey)
+ {
+ var localKeyHash = await _cryptoService.HashPasswordAsync(inputtedValue, key2, HashPurpose.LocalAuthorization);
+ await _secureStorageService.RemoveAsync("oldKey");
+ await _cryptoService.SetKeyHashAsync(localKeyHash);
+ }
+ }
+ var passwordValid = await _cryptoService.CompareAndUpdateKeyHashAsync(inputtedValue, key2);
+ if (passwordValid)
+ {
+ if (_isPinProtected)
+ {
+ var protectedPin = await _stateService.GetProtectedPinAsync();
+ var encKey = await _cryptoService.GetEncKeyAsync(key2);
+ var decPin = await _cryptoService.DecryptToUtf8Async(new EncString(protectedPin), encKey);
+ var pinKey = await _cryptoService.MakePinKeyAysnc(decPin, email,
+ kdfConfig);
+ await _stateService.SetPinProtectedKeyAsync(await _cryptoService.EncryptAsync(key2.Key, pinKey));
+ }
+ await AppHelpers.ResetInvalidUnlockAttemptsAsync();
+ await SetKeyAndContinueAsync(key2, true);
+ }
+ else
+ {
+ await HandleFailedCredentialsAsync();
+ }
}
}
+ finally
+ {
+ _checkingPassword = false;
+ }
}
private async Task HandleFailedCredentialsAsync()
From 52843b4181e05ac4bbfb60a7431fa72537f92228 Mon Sep 17 00:00:00 2001
From: ifernandezdiaz
Date: Wed, 14 Jun 2023 09:34:38 -0300
Subject: [PATCH 20/33] [PM-2544] Adding AutomationIDs for
CipherAddEditViewPage elements (#2564)
* Adding AutomationIDs for Add/Edit Items page
* Adding IDs to CustomFields
* Adding Matt's suggestions
* Adding newest suggestions
---
.../BooleanCustomFieldItemLayout.xaml | 9 +-
.../HiddenCustomFieldItemLayout.xaml | 12 +-
.../LinkedCustomFieldItemLayout.xaml | 12 +-
.../TextCustomFieldItemLayout.xaml | 15 +-
src/App/Pages/Vault/CipherAddEditPage.xaml | 169 ++++++++++++------
5 files changed, 142 insertions(+), 75 deletions(-)
diff --git a/src/App/Lists/ItemLayouts/CustomFields/BooleanCustomFieldItemLayout.xaml b/src/App/Lists/ItemLayouts/CustomFields/BooleanCustomFieldItemLayout.xaml
index c50cf53eb..6c7d22ed7 100644
--- a/src/App/Lists/ItemLayouts/CustomFields/BooleanCustomFieldItemLayout.xaml
+++ b/src/App/Lists/ItemLayouts/CustomFields/BooleanCustomFieldItemLayout.xaml
@@ -33,7 +33,8 @@
StyleClass="box-label"
Grid.Row="0"
Grid.Column="0"
- IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}" />
+ IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}"
+ AutomationId="BooleanCustomFieldNameLabel" />
+ IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}"
+ AutomationId="BooleanCustomFieldValueLabel" />
+ Grid.RowSpan="2"
+ AutomationId="BooleanCustomFieldValueToggle" />
+ Grid.Column="0"
+ AutomationId="HiddenCustomFieldNameLabel" />
+ IsVisible="{Binding ShowHiddenValue}"
+ AutomationId="HiddenCustomFieldValueLabel" />
+ AutomationProperties.Name="{Binding Field.Name}"
+ AutomationId="HiddenCustomFieldValueEntry">
@@ -74,7 +77,8 @@
Grid.Column="1"
Grid.RowSpan="2"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n ToggleVisibility}" />
+ AutomationProperties.Name="{u:I18n ToggleVisibility}"
+ AutomationId="HiddenCustomFieldShowValueButton" />
+ Grid.Column="0"
+ AutomationId="LinkedCustomFieldNameLabel" />
+ IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}"
+ AutomationId="LinkedCustomFieldValueLabel" />
@@ -44,7 +46,8 @@
ItemsSource="{Binding LinkedFieldOptions, Mode=OneTime}"
SelectedIndex="{Binding LinkedFieldOptionSelectedIndex}"
ItemDisplayBinding="{Binding Key}"
- StyleClass="box-value" />
+ StyleClass="box-value"
+ AutomationId="LinkedCustomFieldValuePicker" />
+ AutomationProperties.Name="{u:I18n Options}"
+ AutomationId="LinkedCustomFieldOptionsButton" />
diff --git a/src/App/Lists/ItemLayouts/CustomFields/TextCustomFieldItemLayout.xaml b/src/App/Lists/ItemLayouts/CustomFields/TextCustomFieldItemLayout.xaml
index 238fbe0ab..23e243119 100644
--- a/src/App/Lists/ItemLayouts/CustomFields/TextCustomFieldItemLayout.xaml
+++ b/src/App/Lists/ItemLayouts/CustomFields/TextCustomFieldItemLayout.xaml
@@ -29,13 +29,15 @@
Text="{Binding Field.Name, Mode=OneWay}"
StyleClass="box-label"
Grid.Row="0"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationId="TextCustomFieldNameLabel" />
+ IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}"
+ AutomationId="TextCustomFieldValueLabel" />
+ AutomationProperties.Name="{Binding Field.Name}"
+ AutomationId="TextCustomFieldValueEntry" />
+ AutomationProperties.Name="{u:I18n Copy}"
+ AutomationId="TextCustomFieldCopyValue" />
+ AutomationProperties.Name="{u:I18n Options}"
+ AutomationId="TextCustomFieldOptionsButton" />
diff --git a/src/App/Pages/Vault/CipherAddEditPage.xaml b/src/App/Pages/Vault/CipherAddEditPage.xaml
index 1ca611f48..772701cde 100644
--- a/src/App/Pages/Vault/CipherAddEditPage.xaml
+++ b/src/App/Pages/Vault/CipherAddEditPage.xaml
@@ -57,16 +57,16 @@
x:Key="deleteItem" />
-
+
-
+
-
+
-
+
+ HorizontalTextAlignment="Center"
+ AutomationId="PersonalOwnershipPolicyLabel"/>
@@ -116,7 +117,8 @@
x:Name="_typePicker"
ItemsSource="{Binding TypeOptions, Mode=OneTime}"
SelectedIndex="{Binding TypeSelectedIndex}"
- StyleClass="box-value" />
+ StyleClass="box-value"
+ AutomationId="ItemTypePicker" />
+ AutomationProperties.Name="{u:I18n Name}"
+ AutomationId="ItemNameEntry" />
+ AutomationProperties.Name="{u:I18n Username}"
+ AutomationId="LoginUsernameEntry" />
+ AutomationProperties.Name="{u:I18n GenerateUsername}"
+ AutomationId="GenerateUsernameButton" />
@@ -180,7 +185,8 @@
IsTextPredictionEnabled="False"
IsEnabled="{Binding Cipher.ViewPassword}"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n Password}"/>
+ AutomationProperties.Name="{u:I18n Password}"
+ AutomationId="LoginPasswordEntry" />
+ IsVisible="{Binding Cipher.ViewPassword}"
+ AutomationId="CheckPasswordButton" />
+ IsVisible="{Binding Cipher.ViewPassword}"
+ AutomationId="ViewPasswordButton" />
+ IsVisible="{Binding Cipher.ViewPassword}"
+ AutomationId="RegeneratePasswordButton" />
@@ -247,7 +256,8 @@
Padding="0,15"
HorizontalOptions="Center"
VerticalOptions="FillAndExpand"
- VerticalTextAlignment="Center" />
+ VerticalTextAlignment="Center"
+ AutomationId="SetupTotpButton" />
+ AutomationProperties.Name="{u:I18n AuthenticatorKey}"
+ AutomationId="LoginTotpEntry" />
+ AutomationProperties.Name="{u:I18n CopyTotp}"
+ AutomationId="CopyTotpValueButton" />
+ AutomationProperties.Name="{u:I18n ScanQrTitle}"
+ />
@@ -293,7 +306,8 @@
+ StyleClass="box-value"
+ AutomationId="CardholderNameEntry" />
@@ -319,7 +333,8 @@
IsSpellCheckEnabled="False"
IsTextPredictionEnabled="False"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n Number}" />
+ AutomationProperties.Name="{u:I18n Number}"
+ AutomationId="CardNumberEntry" />
+ AutomationProperties.Name="{u:I18n ToggleVisibility}"
+ AutomationId="ShowCardNumberButton" />
+ StyleClass="box-value"
+ AutomationId="CardBrandPicker" />
+ StyleClass="box-value"
+ AutomationId="CardExpirationMonthPicker" />
+ AutomationProperties.Name="{u:I18n ExpirationYear}"
+ AutomationId="CardExpirationYearEntry" />
@@ -387,7 +406,8 @@
IsSpellCheckEnabled="False"
IsTextPredictionEnabled="False"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n SecurityCode}" />
+ AutomationProperties.Name="{u:I18n SecurityCode}"
+ AutomationId="CardSecurityCodeEntry" />
+ AutomationProperties.Name="{u:I18n ToggleVisibility}"
+ AutomationId="CardShowSecurityCodeButton" />
@@ -408,7 +429,8 @@
x:Name="_identityTitlePicker"
ItemsSource="{Binding IdentityTitleOptions, Mode=OneTime}"
SelectedIndex="{Binding IdentityTitleSelectedIndex}"
- StyleClass="box-value" />
+ StyleClass="box-value"
+ AutomationId="IdentityTitlePicker" />
+ AutomationProperties.Name="{u:I18n FirstName}"
+ AutomationId="IdentityFirstNameEntry" />
+ AutomationProperties.Name="{u:I18n MiddleName}"
+ AutomationId="IdentityMiddleNameEntry" />
+ AutomationProperties.Name="{u:I18n LastName}"
+ AutomationId="IdentityLastNameEntry" />
+ AutomationProperties.Name="{u:I18n Username}"
+ AutomationId="IdentityUsernameEntry" />
+ AutomationProperties.Name="{u:I18n Company}"
+ AutomationId="IdentityCompanyEntry" />
+ AutomationProperties.Name="{u:I18n SSN}"
+ AutomationId="IdentitySsnEntry" />
+ AutomationProperties.Name="{u:I18n PassportNumber}"
+ AutomationId="IdentityPassportNumberEntry" />
+ AutomationProperties.Name="{u:I18n LicenseNumber}"
+ AutomationId="IdentityLicenseNumberEntry" />
+ AutomationProperties.Name="{u:I18n Email}"
+ AutomationId="IdentityEmailEntry" />
+ AutomationProperties.Name="{u:I18n Phone}"
+ AutomationId="IdentityPhoneEntry" />
+ AutomationProperties.Name="{u:I18n Address1}"
+ AutomationId="IdentityAddressOneEntry" />
+ AutomationProperties.Name="{u:I18n Address2}"
+ AutomationId="IdentityAddressTwoEntry" />
+ AutomationProperties.Name="{u:I18n Address3}"
+ AutomationId="IdentityAddressThreeEntry" />
+ AutomationProperties.Name="{u:I18n CityTown}"
+ AutomationId="IdentityCityEntry" />
+ AutomationProperties.Name="{u:I18n StateProvince}"
+ AutomationId="IdentityStateEntry" />
+ AutomationProperties.Name="{u:I18n ZipPostalCode}"
+ AutomationId="IdentityPostalCodeEntry" />
+ AutomationProperties.Name="{u:I18n Country}"
+ AutomationId="IdentityCountryEntry" />
@@ -609,7 +648,7 @@
-
+
@@ -630,7 +669,8 @@
Grid.Row="1"
Grid.Column="0"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n URI}" />
+ AutomationProperties.Name="{u:I18n URI}"
+ AutomationId="LoginUriEntry" />
+ AutomationProperties.Name="{u:I18n Options}"
+ AutomationId="LoginUriOptionsButton" />
+ Clicked="NewUri_Clicked"
+ AutomationId="LoginAddNewUriButton">
@@ -661,7 +703,8 @@
x:Name="_folderPicker"
ItemsSource="{Binding FolderOptions, Mode=OneTime}"
SelectedIndex="{Binding FolderSelectedIndex}"
- StyleClass="box-value" />
+ StyleClass="box-value"
+ AutomationId="FolderPicker" />
+ HorizontalOptions="End"
+ AutomationId="ItemFavoriteToggle" />
+ HorizontalOptions="End"
+ AutomationId="MasterPasswordRepromptToggle" />
@@ -706,7 +751,8 @@
effects:ScrollEnabledEffect.IsScrollEnabled="false"
Text="{Binding Cipher.Notes}"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n Notes}" >
+ AutomationProperties.Name="{u:I18n Notes}"
+ AutomationId="ItemNotesEntry">
@@ -725,9 +771,11 @@
+ BindableLayout.ItemTemplateSelector="{StaticResource CustomFieldItemTemplateSelector}"
+ AutomationId="CustomFieldsList" />
+ Clicked="NewField_Clicked"
+ AutomationId="NewCustomFieldButton">
@@ -742,7 +790,8 @@
x:Name="_ownershipPicker"
ItemsSource="{Binding OwnershipOptions, Mode=OneTime}"
SelectedIndex="{Binding OwnershipSelectedIndex}"
- StyleClass="box-value" />
+ StyleClass="box-value"
+ AutomationId="ItemOwnershipPicker" />
@@ -753,7 +802,8 @@
-
+
@@ -763,15 +813,17 @@
-
+
+ HorizontalOptions="StartAndExpand"
+ AutomationId="CollectionItemNameLabel" />
+ HorizontalOptions="End"
+ AutomationId="CollectionItemSwitch" />
@@ -781,5 +833,4 @@
-
From bc5c11b47f66923d822e796d4d37670a1cffd385 Mon Sep 17 00:00:00 2001
From: ifernandezdiaz
Date: Thu, 15 Jun 2023 16:11:55 -0300
Subject: [PATCH 21/33] Adding AutomationIDs on Generator page elements (#2569)
* Adding AutomationIDs on Generator pages
* Adding missing spaces
---
.../Pages/Generator/GeneratorHistoryPage.xaml | 18 ++-
src/App/Pages/Generator/GeneratorPage.xaml | 126 ++++++++++++------
2 files changed, 96 insertions(+), 48 deletions(-)
diff --git a/src/App/Pages/Generator/GeneratorHistoryPage.xaml b/src/App/Pages/Generator/GeneratorHistoryPage.xaml
index e1a7f7733..8fbe19930 100644
--- a/src/App/Pages/Generator/GeneratorHistoryPage.xaml
+++ b/src/App/Pages/Generator/GeneratorHistoryPage.xaml
@@ -27,7 +27,8 @@
Clicked="Clear_Clicked"
Order="Secondary"
x:Name="_clearItem"
- x:Key="clearItem" />
+ x:Key="clearItem"
+ AutomationId="ClearPasswordList" />
+ HorizontalTextAlignment="Center"
+ AutomationId="NoPasswordsDisplayedLabel">
+ ColumnSpacing="10"
+ AutomationId="GeneratedPasswordRow">
@@ -71,12 +74,14 @@
Grid.Column="0"
Grid.Row="0"
StyleClass="list-title, list-title-platform, text-html"
- Text="{Binding Password, Mode=OneWay, Converter={StaticResource coloredPassword}}" />
+ Text="{Binding Password, Mode=OneWay, Converter={StaticResource coloredPassword}}"
+ AutomationId="GeneratedPasswordValue" />
+ Text="{Binding Date, Mode=OneWay, Converter={StaticResource dateTime}}"
+ AutomationId="GeneratedPasswordDateLabel" />
+ AutomationProperties.Name="{u:I18n CopyPassword}"
+ AutomationId="CopyPasswordValueButton" />
diff --git a/src/App/Pages/Generator/GeneratorPage.xaml b/src/App/Pages/Generator/GeneratorPage.xaml
index 975180db8..92a41cf2c 100644
--- a/src/App/Pages/Generator/GeneratorPage.xaml
+++ b/src/App/Pages/Generator/GeneratorPage.xaml
@@ -71,7 +71,8 @@
+ HorizontalTextAlignment="Center"
+ AutomationId="PasswordGeneratorPolicyInEffectLabel" />
+ Margin="0, 20"
+ AutomationId="GeneratedPasswordLabel" />
+ AutomationProperties.Name="{u:I18n CopyPassword}"
+ AutomationId="CopyValueButton" />
+ AutomationProperties.Name="{u:I18n GeneratePassword}"
+ AutomationId="RegenerateValueButton" />
+ HorizontalOptions="Start"
+ AutomationId="GeneratedUsernameValue" />
+ AutomationProperties.Name="{u:I18n CopyUsername}"
+ AutomationId="CopyValueButton" />
+ AutomationProperties.Name="{u:I18n GenerateUsername}"
+ AutomationId="RegenerateValueButton" />
+ StyleClass="box-value"
+ AutomationId="GeneratorTypePicker" />
+ StyleClass="box-value"
+ AutomationId="UsernameTypePicker" />
@@ -172,7 +181,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="PlusAddressedEmailEntry" />
+ StyleClass="box-value"
+ AutomationId="CatchAllEmailDomainEntry" />
+ StyleClass="box-value"
+ AutomationId="ServiceTypePicker" />
+ Grid.Row="1"
+ AutomationId="AnonAddyApiAccessTokenEntry" />
+ Grid.Column="1"
+ AutomationId="ShowAnonAddyApiAccessTokenButton" />
+ StyleClass="box-value"
+ AutomationId="AnonAddyDomainNameEntry" />
+ IsPassword="{Binding ShowFirefoxRelayApiAccessToken, Converter={StaticResource inverseBool}}"
+ AutomationId="FirefoxRelayApiAccessTokenEntry" />
+ Grid.Column="1"
+ AutomationId="ShowFirefoxRelayApiAccessTokenButton" />
+ IsPassword="{Binding ShowSimpleLoginApiKey, Converter={StaticResource inverseBool}}"
+ AutomationId="SimpleLoginApiKeyEntry" />
+ Grid.Column="1"
+ AutomationId="ShowSimpleLoginApiKeyButton" />
+ IsPassword="{Binding ShowDuckDuckGoApiKey, Converter={StaticResource inverseBool}}"
+ AutomationId="DuckDuckGoApiKeyEntry" />
+ Grid.Column="1"
+ AutomationId="ShowDuckDuckGoApiKeyButton" />
+ IsPassword="{Binding ShowFastmailApiKey, Converter={StaticResource inverseBool}}"
+ AutomationId="FastmailApiKeyEntry" />
+ Grid.Column="1"
+ AutomationId="ShowFastmailApiKeyButton" />
@@ -359,7 +382,8 @@
+ HorizontalOptions="End"
+ AutomationId="CapitalizeRandomWordUsernameToggle" />
@@ -371,7 +395,8 @@
+ HorizontalOptions="End"
+ AutomationId="IncludeNumberRandomWordUsernameToggle" />
@@ -386,7 +411,8 @@
x:Name="_passwordTypePicker"
ItemsSource="{Binding PasswordTypeOptions, Mode=OneTime}"
SelectedIndex="{Binding PasswordTypeSelectedIndex}"
- StyleClass="box-value" />
+ StyleClass="box-value"
+ AutomationId="PasswordTypePicker" />
+ VerticalTextAlignment="Center"
+ AutomationId="NumberOfWordsLabel" />
+ Increment="1"
+ AutomationId="NumberOfWordsStepper" />
@@ -419,7 +447,8 @@
Text="{Binding WordSeparator}"
IsSpellCheckEnabled="False"
IsTextPredictionEnabled="False"
- StyleClass="box-value">
+ StyleClass="box-value"
+ AutomationId="WordSeparatorEntry">
@@ -435,7 +464,8 @@
IsEnabled="{Binding EnforcedPolicyOptions.Capitalize,
Converter={StaticResource inverseBool}}"
StyleClass="box-value"
- HorizontalOptions="End" />
+ HorizontalOptions="End"
+ AutomationId="CapitalizePassphraseToggle" />
@@ -448,7 +478,8 @@
IsEnabled="{Binding EnforcedPolicyOptions.IncludeNumber,
Converter={StaticResource inverseBool}}"
StyleClass="box-value"
- HorizontalOptions="End" />
+ HorizontalOptions="End"
+ AutomationId="IncludeNumbersToggle" />
@@ -462,7 +493,8 @@
StyleClass="box-sub-label"
VerticalOptions="CenterAndExpand"
HorizontalTextAlignment="End"
- WidthRequest="50" />
+ WidthRequest="50"
+ AutomationId="PasswordLengthLabel" />
+ Minimum="5"
+ AutomationId="PasswordLengthSlider" />
@@ -488,7 +521,8 @@
StyleClass="box-value"
HorizontalOptions="End"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n UppercaseAtoZ}"/>
+ AutomationProperties.Name="{u:I18n UppercaseAtoZ}"
+ AutomationId="UppercaseAtoZToggle" />
@@ -505,7 +539,8 @@
StyleClass="box-value"
HorizontalOptions="End"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n LowercaseAtoZ}"/>
+ AutomationProperties.Name="{u:I18n LowercaseAtoZ}"
+ AutomationId="LowercaseAtoZToggle" />
@@ -522,7 +557,8 @@
StyleClass="box-value"
HorizontalOptions="End"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n NumbersZeroToNine}"/>
+ AutomationProperties.Name="{u:I18n NumbersZeroToNine}"
+ AutomationId="NumbersZeroToNineToggle" />
@@ -539,7 +575,8 @@
StyleClass="box-value"
HorizontalOptions="End"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n SpecialCharacters}"/>
+ AutomationProperties.Name="{u:I18n SpecialCharacters}"
+ AutomationId="SpecialCharactersToggle" />
@@ -554,12 +591,14 @@
HorizontalOptions="FillAndExpand"
HorizontalTextAlignment="End"
VerticalOptions="FillAndExpand"
- VerticalTextAlignment="Center" />
+ VerticalTextAlignment="Center"
+ AutomationId="MinNumberValueLabel" />
+ Increment="1"
+ AutomationId="MinNumberStepper" />
@@ -574,12 +613,14 @@
HorizontalOptions="FillAndExpand"
HorizontalTextAlignment="End"
VerticalOptions="FillAndExpand"
- VerticalTextAlignment="Center" />
+ VerticalTextAlignment="Center"
+ AutomationId="MinSpecialValueLabel" />
+ Increment="1"
+ AutomationId="MinSpecialStepper" />
@@ -590,7 +631,8 @@
+ HorizontalOptions="End"
+ AutomationId="AvoidAmbiguousCharsToggle" />
From 43d2d386b13cd63727e7b03021f4a073fe2bc2fd Mon Sep 17 00:00:00 2001
From: ifernandezdiaz
Date: Fri, 16 Jun 2023 16:20:09 -0300
Subject: [PATCH 22/33] [PM-2645] Adding IDs for Account Switching elements
(#2572)
* Adding IDs for Account Switching elements
* Fixing Active/Inactive vault icon IDs
---
.../AccountSwitchingOverlayView.xaml | 4 ++-
.../AccountViewCell/AccountViewCell.xaml | 29 ++++++++++++-------
src/App/Pages/Accounts/HomePage.xaml | 3 +-
src/App/Pages/Accounts/LockPage.xaml | 11 +++----
src/App/Pages/Accounts/LoginPage.xaml | 5 ++--
src/App/Pages/Generator/GeneratorPage.xaml | 2 +-
src/App/Pages/Send/SendAddOnlyPage.xaml | 3 +-
src/App/Pages/Vault/CipherSelectionPage.xaml | 3 +-
.../Vault/GroupingsPage/GroupingsPage.xaml | 3 +-
9 files changed, 40 insertions(+), 23 deletions(-)
diff --git a/src/App/Controls/AccountSwitchingOverlay/AccountSwitchingOverlayView.xaml b/src/App/Controls/AccountSwitchingOverlay/AccountSwitchingOverlayView.xaml
index f0c52d0d4..4dba94dd1 100644
--- a/src/App/Controls/AccountSwitchingOverlay/AccountSwitchingOverlayView.xaml
+++ b/src/App/Controls/AccountSwitchingOverlay/AccountSwitchingOverlayView.xaml
@@ -30,13 +30,15 @@
BackgroundColor="{DynamicResource BackgroundColor}"
VerticalOptions="Start"
RowHeight="{Binding AccountListRowHeight, Source={x:Reference _mainOverlay}}"
- effects:ScrollViewContentInsetAdjustmentBehaviorEffect.ContentInsetAdjustmentBehavior="Never">
+ effects:ScrollViewContentInsetAdjustmentBehaviorEffect.ContentInsetAdjustmentBehavior="Never"
+ AutomationId="AccountListView">
diff --git a/src/App/Controls/AccountViewCell/AccountViewCell.xaml b/src/App/Controls/AccountViewCell/AccountViewCell.xaml
index 3d45cf929..9a9f53831 100644
--- a/src/App/Controls/AccountViewCell/AccountViewCell.xaml
+++ b/src/App/Controls/AccountViewCell/AccountViewCell.xaml
@@ -1,4 +1,4 @@
-
+
+ LineBreakMode="TailTruncation"
+ AutomationId="AccountEmailLabel" />
+ LineBreakMode="TailTruncation"
+ AutomationId="AccountEmailLabel" />
+ LineBreakMode="TailTruncation"
+ AutomationId="AccountHostUrlLabel" />
+ LineBreakMode="TailTruncation"
+ AutomationId="AccountStatusLabel" />
+ LineBreakMode="TailTruncation"
+ AutomationId="AccountStatusLabel" />
+ LineBreakMode="TailTruncation"
+ AutomationId="AccountStatusLabel" />
+ StyleClass="list-icon, list-icon-platform"
+ AutomationId="InactiveVaultIcon" />
+ TextColor="{DynamicResource TextColor}"
+ AutomationId="ActiveVaultIcon" />
+ Grid.Column="1"
+ AutomationId="AddAccountButton" />
\ No newline at end of file
diff --git a/src/App/Pages/Accounts/HomePage.xaml b/src/App/Pages/Accounts/HomePage.xaml
index a4e5f9fcd..d99b965f7 100644
--- a/src/App/Pages/Accounts/HomePage.xaml
+++ b/src/App/Pages/Accounts/HomePage.xaml
@@ -23,7 +23,8 @@
Priority="-1"
UseOriginalImage="True"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n Account}" />
+ AutomationProperties.Name="{u:I18n Account}"
+ AutomationId="AccountIconButton" />
diff --git a/src/App/Pages/Accounts/LockPage.xaml b/src/App/Pages/Accounts/LockPage.xaml
index 561b051f5..f34a8b284 100644
--- a/src/App/Pages/Accounts/LockPage.xaml
+++ b/src/App/Pages/Accounts/LockPage.xaml
@@ -24,7 +24,8 @@
Priority="-1"
UseOriginalImage="True"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n Account}" />
+ AutomationProperties.Name="{u:I18n Account}"
+ AutomationId="AccountIconButton" />
@@ -72,7 +73,7 @@
Grid.Column="0"
ReturnType="Go"
ReturnCommand="{Binding SubmitCommand}"
- AutomationId="PinEntry"/>
+ AutomationId="PinEntry" />
+ AutomationId="PinVisibilityToggle" />
+ AutomationId="MasterPasswordEntry" />
+ AutomationId="UnlockVaultButton" />
diff --git a/src/App/Pages/Accounts/LoginPage.xaml b/src/App/Pages/Accounts/LoginPage.xaml
index fd2bb3fbd..5f93f9b0c 100644
--- a/src/App/Pages/Accounts/LoginPage.xaml
+++ b/src/App/Pages/Accounts/LoginPage.xaml
@@ -24,7 +24,8 @@
Priority="-1"
UseOriginalImage="True"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n Account}" />
+ AutomationProperties.Name="{u:I18n Account}"
+ AutomationId="AccountIconButton" />
@@ -34,7 +35,7 @@
x:Name="_moreItem" x:Key="moreItem"
AutomationProperties.IsInAccessibleTree="True"
AutomationProperties.Name="{u:I18n Options}"
- AutomationId="OptionsButton"/>
+ AutomationId="OptionsButton" />
+ AutomationId="GeneratedPasswordLabel" />
+ AutomationProperties.Name="{u:I18n Account}"
+ AutomationId="AccountIconButton" />
diff --git a/src/App/Pages/Vault/CipherSelectionPage.xaml b/src/App/Pages/Vault/CipherSelectionPage.xaml
index f5c8c0641..f71d3a2c2 100644
--- a/src/App/Pages/Vault/CipherSelectionPage.xaml
+++ b/src/App/Pages/Vault/CipherSelectionPage.xaml
@@ -19,7 +19,8 @@
Priority="-1"
UseOriginalImage="True"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n Account}" />
+ AutomationProperties.Name="{u:I18n Account}"
+ AutomationId="AccountIconButton" />
diff --git a/src/App/Pages/Vault/GroupingsPage/GroupingsPage.xaml b/src/App/Pages/Vault/GroupingsPage/GroupingsPage.xaml
index 40496e133..3b5c24c50 100644
--- a/src/App/Pages/Vault/GroupingsPage/GroupingsPage.xaml
+++ b/src/App/Pages/Vault/GroupingsPage/GroupingsPage.xaml
@@ -25,7 +25,8 @@
Priority="-1"
UseOriginalImage="True"
AutomationProperties.IsInAccessibleTree="True"
- AutomationProperties.Name="{u:I18n Account}" />
+ AutomationProperties.Name="{u:I18n Account}"
+ AutomationId="AccountIconButton" />
From 3af37f01d3cb82f41d29c504dca2ed27801d05ea Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 19 Jun 2023 09:05:12 +0000
Subject: [PATCH 23/33] Autosync the updated translations (#2570)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
---
src/App/Resources/AppResources.af.resx | 2 +-
src/App/Resources/AppResources.ar.resx | 2 +-
src/App/Resources/AppResources.az.resx | 2 +-
src/App/Resources/AppResources.bn.resx | 2 +-
src/App/Resources/AppResources.bs.resx | 2 +-
src/App/Resources/AppResources.cy.resx | 2 +-
src/App/Resources/AppResources.el.resx | 2 +-
src/App/Resources/AppResources.en-GB.resx | 2 +-
src/App/Resources/AppResources.en-IN.resx | 2 +-
src/App/Resources/AppResources.es.resx | 6 +-
src/App/Resources/AppResources.et.resx | 14 +-
src/App/Resources/AppResources.eu.resx | 2 +-
src/App/Resources/AppResources.fa.resx | 2 +-
src/App/Resources/AppResources.fi.resx | 10 +-
src/App/Resources/AppResources.fil.resx | 2 +-
src/App/Resources/AppResources.gl.resx | 2 +-
src/App/Resources/AppResources.he.resx | 2 +-
src/App/Resources/AppResources.hi.resx | 2 +-
src/App/Resources/AppResources.hr.resx | 2 +-
src/App/Resources/AppResources.id.resx | 2 +-
src/App/Resources/AppResources.it.resx | 2 +-
src/App/Resources/AppResources.ka.resx | 2 +-
src/App/Resources/AppResources.kn.resx | 2 +-
src/App/Resources/AppResources.ko.resx | 2 +-
src/App/Resources/AppResources.lt.resx | 2 +-
src/App/Resources/AppResources.ml.resx | 2 +-
src/App/Resources/AppResources.my.resx | 2 +-
src/App/Resources/AppResources.nb.resx | 2 +-
src/App/Resources/AppResources.ne.resx | 2 +-
src/App/Resources/AppResources.nn.resx | 26 +-
src/App/Resources/AppResources.or.resx | 2 +-
src/App/Resources/AppResources.pt-BR.resx | 2 +-
src/App/Resources/AppResources.pt-PT.resx | 367 ++++++++++----------
src/App/Resources/AppResources.ro.resx | 2 +-
src/App/Resources/AppResources.ru.resx | 2 +-
src/App/Resources/AppResources.si.resx | 2 +-
src/App/Resources/AppResources.sl.resx | 2 +-
src/App/Resources/AppResources.sr.resx | 4 +-
src/App/Resources/AppResources.sv.resx | 4 +-
src/App/Resources/AppResources.ta.resx | 2 +-
src/App/Resources/AppResources.te.resx | 2 +-
src/App/Resources/AppResources.th.resx | 2 +-
src/App/Resources/AppResources.tr.resx | 4 +-
src/App/Resources/AppResources.uk.resx | 4 +-
src/App/Resources/AppResources.vi.resx | 2 +-
src/App/Resources/AppResources.zh-Hans.resx | 2 +-
src/App/Resources/AppResources.zh-Hant.resx | 2 +-
store/apple/pt-PT/copy.resx | 30 +-
store/apple/sk/copy.resx | 2 +-
store/google/pt-PT/copy.resx | 32 +-
50 files changed, 289 insertions(+), 290 deletions(-)
diff --git a/src/App/Resources/AppResources.af.resx b/src/App/Resources/AppResources.af.resx
index b9215918c..c6b501fef 100644
--- a/src/App/Resources/AppResources.af.resx
+++ b/src/App/Resources/AppResources.af.resx
@@ -2634,6 +2634,6 @@ Wil u na die rekening omskakel?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.ar.resx b/src/App/Resources/AppResources.ar.resx
index f182a41c1..ad70e5c34 100644
--- a/src/App/Resources/AppResources.ar.resx
+++ b/src/App/Resources/AppResources.ar.resx
@@ -2635,6 +2635,6 @@
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.az.resx b/src/App/Resources/AppResources.az.resx
index 0e6982ac7..1699e4ebc 100644
--- a/src/App/Resources/AppResources.az.resx
+++ b/src/App/Resources/AppResources.az.resx
@@ -2633,6 +2633,6 @@ Bu hesaba keçmək istəyirsiniz?
Ana parolu təkrar soruş köməyi
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Yetərsiz yaddaşa görə kilid açma uğursuz ola bilər. Həll etmək üçün KDF yaddaş tənzimləmələrinizi azaldın
diff --git a/src/App/Resources/AppResources.bn.resx b/src/App/Resources/AppResources.bn.resx
index 8435cacef..ceb9e9164 100644
--- a/src/App/Resources/AppResources.bn.resx
+++ b/src/App/Resources/AppResources.bn.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.bs.resx b/src/App/Resources/AppResources.bs.resx
index 8885eb936..2fca6217b 100644
--- a/src/App/Resources/AppResources.bs.resx
+++ b/src/App/Resources/AppResources.bs.resx
@@ -2633,6 +2633,6 @@ Skeniranje će biti izvršeno automatski.
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.cy.resx b/src/App/Resources/AppResources.cy.resx
index d3ba16b90..6125bb7e8 100644
--- a/src/App/Resources/AppResources.cy.resx
+++ b/src/App/Resources/AppResources.cy.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.el.resx b/src/App/Resources/AppResources.el.resx
index 260b0903c..0b023d621 100644
--- a/src/App/Resources/AppResources.el.resx
+++ b/src/App/Resources/AppResources.el.resx
@@ -2634,6 +2634,6 @@
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.en-GB.resx b/src/App/Resources/AppResources.en-GB.resx
index 5c01b5f42..ef9ab789e 100644
--- a/src/App/Resources/AppResources.en-GB.resx
+++ b/src/App/Resources/AppResources.en-GB.resx
@@ -2634,6 +2634,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.en-IN.resx b/src/App/Resources/AppResources.en-IN.resx
index 6f794ea70..52caffe4a 100644
--- a/src/App/Resources/AppResources.en-IN.resx
+++ b/src/App/Resources/AppResources.en-IN.resx
@@ -2648,6 +2648,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.es.resx b/src/App/Resources/AppResources.es.resx
index 0fa3fbc12..429ba3d78 100644
--- a/src/App/Resources/AppResources.es.resx
+++ b/src/App/Resources/AppResources.es.resx
@@ -775,10 +775,10 @@
Activado
- Apagado
+ No
- Activado
+ Sí
Estado
@@ -2632,7 +2632,7 @@ seleccione Agregar TOTP para almacenar la clave de forma segura
Contraseña maestra actual
- Master password re-prompt help
+ Ayuda de volver a pedir contraseña maestra
El desbloqueo puede fallar por falta de memoria. Disminuye los ajustes de memoria KDF para resolver
diff --git a/src/App/Resources/AppResources.et.resx b/src/App/Resources/AppResources.et.resx
index 42b1de318..55dca0e13 100644
--- a/src/App/Resources/AppResources.et.resx
+++ b/src/App/Resources/AppResources.et.resx
@@ -2496,7 +2496,7 @@ Soovid selle konto peale lülituda?
Tuleta ülemparooli vihjega meelde
- Logging in as {0} on {1}
+ Sisselogimas kui {0} lehel {1}
Pole sina?
@@ -2610,19 +2610,19 @@ Soovid selle konto peale lülituda?
Otsingusõnale ei vasta kirjeid
- US
+ USA
- EU
+ EL
- Self-hosted
+ Enda majutatud
- Data region
+ Andmete salvestamise piirkond
- Region
+ Piirkond
Sinu ülemparool ei vasta ühele või rohkemale organisatsiooni poolt seatud poliitikale. Hoidlale ligipääsemiseks pead oma ülemaprooli uuendama. Jätkamisel logitakse sind praegusest sessioonist välja, mistõttu pead uuesti sisse logima. Teistes seadmetes olevad aktiivsed sessioonid aeguvad umbes ühe tunni jooksul.
@@ -2634,6 +2634,6 @@ Soovid selle konto peale lülituda?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.eu.resx b/src/App/Resources/AppResources.eu.resx
index b17c17954..87061cdb4 100644
--- a/src/App/Resources/AppResources.eu.resx
+++ b/src/App/Resources/AppResources.eu.resx
@@ -2633,6 +2633,6 @@ Kontu honetara aldatu nahi duzu?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.fa.resx b/src/App/Resources/AppResources.fa.resx
index d4ee84398..a47671cc7 100644
--- a/src/App/Resources/AppResources.fa.resx
+++ b/src/App/Resources/AppResources.fa.resx
@@ -2635,6 +2635,6 @@
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.fi.resx b/src/App/Resources/AppResources.fi.resx
index 63f4c4d1c..87e65a5b9 100644
--- a/src/App/Resources/AppResources.fi.resx
+++ b/src/App/Resources/AppResources.fi.resx
@@ -937,7 +937,7 @@ Koodi luetaan automaattisesti.
Tiedosto
- Ei valittua tiedostoa
+ Tiedostoa ei ole valittu.
Ei liitteitä.
@@ -1762,7 +1762,7 @@ Koodi luetaan automaattisesti.
Synkronoi holvi päivityksen yhteydessä
- Synkronoidaan holvi alasveto-eleellä.
+ Holvi synkronoidaan myös alasveto-eleellä suoritettavan päivityksen yhteydessä.
Yrityksen kertakirjautuminen (SSO)
@@ -2367,7 +2367,7 @@ turvallisesti valitsemalla "Lisää TOTP"
Hyväksy kirjautumispyyntöjä
- Hyväksy muiden laitteiden kirjautumispyynnöt tältä laitteelta.
+ Hyväksy laitteiden kirjautumispyyntöjä tältä laitteelta
Salli ilmoitukset
@@ -2542,7 +2542,7 @@ Haluatko vaihtaa tähän tiliin?
Pyynnöt hylättiin
- Ei odottavia pyyntöjä
+ Odottavia pyyntöjä ei ole
Myönnä kameran käyttöoikeus skannerin käyttämiseksi
@@ -2554,7 +2554,7 @@ Haluatko vaihtaa tähän tiliin?
Kieleksi vaihdettiin {0}. Käynnistä sovellus uudelleen nähdäksesi muutoksen.
- Kielen vaihto edellyttää sovelluksen uudelleenkäynnistyksen
+ Kielen vaihto vaatii sovelluksen uudelleenkäynnistyksen.
Oletus (järjestelmä)
diff --git a/src/App/Resources/AppResources.fil.resx b/src/App/Resources/AppResources.fil.resx
index 5c8ff019c..39d124eb0 100644
--- a/src/App/Resources/AppResources.fil.resx
+++ b/src/App/Resources/AppResources.fil.resx
@@ -2635,6 +2635,6 @@ Gusto mo bang pumunta sa account na ito?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.gl.resx b/src/App/Resources/AppResources.gl.resx
index d3ba16b90..6125bb7e8 100644
--- a/src/App/Resources/AppResources.gl.resx
+++ b/src/App/Resources/AppResources.gl.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.he.resx b/src/App/Resources/AppResources.he.resx
index daf57c2c0..b0317aa52 100644
--- a/src/App/Resources/AppResources.he.resx
+++ b/src/App/Resources/AppResources.he.resx
@@ -2637,6 +2637,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.hi.resx b/src/App/Resources/AppResources.hi.resx
index 2775646e7..3660ffe93 100644
--- a/src/App/Resources/AppResources.hi.resx
+++ b/src/App/Resources/AppResources.hi.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.hr.resx b/src/App/Resources/AppResources.hr.resx
index a3645f7f9..53bbec9f1 100644
--- a/src/App/Resources/AppResources.hr.resx
+++ b/src/App/Resources/AppResources.hr.resx
@@ -2632,6 +2632,6 @@
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.id.resx b/src/App/Resources/AppResources.id.resx
index 287fdad01..eba16b360 100644
--- a/src/App/Resources/AppResources.id.resx
+++ b/src/App/Resources/AppResources.id.resx
@@ -2634,6 +2634,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.it.resx b/src/App/Resources/AppResources.it.resx
index aac088ade..f72333088 100644
--- a/src/App/Resources/AppResources.it.resx
+++ b/src/App/Resources/AppResources.it.resx
@@ -2631,7 +2631,7 @@ Vuoi passare a questo account?
Password principale corrente
- Auto per chiedere la password principale di nuovo
+ Aiuto per chiedere la password principale di nuovo
Lo sblocco potrebbe fallire a causa di memoria insufficiente. Riduci le impostazioni della memoria KDF per risolvere il problema
diff --git a/src/App/Resources/AppResources.ka.resx b/src/App/Resources/AppResources.ka.resx
index d3ba16b90..6125bb7e8 100644
--- a/src/App/Resources/AppResources.ka.resx
+++ b/src/App/Resources/AppResources.ka.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.kn.resx b/src/App/Resources/AppResources.kn.resx
index ea080506f..ebff68256 100644
--- a/src/App/Resources/AppResources.kn.resx
+++ b/src/App/Resources/AppResources.kn.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.ko.resx b/src/App/Resources/AppResources.ko.resx
index 8a8f2f58d..973e3d0f6 100644
--- a/src/App/Resources/AppResources.ko.resx
+++ b/src/App/Resources/AppResources.ko.resx
@@ -2634,6 +2634,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.lt.resx b/src/App/Resources/AppResources.lt.resx
index 88f186937..e1b3d0a3e 100644
--- a/src/App/Resources/AppResources.lt.resx
+++ b/src/App/Resources/AppResources.lt.resx
@@ -2635,6 +2635,6 @@ Ar norite pereiti prie šios paskyros?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.ml.resx b/src/App/Resources/AppResources.ml.resx
index b8c2071ec..d6a297759 100644
--- a/src/App/Resources/AppResources.ml.resx
+++ b/src/App/Resources/AppResources.ml.resx
@@ -2634,6 +2634,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.my.resx b/src/App/Resources/AppResources.my.resx
index d3ba16b90..6125bb7e8 100644
--- a/src/App/Resources/AppResources.my.resx
+++ b/src/App/Resources/AppResources.my.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.nb.resx b/src/App/Resources/AppResources.nb.resx
index 0dd2d2d67..775f29967 100644
--- a/src/App/Resources/AppResources.nb.resx
+++ b/src/App/Resources/AppResources.nb.resx
@@ -2635,6 +2635,6 @@ Vil du bytte til denne kontoen?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.ne.resx b/src/App/Resources/AppResources.ne.resx
index d3ba16b90..6125bb7e8 100644
--- a/src/App/Resources/AppResources.ne.resx
+++ b/src/App/Resources/AppResources.ne.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.nn.resx b/src/App/Resources/AppResources.nn.resx
index 6027fd1e4..0e0916dd7 100644
--- a/src/App/Resources/AppResources.nn.resx
+++ b/src/App/Resources/AppResources.nn.resx
@@ -176,10 +176,10 @@
Confirmation alert message when deleteing something.
- Rei
+ Rediger
- Rei mappa
+ Rediger mappe
E-post
@@ -468,7 +468,7 @@
Message shown when interacting with the server
- Rei oppføring
+ Rediger oppføringa
Slå på sjølvverkande synkronisering
@@ -1235,10 +1235,10 @@ Skanning skjer automatisk.
Grunndomene
- Default
+ Standard
- Exact
+ Nøyaktig
Host
@@ -1249,7 +1249,7 @@ Skanning skjer automatisk.
A programming term, also known as 'RegEx'.
- Starts with
+ Startar med
URI match detection
@@ -1272,7 +1272,7 @@ Skanning skjer automatisk.
Hold your Yubikey near the top of the device.
- Try again
+ Prøv igjen
To continue, hold your YubiKey NEO against the back of the device.
@@ -1281,7 +1281,7 @@ Skanning skjer automatisk.
The accessibility service may be helpful to use when apps do not support the standard auto-fill service.
- Password updated
+ Passordet er oppdatert
ex. Date this password was updated
@@ -1289,13 +1289,13 @@ Skanning skjer automatisk.
ex. Date this item was updated
- AutoFill activated!
+ Autoutfylling aktivert!
- You must log into the main Bitwarden app before you can use AutoFill.
+ Du må logge deg inn på Bitwarden-hovudappen før du kan bruke autoutfylling.
- Your logins are now easily accessible right from your keyboard while logging into apps and websites.
+ Innloggingane dine er no lett tilgjengelege frå tastaturet når du loggar deg inn på appar og nettstadar.
We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.
@@ -2006,7 +2006,7 @@ Skanning skjer automatisk.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Rei Send
+ Rediger Send
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Kunne ikkje låse opp på grunn av utilstrekkeleg minnekapasitet. Reduser KDF-minne-innstillingane for å løyse dette
diff --git a/src/App/Resources/AppResources.or.resx b/src/App/Resources/AppResources.or.resx
index 82d37cb1d..3c48da878 100644
--- a/src/App/Resources/AppResources.or.resx
+++ b/src/App/Resources/AppResources.or.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.pt-BR.resx b/src/App/Resources/AppResources.pt-BR.resx
index 2c1e40328..feb95d778 100644
--- a/src/App/Resources/AppResources.pt-BR.resx
+++ b/src/App/Resources/AppResources.pt-BR.resx
@@ -2635,6 +2635,6 @@ Você deseja mudar para esta conta?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.pt-PT.resx b/src/App/Resources/AppResources.pt-PT.resx
index 271080db1..142b73162 100644
--- a/src/App/Resources/AppResources.pt-PT.resx
+++ b/src/App/Resources/AppResources.pt-PT.resx
@@ -172,7 +172,7 @@
Message shown when interacting with the server
- Pretende mesmo eliminar? Isto não pode ser desfeito.
+ Pretende mesmo eliminar? Isto não pode ser anulado.
Confirmation alert message when deleteing something.
@@ -419,7 +419,7 @@
Extensão da aplicação
- Utilize o serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em todas as aplicações e na web.
+ Utilize o serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em todas as aplicações e na Web.
Serviço de preenchimento automático
@@ -523,7 +523,7 @@
Importar itens
- Pode importar itens em massa do cofre da web bitwarden.com. Deseja visitar o site agora?
+ Pode importar itens em massa do cofre do site bitwarden.com. Deseja visitar o site agora?
Importe rapidamente e em massa os seus itens de outras aplicações de gestão de palavras-passe.
@@ -553,10 +553,10 @@
Imediatamente
- Expiração do cofre
+ Tempo limite do cofre
- Ação de expiração do cofre
+ Ação de tempo limite do cofre
Ao terminar sessão removerá todo o acesso ao seu cofre e requer autenticação online após o período de tempo limite. Tem a certeza de que pretende utilizar esta definição?
@@ -727,7 +727,7 @@
Ver item
- Cofre web Bitwarden
+ Cofre Web Bitwarden
Perdeu a aplicação de autenticação?
@@ -838,7 +838,7 @@
For 2FA
- Memorizar-me
+ Memorizar
Remember my two-step login
@@ -919,7 +919,7 @@ A leitura será efetuada automaticamente.
Se uma credencial tiver uma chave de autenticação, copie o código de verificação TOTP para a sua área de transferência quando preencher automaticamente o início de sessão.
- Copy TOTP automatically
+ Copiar TOTP automaticamente
É necessária uma subscrição Premium para utilizar esta funcionalidade.
@@ -987,7 +987,7 @@ A leitura será efetuada automaticamente.
URL do servidor
- URL do servidor do cofre web
+ URL do servidor do cofre Web
Toque nesta notificação para ver itens do seu cofre.
@@ -1104,7 +1104,7 @@ A leitura será efetuada automaticamente.
Sra.
- Mx
+ Neutro
Novembro
@@ -1140,10 +1140,10 @@ A leitura será efetuada automaticamente.
Expiração
- Show website icons
+ Mostrar ícones do site
- Show a recognizable image next to each login.
+ Mostrar uma imagem reconhecível junto a cada credencial.
URL do servidor de ícones
@@ -1210,7 +1210,7 @@ A leitura será efetuada automaticamente.
Ocultado
- Linked
+ Associado
Texto
@@ -1235,13 +1235,13 @@ A leitura será efetuada automaticamente.
Domínio base
- Predefinição
+ Predefinido
Exato
- Servidor
+ Domínio
A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'.
@@ -1384,10 +1384,10 @@ A leitura será efetuada automaticamente.
Procurar na coleção
- Search file Sends
+ Procurar Sends de ficheiros
- Search text Sends
+ Procurar Sends de texto
Procurar {0}
@@ -1415,7 +1415,7 @@ A leitura será efetuada automaticamente.
Não existem coleções para listar.
- {0} moved to {1}.
+ {0} movido para {1}.
ex: Item moved to Organization.
@@ -1431,7 +1431,7 @@ A leitura será efetuada automaticamente.
Partilhar item
- Move to Organization
+ Mover para organização
Nenhuma organização para listar.
@@ -1464,7 +1464,7 @@ A leitura será efetuada automaticamente.
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.
- Frase da impressão digital da sua conta
+ Frase de impressão digital da sua conta
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.
@@ -1502,7 +1502,7 @@ A leitura será efetuada automaticamente.
O seu cofre está bloqueado. Verifique o seu código PIN para continuar.
- Your vault is locked. Verify your identity to continue.
+ O seu cofre está bloqueado. Verifique a sua identidade para continuar.
Escuro
@@ -1556,7 +1556,7 @@ A leitura será efetuada automaticamente.
Tema escuro predefinido
- Choose the dark theme to use when using Default (System) theme while your device's dark mode is in use.
+ Escolha o tema escuro a utilizar quando o tema Predefinido (Sistema) do seu dispositivo estiver no modo escuro.
Copiar nota
@@ -1589,10 +1589,10 @@ A leitura será efetuada automaticamente.
O preenchimento automático não será oferecido para URIs bloqueados. Separe vários URIs com uma vírgula. Por exemplo: "https://twitter.com, androidapp://com.twitter.android".
- Ask to add login
+ Pedir para adicionar credencial
- Ask to add an item if one isn't found in your vault.
+ Pedir para adicionar um item se não o encontrar no seu cofre.
Quando reiniciar a aplicação
@@ -1665,13 +1665,13 @@ A leitura será efetuada automaticamente.
Código enviado!
- Confirm your identity to continue.
+ Confirme a sua identidade para continuar.
Esta exportação contém os dados do seu cofre num formato não encriptado. Não deve armazenar ou enviar o ficheiro exportado através de canais não seguros (como o e-mail). Elimine-o imediatamente após terminar a sua utilização.
- Esta exportação encripta os seus dados utilizando a chave de encriptação da sua conta. Se alguma vez mudar a chave de encriptação da sua conta, deve exportar novamente, uma vez que não conseguirá desencriptar este ficheiro de exportação.
+ Esta exportação encripta os seus dados utilizando a chave de encriptação da sua conta. Se alguma vez alterar a chave de encriptação da sua conta, deve exportar novamente, uma vez que não conseguirá desencriptar este ficheiro de exportação.
As chaves de encriptação da conta são únicas para cada conta de utilizador Bitwarden, pelo que não é possível importar uma exportação encriptada para uma conta diferente.
@@ -1684,7 +1684,7 @@ A leitura será efetuada automaticamente.
Aviso
- Ocorreu um problema ao exportar o seu cofre. Se o problema persistir, terá de exportar a partir do cofre web.
+ Ocorreu um problema ao exportar o seu cofre. Se o problema persistir, terá de exportar a partir do cofre Web.
Cofre exportado com sucesso
@@ -1701,7 +1701,7 @@ A leitura será efetuada automaticamente.
Button text for an open operation (verb).
- Houve um problema ao guardar este anexo. Se o problema persistir, poderá guardá-lo através do cofre web.
+ Houve um problema ao guardar este anexo. Se o problema persistir, poderá guardá-lo através do cofre Web.
Anexo guardado com sucesso
@@ -1741,7 +1741,7 @@ A leitura será efetuada automaticamente.
(action prompt) Label for the search text field when viewing the trash folder
- Pretende mesmo eliminar permanentemente? Isto não pode ser desfeito.
+ Pretende mesmo eliminar permanentemente? Isto não pode ser anulado.
Confirmation alert message when permanently deleteing a cipher.
@@ -1753,10 +1753,10 @@ A leitura será efetuada automaticamente.
Confirmation alert message when soft-deleting a cipher.
- Biometric unlock for this account is disabled pending verification of master password.
+ O desbloqueio biométrico desta conta está desativado enquanto se aguarda a verificação da palavra-passe mestra.
- Autofill biometric unlock for this account is disabled pending verification of master password.
+ O desbloqueio biométrico do preenchimento automático desta conta está desativado enquanto se aguarda a verificação da palavra-passe mestra.
Permitir a sincronização ao atualizar
@@ -1825,7 +1825,7 @@ A leitura será efetuada automaticamente.
Política de privacidade
- Bitwarden needs attention - Turn on "Draw-Over" in "Auto-fill Services" from Bitwarden Settings
+ O Bitwarden precisa de atenção - Ative "Aparecer sobre outras" em "Serviços de preenchimento automático" nas definições do Bitwarden
Serviços de preenchimento automático
@@ -1834,47 +1834,47 @@ A leitura será efetuada automaticamente.
Utilizar o preenchimento automático em linha
- Use inline autofill if your selected IME (keyboard) supports it. If your configuration is not supported (or this option is turned off), the default Autofill overlay will be used.
+ Utilize o preenchimento automático em linha se o IME (teclado) selecionado o suportar. Se a sua configuração não for suportada (ou se esta opção estiver desativada), será utilizada a sobreposição de preenchimento automático predefinida.
Utilizar a acessibilidade
- Utilize o Serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em aplicações e na web. Quando configurado, exibiremos um pop-up quando os campos de início de sessão forem selecionados.
+ Utilize o Serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em aplicações e na Web. Quando configurado, exibiremos um pop-up quando os campos de início de sessão forem selecionados.
- Use the Bitwarden Accessibility Service to auto-fill your logins across apps and the web. (Requires Draw-Over to be turned on as well)
+ Utilize o Serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em aplicações e na Web. (Requer que a definição Aparecer sobre outras também esteja ativada)
- Use the Bitwarden Accessibility Service to use the Autofill Quick-Action Tile, and/or show a popup using Draw-Over (if turned on).
+ Utilize o Serviço de acessibilidade do Bitwarden para utilizar o botão de preenchimento automático do Painel instantâneo e/ou mostrar um pop-up utilizando a definição Aparecer sobre outras (se estiver ativada).
- Required to use the Autofill Quick-Action Tile, or to augment the Autofill Service by using Draw-Over (if turned on).
+ Necessário para utilizar o botão de preenchimento automático do Painel instantâneo, ou para aumentar o serviço de preenchimento automático utilizando a definição Aparecer sobre outras (se estiver ativada).
- Use draw-over
+ Utilizar definição Aparecer sobre outras
- Allows the Bitwarden Accessibility Service to display a popup when login fields are selected.
+ Permite que o Serviço de acessibilidade do Bitwarden apresente um pop-up quando os campos de início de sessão são selecionados.
Se estiver ativado, o Serviço de acessibilidade do Bitwarden apresentará um pop-up quando os campos de início de sessão forem selecionados para ajudar no preenchimento automático das suas credenciais.
- If turned on, accessibility will show a popup to augment the Autofill Service for older apps that don't support the Android Autofill Framework.
+ Se estiver ativada, a acessibilidade mostrará um pop-up para aumentar o serviço de preenchimento automático para aplicações mais antigas que não suportam a Framework de preenchimento automático do Android.
- Due to an enterprise policy, you are restricted from saving items to your individual vault. Change the ownership option to an organization and choose from available collections.
+ Devido a uma política empresarial, está impedido de guardar itens no seu cofre pessoal. Altere a opção Propriedade para uma organização e escolha entre as coleções disponíveis.
- An organization policy is affecting your ownership options.
+ Uma política da organização está a afetar as suas opções de propriedade.
Send
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- All Sends
+ Todos os Sends
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -1882,142 +1882,142 @@ A leitura será efetuada automaticamente.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- A friendly name to describe this Send.
+ Um nome simpático para descrever este Send.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Text
+ Texto
- Text
+ Texto
- The text you want to send.
+ O texto que deseja enviar.
- When accessing the Send, hide the text by default
+ Ao aceder ao Send, ocultar o texto por defeito
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- File
+ Ficheiro
- The file you want to send.
+ O ficheiro que deseja enviar.
- File type is selected.
+ O tipo de ficheiro está selecionado.
- File type is not selected, tap to select.
+ O tipo de ficheiro não está selecionado, toque para selecionar.
- Text type is selected.
+ O tipo de texto está selecionado.
- Text type is not selected, tap to select.
+ O tipo de texto não está selecionado, toque para selecionar.
Data de eliminação
- Deletion time
+ Hora da eliminação
O Send será permanentemente eliminado na data e hora especificadas.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Pending deletion
+ Eliminação pendente
- Expiration date
+ Data de validade
- Expiration time
+ Hora de validade
- If set, access to this Send will expire on the specified date and time.
+ Se definido, o acesso a este Send expirará na data e hora especificadas.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Expired
+ Expirado
- Maximum access count
+ Número máximo de acessos
- If set, users will no longer be able to access this Send once the maximum access count is reached.
+ Se definido, os utilizadores deixarão de poder aceder a este Send quando a contagem máxima de acessos for atingida.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Max access count reached
+ Número máximo de acessos atingido
- Current access count
+ Número de acessos atual
- New password
+ Nova palavra-passe
- Optionally require a password for users to access this Send.
+ Opcionalmente, exigir uma palavra-passe para os utilizadores acederem a este Send.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Remove password
+ Remover palavra-passe
- Are you sure you want to remove the password?
+ Tem a certeza de que pretende remover a palavras-passe?
- Removing password
+ A remover palavra-passe
- Password has been removed.
+ A palavra-passe foi removida.
- Private notes about this Send.
+ Notas privadas sobre este Send.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Deactivate this Send so that no one can access it
+ Desative este Send para que ninguém possa aceder ao mesmo
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- There are no Sends in your account.
+ Não existem Sends na sua conta.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Add a Send
+ Adicionar um Send
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Copy link
+ Copiar link
- Share link
+ Partilhar link
- Send link
+ Link do Send
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Search Sends
+ Procurar Sends
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Edit Send
+ Editar Send
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- New Send
+ Novo Send
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Are you sure you want to delete this Send?
+ Tem a certeza de que pretende eliminar este Send?
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Send deleted
+ Send eliminado
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2025,7 +2025,7 @@ A leitura será efetuada automaticamente.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Send created
+ Send criado
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
@@ -2047,46 +2047,46 @@ A leitura será efetuada automaticamente.
Personalizado
- Share this Send upon save
+ Partilhar este Send após guardar
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Due to an enterprise policy, you are only able to delete an existing Send.
+ Devido a uma política da empresa, só é possível eliminar um Send existente.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- About Send
+ Sobre o Send
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Hide my email address from recipients
+ Ocultar o meu endereço de e-mail dos destinatários
Uma ou mais políticas da organização estão a afetar as suas opções do Send.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Free accounts are restricted to sharing text only. A premium membership is required to use files with Send.
+ As contas gratuitas estão limitadas apenas à partilha de texto. É necessária uma subscrição Premium para utilizar ficheiros com o Send.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- You must verify your email to use files with Send. You can verify your email in the web vault.
+ Tem de verificar o seu e-mail para utilizar ficheiros com o Send. Pode verificar o seu e-mail no cofre Web.
'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.
- Master password re-prompt
+ Pedir novamente a palavra-passe mestra
- Master password confirmation
+ Confirmação da palavra-passe mestra
- This action is protected, to continue please re-enter your master password to verify your identity.
+ Esta ação está protegida. Para continuar, por favor, reintroduza a sua palavra-passe mestra para verificar a sua identidade.
- Captcha required
+ Captcha necessário
- Captcha failed. Please try again.
+ Falha no Captcha. Por favor, tente novamente.
Palavra-passe mestra atualizada
@@ -2098,58 +2098,58 @@ A leitura será efetuada automaticamente.
A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.
- Updating password
+ A atualizar palavra-passe
- Currently unable to update password
+ Atualmente não é possível atualizar a palavra-passe
- Remove master password
+ Remover palavra-passe mestra
- {0} is using SSO with customer-managed encryption. Continuing will remove your master password from your account and require SSO to login.
+ {0} está a utilizar SSO com encriptação gerida pelo cliente. Se continuar removerá a sua palavra-passe mestra da sua conta e será exigido SSO para iniciar sessão.
- If you do not want to remove your master password, you may leave this organization.
+ Se não pretender remover a sua palavra-passe mestra, pode deixar esta organização.
- Leave organization
+ Deixar a organização
- Leave {0}?
+ Deixar {0}?
FIDO2 WebAuthn
- To continue, have your FIDO2 WebAuthn compatible security key ready, then follow the instructions after clicking 'Authenticate WebAuthn' on the next screen.
+ Para continuar, tenha a sua chave de segurança compatível com o FIDO2 WebAuthn pronta e siga as instruções depois de clicar em "Autenticar WebAuthn" no ecrã seguinte.
- Authentication using FIDO2 WebAuthn, you can authenticate using an external security key.
+ Autenticação utilizando FIDO2 WebAuthn, pode autenticar utilizando uma chave de segurança externa.
- Authenticate WebAuthn
+ Autenticar WebAuthn
- Return to app
+ Voltar à aplicação
- Please make sure your default browser supports WebAuthn and try again.
+ Por favor, certifique-se de que o seu navegador predefinido suporta o WebAuthn e tente novamente.
- This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password.
+ Esta organização tem uma política empresarial que o inscreverá automaticamente na redefinição de palavra-passe. A inscrição permitirá que os administradores da organização alterem a sua palavra-passe mestra.
- Your organization policies have set your maximum allowed vault timeout to {0} hour(s) and {1} minute(s).
+ As políticas da sua organização definiram o tempo limite máximo permitido do cofre de {0} hora(s) e {1} minuto(s).
- Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is {0} hour(s) and {1} minute(s). Your vault timeout action is set to {2}.
+ As políticas da sua organização estão a afetar o tempo limite do cofre. O tempo limite máximo permitido do cofre é de {0} hora(s) e {1} minuto(s). A sua ação de tempo limite do cofre está definida para {2}.
- Your organization policies have set your vault timeout action to {0}.
+ As políticas da sua organização definiram a ação de tempo limite do cofre para {0}.
- Your vault timeout exceeds the restrictions set by your organization.
+ O tempo limite do seu cofre excede as restrições definidas pela sua organização.
Uma ou mais políticas da organização impedem-no de exportar o seu cofre pessoal.
@@ -2179,34 +2179,34 @@ A leitura será efetuada automaticamente.
Conta removida com sucesso
- Delete account
+ Eliminar conta
- Deleting your account is permanent
+ A eliminação da sua conta é permanente
- Your account and all vault data will be erased and unrecoverable. Are you sure you want to continue?
+ A sua conta e todos os dados do cofre serão apagados e irrecuperáveis. Tem a certeza de que quer continuar?
- Deleting your account
+ A eliminar a sua conta
- Your account has been permanently deleted
+ A sua conta foi permanentemente eliminada
- Invalid verification code
+ Código de verificação inválido
Pedir palavra-passe única
- Send code
+ Enviar código
- Sending
+ A enviar
- Copy Send link on save
+ Copiar link do Send ao guardar
A enviar código
@@ -2227,10 +2227,10 @@ A leitura será efetuada automaticamente.
Introduza o código de verificação que foi enviado para o seu e-mail
- Submit crash logs
+ Submeter registo de falhas
- Help Bitwarden improve app stability by submitting crash reports.
+ Ajude o Bitwarden a melhorar a estabilidade da aplicação ao enviar relatórios de falhas.
Options are expanded, tap to collapse.
@@ -2248,10 +2248,10 @@ A leitura será efetuada automaticamente.
Números (0-9)
- Special characters (!@#$%^&*)
+ Caracteres especiais (!@#$%^&*)
- Tap to go back
+ Toque para voltar atrás
A palavra-passe está visível, toque para a ocultar.
@@ -2278,53 +2278,52 @@ A leitura será efetuada automaticamente.
TOTP
- Verification codes
+ Códigos de verificação
É necessária uma subscrição Premium
- Cannot add authenticator key?
+ Não é possível adicionar uma chave de autenticação?
- Scan QR Code
+ Ler código QR
- Cannot scan QR Code?
+ Não consegue ler o código QR?
- Authenticator key
+ Chave de autenticação
- Enter key manually
+ Introduzir chave manualmente
- Add TOTP
+ Adicionar TOTP
- Set up TOTP
+ Configurar TOTP
- Once the key is successfully entered,
-select Add TOTP to store the key safely
+ Assim que a chave for introduzida com sucesso, selecione Adicionar TOTP para guardar a chave em segurança
Ao definir as suas opções de bloqueio para "Nunca" mantém o seu cofre disponível para qualquer pessoa que tenha acesso ao seu dispositivo. Se utilizar esta opção, deve assegurar-se de que mantém o seu dispositivo devidamente protegido.
- One or more of the URLs entered are invalid. Please revise it and try to save again.
+ Um ou mais URLs introduzidos são inválidos. Por favor, reveja-o e tente guardar novamente.
- We were unable to process your request. Please try again or contact us.
+ Não foi possível processar o seu pedido. Por favor, tente novamente ou contacte-nos.
- Allow screen capture
+ Permitir a captura de ecrã
- Are you sure you want to turn on screen capture?
+ Tem a certeza de que pretende ativar a captura de ecrã?
- Início de sessão necessário
+ Início de sessão pedido
Está a tentar iniciar sessão?
@@ -2384,7 +2383,7 @@ select Add TOTP to store the key safely
Todas as notificações
- Password type
+ Tipo de palavra-passe
O que é que gostaria de gerar?
@@ -2399,22 +2398,22 @@ select Add TOTP to store the key safely
Catch-all email
- Forwarded email alias
+ Alias de e-mail reencaminhado
- Random word
+ Palavra aleatória
- Email (required)
+ E-mail (necessário)
- Domain name (required)
+ Nome do domínio (necessário)
- API key (required)
+ Chave da API (necessário)
- Service
+ Serviço
AnonAddy
@@ -2437,7 +2436,7 @@ select Add TOTP to store the key safely
"Fastmail" is the product name and should not be translated.
- API access token
+ Token de acesso à API
Tem a certeza de que pretende substituir o nome de utilizador atual?
@@ -2446,13 +2445,13 @@ select Add TOTP to store the key safely
Gerar nome de utilizador
- Email Type
+ Tipo de e-mail
- Website (required)
+ Site (necessário)
- Unknown {0} error occurred.
+ Ocorreu um erro desconhecido ({0}).
Use your email provider's subaddress capabilities
@@ -2461,13 +2460,13 @@ select Add TOTP to store the key safely
Use your domain's configured catch-all inbox.
- Generate an email alias with an external forwarding service.
+ Gerar um alias de e-mail com um serviço de reencaminhamento externo.
- Random
+ Aleatório
- Conectar ao Relógio
+ Ligar ao relógio
Divulgação do serviço de acessibilidade
@@ -2508,40 +2507,40 @@ Deseja mudar para esta conta?
Iniciar sessão com o dispositivo
- Log in initiated
+ A preparar o início de sessão
- A notification has been sent to your device.
+ Foi enviada uma notificação para o seu dispositivo.
- Please make sure your vault is unlocked and the Fingerprint phrase matches on the other device.
+ Por favor, certifique-se de que o cofre está desbloqueado e que a frase de impressão digital corresponde à do outro dispositivo.
- Resend notification
+ Reenviar notificação
- Need another option?
+ Precisa de outra opção?
- View all log in options
+ Ver todas as opções de início de sessão
Este pedido já não é válido
- Pending login requests
+ Pedidos de início de sessão pendentes
- Decline all requests
+ Recusar todos os pedidos
- Are you sure you want to decline all pending login requests?
+ Tem a certeza de que pretende recusar todos os pedidos de início de sessão pendentes?
- Requests declined
+ Pedidos recusados
- No pending requests
+ Sem pedidos pendentes
Ative a permissão da câmara para utilizar o digitalizador
@@ -2559,55 +2558,55 @@ Deseja mudar para esta conta?
Predefinido (Sistema)
- Important
+ Importante
- Your master password cannot be recovered if you forget it! {0} characters minimum.
+ A sua palavra-passe mestra não pode ser recuperada se a esquecer! {0} caracteres no mínimo.
- Weak Master Password
+ Palavra-passe mestra fraca
- Weak password identified. Use a strong password to protect your account. Are you sure you want to use a weak password?
+ Foi identificada uma palavra-passe fraca. Utilize uma palavra-passe forte para proteger a sua conta. Tem a certeza de que pretende utilizar uma palavra-passe fraca?
- Weak
+ Fraca
- Good
+ Boa
- Strong
+ Forte
- Check known data breaches for this password
+ Verificar violações de dados conhecidas para esta palavra-passe
- Exposed Master Password
+ Palavra-passe mestra exposta
- Password found in a data breach. Use a unique password to protect your account. Are you sure you want to use an exposed password?
+ Palavra-passe encontrada numa violação de dados. Utilize uma palavra-passe única para proteger a sua conta. Tem a certeza de que pretende utilizar uma palavra-passe exposta?
- Weak and Exposed Master Password
+ Palavra-passe mestra fraca e exposta
- Weak password identified and found in a data breach. Use a strong and unique password to protect your account. Are you sure you want to use this password?
+ Palavra-passe fraca identificada e encontrada numa violação de dados. Utilize uma palavra-passe forte e única para proteger a sua conta. Tem a certeza de que pretende utilizar esta palavra-passe?
- Organization SSO identifier required.
+ É necessário o identificador de SSO da organização.
- Add the key to an existing or new item
+ Adicionar a chave a um item existente ou novo
- There are no items in your vault that match "{0}"
+ Não existem itens no seu cofre que correspondam a "{0}"
- Search for an item or add a new item
+ Procurar um item ou adicionar um novo
- There are no items that match the search
+ Não existem itens que correspondam à pesquisa
EUA
@@ -2628,12 +2627,12 @@ Deseja mudar para esta conta?
A sua palavra-passe mestra não cumpre uma ou mais políticas da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.
- Current master password
+ Palavra-passe mestra atual
- Master password re-prompt help
+ Ajuda para pedir novamente a palavra-passe mestra
- O desbloqueio pode falhar devido a memória insuficiente. Diminua as definições de memória do KDF para resolver o problema
+ O desbloqueio pode falhar devido a memória insuficiente. Diminua as definições de memória do KDF para resolver o problema.
diff --git a/src/App/Resources/AppResources.ro.resx b/src/App/Resources/AppResources.ro.resx
index 6ddf289ff..a7daf3b60 100644
--- a/src/App/Resources/AppResources.ro.resx
+++ b/src/App/Resources/AppResources.ro.resx
@@ -2634,6 +2634,6 @@ Doriți să comutați la acest cont?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.ru.resx b/src/App/Resources/AppResources.ru.resx
index 189958fce..6f447ffcd 100644
--- a/src/App/Resources/AppResources.ru.resx
+++ b/src/App/Resources/AppResources.ru.resx
@@ -2634,6 +2634,6 @@
Помощь с повторным запросом мастер-пароля
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Разблокировка может завершиться ошибкой из-за нехватки памяти. Уменьшите настройки памяти KDF для решения этой проблемы
diff --git a/src/App/Resources/AppResources.si.resx b/src/App/Resources/AppResources.si.resx
index 9a1511a63..bc733cd97 100644
--- a/src/App/Resources/AppResources.si.resx
+++ b/src/App/Resources/AppResources.si.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.sl.resx b/src/App/Resources/AppResources.sl.resx
index 7324fede5..f55c6b2c0 100644
--- a/src/App/Resources/AppResources.sl.resx
+++ b/src/App/Resources/AppResources.sl.resx
@@ -2634,6 +2634,6 @@ Do you want to switch to this account?
Pomoč o ponovnem zahtevku za glavno geslo
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.sr.resx b/src/App/Resources/AppResources.sr.resx
index 25a1ec2bc..5649bdf94 100644
--- a/src/App/Resources/AppResources.sr.resx
+++ b/src/App/Resources/AppResources.sr.resx
@@ -2633,9 +2633,9 @@
Тренутна главна лозинка
- Master password re-prompt help
+ Помоћ поновно тражење главне лозинке
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Откључавање можда неће успети због недовољне меморије. Умањите подешавање KDF меморије за решење
diff --git a/src/App/Resources/AppResources.sv.resx b/src/App/Resources/AppResources.sv.resx
index 5809aac31..5e5383637 100644
--- a/src/App/Resources/AppResources.sv.resx
+++ b/src/App/Resources/AppResources.sv.resx
@@ -2498,7 +2498,7 @@ Vill du byta till detta konto?
Hämta huvudlösenordsledtråd
- Logging in as {0} on {1}
+ Loggar in som {0} på {1}
Är det inte du?
@@ -2636,6 +2636,6 @@ Vill du byta till detta konto?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.ta.resx b/src/App/Resources/AppResources.ta.resx
index c27f12abd..ce6963a90 100644
--- a/src/App/Resources/AppResources.ta.resx
+++ b/src/App/Resources/AppResources.ta.resx
@@ -2635,6 +2635,6 @@ select Add TOTP to store the key safely
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.te.resx b/src/App/Resources/AppResources.te.resx
index d3ba16b90..6125bb7e8 100644
--- a/src/App/Resources/AppResources.te.resx
+++ b/src/App/Resources/AppResources.te.resx
@@ -2635,6 +2635,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.th.resx b/src/App/Resources/AppResources.th.resx
index af4435eb4..d6ed89864 100644
--- a/src/App/Resources/AppResources.th.resx
+++ b/src/App/Resources/AppResources.th.resx
@@ -2642,6 +2642,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.tr.resx b/src/App/Resources/AppResources.tr.resx
index 152c53489..89c561b7f 100644
--- a/src/App/Resources/AppResources.tr.resx
+++ b/src/App/Resources/AppResources.tr.resx
@@ -2495,7 +2495,7 @@ Bu hesaba geçmek ister misiniz?
Ana parola ipucunu al
- {1} üzerinde {0} olarak giriş yapılıyor
+ {1} sitesine {0} olarak giriş yapılıyor
Siz değil misiniz?
@@ -2633,6 +2633,6 @@ Bu hesaba geçmek ister misiniz?
Ana parola yeniden istemi yardımı
- Yetersiz bellek nedeniyle kilit açma başarısız olabilir. Çözmek için KDF bellek ayarlarınızı azaltın
+ Yetersiz bellek nedeniyle kilit açma başarısız olabilir. Sorunu çözmek için KDF bellek ayarlarınızı azaltın
diff --git a/src/App/Resources/AppResources.uk.resx b/src/App/Resources/AppResources.uk.resx
index d73e0dba2..099a22f18 100644
--- a/src/App/Resources/AppResources.uk.resx
+++ b/src/App/Resources/AppResources.uk.resx
@@ -2631,9 +2631,9 @@
Поточний головний пароль
- Master password re-prompt help
+ Допомога щодо повторного запиту головного пароля
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Розблокування може не працювати через брак пам'яті. Зменште значення KDF у налаштуваннях, щоб розв'язати проблему.
diff --git a/src/App/Resources/AppResources.vi.resx b/src/App/Resources/AppResources.vi.resx
index 726be32c1..3388ac8dd 100644
--- a/src/App/Resources/AppResources.vi.resx
+++ b/src/App/Resources/AppResources.vi.resx
@@ -2634,6 +2634,6 @@ Do you want to switch to this account?
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/src/App/Resources/AppResources.zh-Hans.resx b/src/App/Resources/AppResources.zh-Hans.resx
index 137ad4a73..871fe22fa 100644
--- a/src/App/Resources/AppResources.zh-Hans.resx
+++ b/src/App/Resources/AppResources.zh-Hans.resx
@@ -964,7 +964,7 @@
自定义环境
- 适用于高级用户,你可以分别指定各个服务的基础 URL。
+ 适用于高级用户。你可以分别指定各个服务的基础 URL。
各环境 URL 已保存。
diff --git a/src/App/Resources/AppResources.zh-Hant.resx b/src/App/Resources/AppResources.zh-Hant.resx
index 735e7f9a9..9879b581f 100644
--- a/src/App/Resources/AppResources.zh-Hant.resx
+++ b/src/App/Resources/AppResources.zh-Hant.resx
@@ -2634,6 +2634,6 @@
Master password re-prompt help
- Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve
+ Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
diff --git a/store/apple/pt-PT/copy.resx b/store/apple/pt-PT/copy.resx
index 5038a1ee3..788ef2e1f 100644
--- a/store/apple/pt-PT/copy.resx
+++ b/store/apple/pt-PT/copy.resx
@@ -122,31 +122,31 @@
Max 30 characters
- Bitwarden, Inc. is the parent company of 8bit Solutions LLC.
+ A Bitwarden, Inc. é a empresa-mãe da 8bit Solutions LLC.
-NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE.
+NOMEADO O MELHOR GESTOR DE PALAVRAS-PASSE PELO THE VERGE, U.S. NEWS & WORLD REPORT, CNET E MUITO MAIS.
-Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go.
+Gerir, armazenar, proteger e partilhar palavras-passe ilimitadas em dispositivos ilimitados a partir de qualquer lugar. O Bitwarden fornece soluções de gestão de senhas de código aberto para todos, seja em casa, no trabalho ou onde estiver.
-Generate strong, unique, and random passwords based on security requirements for every website you frequent.
+Gera palavras-passe fortes, únicas e aleatórias com base em requisitos de segurança para todos os sites que frequenta.
-Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone.
+O Bitwarden Send transmite rapidamente informações encriptadas - ficheiros e texto simples - diretamente a qualquer pessoa.
-Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues.
+O Bitwarden oferece os planos Equipas e Empresarial destinados a empresas, para que possa partilhar de forma segura as palavras-passe com os seus colegas.
-Why Choose Bitwarden:
+Razões para escolher o Bitwarden:
-World-Class Encryption
-Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private.
+Encriptação de classe mundial
+As palavras-passe são protegidas com encriptação avançada de ponta a ponta (AES-256 bit, salted hashtag e PBKDF2 SHA-256) para que os seus dados permaneçam seguros e privados.
-Built-in Password Generator
-Generate strong, unique, and random passwords based on security requirements for every website you frequent.
+Gerador de palavras-passe incorporado
+Gera palavras-passe fortes, únicas e aleatórias com base nos requisitos de segurança para todos os sites que frequenta.
-Global Translations
-Bitwarden translations exist in 40 languages and are growing, thanks to our global community.
+Traduções globais
+O Bitwarden está traduzido em 40 idiomas e está a crescer, graças à nossa comunidade global.
-Cross-Platform Applications
-Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more.
+Aplicações multiplataforma
+Proteja e partilhe dados confidenciais no seu cofre Bitwarden a partir de qualquer navegador, dispositivo móvel ou sistema operativo de computador, e muito mais.
Max 4000 characters
diff --git a/store/apple/sk/copy.resx b/store/apple/sk/copy.resx
index baa3aac14..9fec46ec4 100644
--- a/store/apple/sk/copy.resx
+++ b/store/apple/sk/copy.resx
@@ -164,7 +164,7 @@ Zabezpečte a zdieľajte súkromné dáta prostredníctvom Bitwarden trezora z k
Chráňte váš trezor odtlačkom prsta, PIN kódom, alebo hlavným heslom
- Automaticky vypĺňajte prihlasovacie údaje zo Safari, Chrome a stoviek iných aplikácií
+ Automaticky vypĺňajte prihlasovacie údaje pre Safari, Chrome a stovky iných aplikácií
Synchronizujte a pristupujte k vášmu trezoru z viacerých zariadení
diff --git a/store/google/pt-PT/copy.resx b/store/google/pt-PT/copy.resx
index 65ccd2687..1aba16a2f 100644
--- a/store/google/pt-PT/copy.resx
+++ b/store/google/pt-PT/copy.resx
@@ -126,31 +126,31 @@
Max 80 characters
- Bitwarden, Inc. is the parent company of 8bit Solutions LLC.
+ A Bitwarden, Inc. é a empresa-mãe da 8bit Solutions LLC.
-NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE.
+NOMEADO O MELHOR GESTOR DE PALAVRAS-PASSE PELO THE VERGE, U.S. NEWS & WORLD REPORT, CNET E MUITO MAIS.
-Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go.
+Gerir, armazenar, proteger e partilhar palavras-passe ilimitadas em dispositivos ilimitados a partir de qualquer lugar. O Bitwarden fornece soluções de gestão de palavras-passe de código aberto para todos, seja em casa, no trabalho ou onde estiver.
-Generate strong, unique, and random passwords based on security requirements for every website you frequent.
+Gera palavras-passe fortes, únicas e aleatórias com base em requisitos de segurança para todos os sites que frequenta.
-Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone.
+O Bitwarden Send transmite rapidamente informações encriptadas - ficheiros e texto simples - diretamente a qualquer pessoa.
-Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues.
+O Bitwarden oferece os planos Equipas e Empresarial destinados a empresas, para que possa partilhar de forma segura as palavras-passe com os seus colegas.
-Why Choose Bitwarden:
+Razões para escolher o Bitwarden:
-World-Class Encryption
-Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private.
+Encriptação de classe mundial
+As palavras-passe são protegidas com encriptação avançada de ponta a ponta (AES-256 bit, salted hashtag e PBKDF2 SHA-256) para que os seus dados permaneçam seguros e privados.
-Built-in Password Generator
-Generate strong, unique, and random passwords based on security requirements for every website you frequent.
+Gerador de palavras-passe incorporado
+Gera palavras-passe fortes, únicas e aleatórias com base nos requisitos de segurança para todos os sites que frequenta.
-Global Translations
-Bitwarden translations exist in 40 languages and are growing, thanks to our global community.
+Traduções globais
+O Bitwarden está traduzido em 40 idiomas e está a crescer, graças à nossa comunidade global.
-Cross-Platform Applications
-Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more.
+Aplicações multiplataforma
+Proteja e partilhe dados confidenciais no seu cofre Bitwarden a partir de qualquer navegador, dispositivo móvel ou sistema operativo de computador, e muito mais.
Max 4000 characters
@@ -167,7 +167,7 @@ Secure and share sensitive data within your Bitwarden Vault from any browser, mo
Proteja o seu cofre com impressão digital, código PIN ou palavra-passe mestra
- Preencha rapidamente as credenciais de forma automática a partir do seu navegador web e de outras aplicações
+ Preencha rapidamente as credenciais de forma automática a partir do seu navegador Web e de outras aplicações
Sincronize e aceda ao seu cofre a partir de vários dispositivos
From 3e9711f8f290f96c7c0040aa5f3972b03a3ffbe8 Mon Sep 17 00:00:00 2001
From: ifernandezdiaz
Date: Tue, 20 Jun 2023 11:28:54 -0300
Subject: [PATCH 24/33] [PM-2611] Adding IDs for Cipher/Send search results
(#2575)
* Adding IDs for Cipher/Send search results
* Adding missing spaces
---
.../CipherViewCell/CipherViewCell.xaml | 24 +++++++++++------
.../Controls/SendViewCell/SendViewCell.xaml | 26 ++++++++++++-------
src/App/Pages/Send/SendsPage.xaml | 6 +++--
src/App/Pages/Vault/CiphersPage.xaml | 9 ++++---
4 files changed, 43 insertions(+), 22 deletions(-)
diff --git a/src/App/Controls/CipherViewCell/CipherViewCell.xaml b/src/App/Controls/CipherViewCell/CipherViewCell.xaml
index 5024ad537..e2ecba08e 100644
--- a/src/App/Controls/CipherViewCell/CipherViewCell.xaml
+++ b/src/App/Controls/CipherViewCell/CipherViewCell.xaml
@@ -9,7 +9,8 @@
StyleClass="list-row, list-row-platform"
RowSpacing="0"
ColumnSpacing="0"
- x:DataType="controls:CipherViewCellViewModel">
+ x:DataType="controls:CipherViewCellViewModel"
+ AutomationId="CipherCell">
@@ -36,7 +37,8 @@
IsVisible="{Binding ShowIconImage, Converter={StaticResource inverseBool}}"
Text="{Binding Cipher, Converter={StaticResource iconGlyphConverter}}"
ShouldUpdateFontSizeDynamicallyForAccesibility="True"
- AutomationProperties.IsInAccessibleTree="False" />
+ AutomationProperties.IsInAccessibleTree="False"
+ AutomationId="CipherTypeIcon" />
+ AutomationProperties.IsInAccessibleTree="False"
+ AutomationId="CipherWebsiteIcon" />
@@ -71,7 +74,8 @@
Grid.Column="0"
Grid.Row="0"
StyleClass="list-title, list-title-platform"
- Text="{Binding Cipher.Name}" />
+ Text="{Binding Cipher.Name}"
+ AutomationId="CipherNameLabel" />
+ Converter={StaticResource stringHasValueConverter}}"
+ AutomationId="CipherSubTitleLabel" />
+ AutomationProperties.Name="{u:I18n Shared}"
+ AutomationId="CipherInCollectionIcon" />
+ AutomationProperties.Name="{u:I18n Attachments}"
+ AutomationId="CipherWithAttachmentsIcon" />
+ AutomationProperties.Name="{u:I18n Options}"
+ AutomationId="CipherOptionsButton" />
\ No newline at end of file
diff --git a/src/App/Controls/SendViewCell/SendViewCell.xaml b/src/App/Controls/SendViewCell/SendViewCell.xaml
index 8a9d0e2a6..30d7b8ca3 100644
--- a/src/App/Controls/SendViewCell/SendViewCell.xaml
+++ b/src/App/Controls/SendViewCell/SendViewCell.xaml
@@ -1,4 +1,4 @@
-
+
+ Text="{Binding Send.Name}"
+ AutomationId="SendNameLabel" />
+ Text="{Binding Send.DisplayDate}"
+ AutomationId="SendDateLabel" />
+ AutomationProperties.Name="{u:I18n Disabled}"
+ AutomationId="DisabledSendLabel" />
+ AutomationProperties.Name="{u:I18n Password}"
+ AutomationId="PasswordProtectedSendLabel" />
+ AutomationProperties.Name="{u:I18n MaxAccessCountReached}"
+ AutomationId="SendMaxAccessCountReachedLabel" />
+ AutomationProperties.Name="{u:I18n Expired}"
+ AutomationId="ExpiredSendLabel" />
+ AutomationProperties.Name="{u:I18n PendingDelete}"
+ AutomationId="SendWithPendingDeletionLabel" />
+ AutomationProperties.Name="{u:I18n Options}"
+ AutomationId="SendOptionsButton" />
diff --git a/src/App/Pages/Send/SendsPage.xaml b/src/App/Pages/Send/SendsPage.xaml
index fd37c5b2d..b2194eb31 100644
--- a/src/App/Pages/Send/SendsPage.xaml
+++ b/src/App/Pages/Send/SendsPage.xaml
@@ -67,13 +67,15 @@
SelectionMode="Single"
SelectionChanged="RowSelected"
StyleClass="list, list-platform"
- ExtraDataForLogging="Sends Page">
+ ExtraDataForLogging="Sends Page"
+ AutomationId="SendCellList">
+ ShowOptions="{Binding BindingContext.SendEnabled, Source={x:Reference _page}}"
+ AutomationId="SendCell" />
diff --git a/src/App/Pages/Vault/CiphersPage.xaml b/src/App/Pages/Vault/CiphersPage.xaml
index 36b9e01c0..f35d7dc6f 100644
--- a/src/App/Pages/Vault/CiphersPage.xaml
+++ b/src/App/Pages/Vault/CiphersPage.xaml
@@ -41,7 +41,8 @@
HorizontalOptions="FillAndExpand"
TextChanged="SearchBar_TextChanged"
SearchButtonPressed="SearchBar_SearchButtonPressed"
- Placeholder="{Binding PageTitle}" />
+ Placeholder="{Binding PageTitle}"
+ AutomationId="SearchBar" />
@@ -91,7 +92,8 @@
Source="empty_items_state" />
+ HorizontalTextAlignment="Center"
+ AutomationId="NoSearchResultsLabel" />
+ ExtraDataForLogging="Ciphers Page"
+ AutomationId="CipherList">
Date: Tue, 20 Jun 2023 15:12:15 -0300
Subject: [PATCH 25/33] [PM-2612] Adding AutomationIDs for
LoginPasswordlessPage elements (#2574)
* Adding AutomationIDs for LoginPasswordlessPag elements
* Adding AutomationIDs for LoginPasswordlessRequest page elements
* Fixing missing space
---
.../Pages/Accounts/LoginPasswordlessPage.xaml | 21 ++++++++++++-------
.../LoginPasswordlessRequestPage.xaml | 12 +++++++----
2 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/src/App/Pages/Accounts/LoginPasswordlessPage.xaml b/src/App/Pages/Accounts/LoginPasswordlessPage.xaml
index 83361c29c..6cb04274e 100644
--- a/src/App/Pages/Accounts/LoginPasswordlessPage.xaml
+++ b/src/App/Pages/Accounts/LoginPasswordlessPage.xaml
@@ -32,7 +32,8 @@
+ Margin="0,0,0,24"
+ AutomationId="LogInAttemptByLabel" />
+ Margin="0,0,0,27"
+ AutomationId="FingerprintValueLabel" />
+ Margin="0,0,0,21"
+ AutomationId="DeviceTypeValueLabel" />
+ Margin="0,0,0,21"
+ AutomationId="IpAddressValueLabel" />
+ Margin="0,0,0,57"
+ AutomationId="TimeOfRequestValueLabel" />
@@ -75,11 +80,13 @@
Text="{u:I18n ConfirmLogIn}"
Command="{Binding AcceptRequestCommand}"
Margin="0,0,0,17"
- StyleClass="btn-primary"/>
+ StyleClass="btn-primary"
+ AutomationId="ConfirmLoginButton" />
+ StyleClass="btn-secundary"
+ AutomationId="DenyLoginButton" />
diff --git a/src/App/Pages/Accounts/LoginPasswordlessRequestPage.xaml b/src/App/Pages/Accounts/LoginPasswordlessRequestPage.xaml
index d6ea864f0..6141ade6b 100644
--- a/src/App/Pages/Accounts/LoginPasswordlessRequestPage.xaml
+++ b/src/App/Pages/Accounts/LoginPasswordlessRequestPage.xaml
@@ -24,7 +24,8 @@
Text="{u:I18n LogInInitiated}"
FontSize="Title"
FontAttributes="Bold"
- Margin="0,14,0,21"/>
+ Margin="0,14,0,21"
+ AutomationId="LogInInitiatedLabel" />
+ TextColor="{DynamicResource FingerprintPhrase}"
+ AutomationId="FingerprintPhraseValue" />
+ TextColor="{DynamicResource HyperlinkColor}"
+ AutomationId="ResendNotificationButton">
@@ -64,7 +67,8 @@
VerticalTextAlignment="End"
VerticalOptions="CenterAndExpand"
Margin="5, 0"
- TextColor="{DynamicResource HyperlinkColor}">
+ TextColor="{DynamicResource HyperlinkColor}"
+ AutomationId="ViewAllLoginOptionsButton">
From 6644e3b449f4f012fd4816eba60d016dfee1df30 Mon Sep 17 00:00:00 2001
From: ifernandezdiaz
Date: Tue, 20 Jun 2023 16:26:43 -0300
Subject: [PATCH 26/33] [PM-2545] Adding Automation IDs for CipherDetailsPage
elements (#2576)
* Adding IDs to CipherDetailsPage
* Fixing extra spaces
* Fixing extra space
---
src/App/Pages/Vault/CipherAddEditPage.xaml | 8 +-
src/App/Pages/Vault/CipherDetailsPage.xaml | 155 ++++++++++++++-------
2 files changed, 105 insertions(+), 58 deletions(-)
diff --git a/src/App/Pages/Vault/CipherAddEditPage.xaml b/src/App/Pages/Vault/CipherAddEditPage.xaml
index 772701cde..552a5ac02 100644
--- a/src/App/Pages/Vault/CipherAddEditPage.xaml
+++ b/src/App/Pages/Vault/CipherAddEditPage.xaml
@@ -57,16 +57,16 @@
x:Key="deleteItem" />
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+ StyleClass="box-value"
+ AutomationId="ItemNameLabel" />
@@ -103,7 +104,8 @@
Text="{Binding Cipher.Login.Username, Mode=OneWay}"
StyleClass="box-value"
Grid.Row="1"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationId="LoginUsernameLabel" />
+ AutomationProperties.Name="{u:I18n CopyUsername}"
+ AutomationId="CopyUsernameButton" />
@@ -139,14 +142,16 @@
StyleClass="box-value"
Grid.Row="1"
Grid.Column="0"
- IsVisible="{Binding ShowPassword, Converter={StaticResource inverseBool}}" />
+ IsVisible="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
+ AutomationId="LoginPasswordLabel" />
+ IsVisible="{Binding ShowPassword}"
+ AutomationId="LoginPasswordLabel" />
+ IsVisible="{Binding Cipher.ViewPassword}"
+ AutomationId="LoginCheckPasswordButton" />
+ IsVisible="{Binding Cipher.ViewPassword}"
+ AutomationId="LoginViewPasswordButton" />
+ IsVisible="{Binding Cipher.ViewPassword}"
+ AutomationId="LoginCopyPasswordButton" />
@@ -205,14 +213,16 @@
Grid.Row="1"
Grid.Column="0"
VerticalTextAlignment="Start"
- VerticalOptions="Start" />
+ VerticalOptions="Start"
+ AutomationId="LoginTotpCodeLabel" />
+ VerticalOptions="FillAndExpand"
+ AutomationId="LoginTotpProgressBar" />
+ AutomationProperties.Name="{u:I18n CopyTotp}"
+ AutomationId="LoginCopytotpButton" />
+ HorizontalOptions="FillAndExpand"
+ AutomationId="ShowUpgradePremiumTotpLabel" />
@@ -254,7 +266,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="CardholderNameLabel" />
@@ -279,13 +292,15 @@
StyleClass="box-value"
Grid.Row="1"
Grid.Column="0"
- IsVisible="{Binding ShowCardNumber, Converter={StaticResource inverseBool}}" />
+ IsVisible="{Binding ShowCardNumber, Converter={StaticResource inverseBool}}"
+ AutomationId="CardNumberLabel" />
+ IsVisible="{Binding ShowCardNumber}"
+ AutomationId="CardNumberLabel" />
+ AutomationProperties.Name="{u:I18n ToggleVisibility}"
+ AutomationId="CardShowNumberButton" />
+ AutomationProperties.Name="{u:I18n CopyNumber}"
+ AutomationId="CardCopyNumberButton" />
@@ -315,7 +332,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="CardBrandLabel" />
@@ -326,7 +344,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="CardExpirationLabel" />
@@ -351,13 +370,15 @@
StyleClass="box-value"
Grid.Row="1"
Grid.Column="0"
- IsVisible="{Binding ShowCardCode, Converter={StaticResource inverseBool}}" />
+ IsVisible="{Binding ShowCardCode, Converter={StaticResource inverseBool}}"
+ AutomationId="CardSecurityCodeLabel" />
+ IsVisible="{Binding ShowCardCode}"
+ AutomationId="CardSecurityCodeLabel" />
+ AutomationProperties.Name="{u:I18n ToggleVisibility}"
+ AutomationId="CardShowSecurityCodeButton" />
+ AutomationProperties.Name="{u:I18n CopySecurityCode}"
+ AutomationId="CardCopySecurityCodeButton" />
@@ -389,7 +412,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="IdentityNameLabel" />
@@ -400,7 +424,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="IdentityUsernameLabel" />
@@ -411,7 +436,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="IdentityCompanyNameLabel" />
@@ -422,7 +448,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="IdentitySsnLabel" />
@@ -433,7 +460,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="IdentityPassportNumberLabel" />
@@ -444,7 +472,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="IdentityLicenseNumberLabel" />
@@ -455,7 +484,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="IdentityEmailLabel" />
@@ -466,7 +496,8 @@
StyleClass="box-label" />
+ StyleClass="box-value"
+ AutomationId="IdentityPhoneLabel" />
@@ -477,23 +508,28 @@
+ StyleClass="box-value"
+ AutomationId="IdentityAddressOneLabel" />
+ StyleClass="box-value"
+ AutomationId="IdentityAddressTwoLabel" />
+ StyleClass="box-value"
+ AutomationId="IdentityAddressThreeLabel" />
+ StyleClass="box-value"
+ AutomationId="IdentityFullAddressPartTwoLabel" />
+ StyleClass="box-value"
+ AutomationId="IdentityCountryLabel" />
@@ -503,7 +539,7 @@
-
+
@@ -533,7 +569,8 @@
Text="{Binding HostOrUri, Mode=OneWay}"
StyleClass="box-value"
Grid.Row="1"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationId="CipherUriLabel" />
+ AutomationProperties.Name="{u:I18n Launch}"
+ AutomationId="CipherLaunchUriButton" />
+ AutomationProperties.Name="{u:I18n Copy}"
+ AutomationId="CipherCopyUriButton" />
@@ -571,11 +610,12 @@
+ StyleClass="box-value"
+ AutomationId="CipherNotesLabel" />
-
+
@@ -590,21 +630,23 @@
-
+
-
+
+ HorizontalOptions="StartAndExpand"
+ AutomationId="CipherAttachmentFileNameLabel" />
+ VerticalTextAlignment="Center"
+ AutomationId="CipherAttachmentFileSizeLabel" />
+ AutomationProperties.Name="{u:I18n Download}"
+ AutomationId="CipherAttachmentDownloadButton" />
@@ -622,17 +665,20 @@
+ StyleClass="box-footer-label"
+ AutomationId="CipherUpdatedDateLabel" />
+ IsVisible="{Binding Cipher.PasswordRevisionDisplayDate, Converter={StaticResource notNull}}"
+ AutomationId="CipherUpdatedPasswordDateLabel">
+ IsVisible="{Binding Cipher.HasPasswordHistory}"
+ AutomationId="CipherPasswordHistoryLabel">
@@ -662,6 +708,7 @@
AbsoluteLayout.LayoutBounds="1, 1, AutoSize, AutoSize"
AutomationProperties.IsInAccessibleTree="True"
AutomationProperties.Name="{u:I18n EditItem}"
+ AutomationId="CipherEditButton"
IsVisible="{Binding CanEdit}">
From d876b54f45780a6224abed9a78c20a9c508e5c0d Mon Sep 17 00:00:00 2001
From: ifernandezdiaz
Date: Tue, 20 Jun 2023 17:49:26 -0300
Subject: [PATCH 27/33] Adding IDs for AttachmentPage elements (#2577)
---
src/App/Pages/Vault/AttachmentsPage.xaml | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/src/App/Pages/Vault/AttachmentsPage.xaml b/src/App/Pages/Vault/AttachmentsPage.xaml
index 0b56ab9c1..4159feedf 100644
--- a/src/App/Pages/Vault/AttachmentsPage.xaml
+++ b/src/App/Pages/Vault/AttachmentsPage.xaml
@@ -33,23 +33,25 @@
-
+
-
+
-
+
+ HorizontalOptions="StartAndExpand"
+ AutomationId="AttachmentFileNameLabel" />
+ VerticalTextAlignment="Center"
+ AutomationId="AttachmentFileSizeLabel" />
+ AutomationProperties.Name="{u:I18n Delete}"
+ AutomationId="AttachmentDeleteButton" />
@@ -77,17 +80,20 @@
LineBreakMode="CharacterWrap"
StyleClass="text-sm, text-muted"
HorizontalOptions="FillAndExpand"
- HorizontalTextAlignment="Center" />
+ HorizontalTextAlignment="Center"
+ AutomationId="NoFileChosenLabel" />
+ HorizontalTextAlignment="Center"
+ AutomationId="NewAttachmentNameLabel" />
+ Clicked="ChooseFile_Clicked"
+ AutomationId="ChooseFileButton">
Date: Fri, 23 Jun 2023 05:40:37 +0000
Subject: [PATCH 28/33] Autosync the updated translations (#2582)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
---
src/App/Resources/AppResources.it.resx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/App/Resources/AppResources.it.resx b/src/App/Resources/AppResources.it.resx
index f72333088..23f2d34c2 100644
--- a/src/App/Resources/AppResources.it.resx
+++ b/src/App/Resources/AppResources.it.resx
@@ -2613,7 +2613,7 @@ Vuoi passare a questo account?
US
- UE
+ EU
Self-hosted
From 1407aa565581a5008968eafb808f2527b8792982 Mon Sep 17 00:00:00 2001
From: ifernandezdiaz
Date: Fri, 23 Jun 2023 13:31:24 -0300
Subject: [PATCH 29/33] [PM-2678] Adding IDs for Settings Page elements (#2584)
* Adding IDS for Settings elements
* Adding IDS for Settings elements
---
.../Settings/SettingsPage/SettingsPage.xaml | 15 +++++++++-----
.../SettingsPage/SettingsPageListItem.cs | 20 +++++++++++++++++++
2 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/src/App/Pages/Settings/SettingsPage/SettingsPage.xaml b/src/App/Pages/Settings/SettingsPage/SettingsPage.xaml
index d1816306b..03400d693 100644
--- a/src/App/Pages/Settings/SettingsPage/SettingsPage.xaml
+++ b/src/App/Pages/Settings/SettingsPage/SettingsPage.xaml
@@ -20,7 +20,8 @@
x:Key="regularTemplate"
x:DataType="pages:SettingsPageListItem">
+ StyleClass="list-row, list-row-platform"
+ AutomationId="{Binding AutomationId}">
+ StyleClass="list-title"
+ AutomationId="SettingTitleLabel" />
+ StyleClass="list-sub"
+ AutomationId="SettingStatusLabel" />
+ BorderColor="{DynamicResource PrimaryColor}"
+ AutomationId="SettingActivePolicyTextLabel">
+ StyleClass="list-sub" Margin="-5"
+ AutomationId="SettingCustomVaultTimeoutPicker" />
diff --git a/src/App/Pages/Settings/SettingsPage/SettingsPageListItem.cs b/src/App/Pages/Settings/SettingsPage/SettingsPageListItem.cs
index b518b4cf8..1c9fa3093 100644
--- a/src/App/Pages/Settings/SettingsPage/SettingsPageListItem.cs
+++ b/src/App/Pages/Settings/SettingsPage/SettingsPageListItem.cs
@@ -1,4 +1,5 @@
using System;
+using System.Globalization;
using System.Threading.Tasks;
using Bit.App.Resources;
using Bit.App.Utilities;
@@ -22,5 +23,24 @@ namespace Bit.App.Pages
public Color SubLabelColor => SubLabelTextEnabled ?
ThemeManager.GetResourceColor("SuccessColor") :
ThemeManager.GetResourceColor("MutedColor");
+ public string AutomationId
+ {
+ get
+ {
+ if (!UseFrame)
+ {
+ var idText = new CultureInfo("en-US", false)
+ .TextInfo
+ .ToTitleCase(Name)
+ .Replace(" ", String.Empty)
+ .Replace("-", String.Empty);
+ return $"{idText}Cell";
+ }
+ else
+ {
+ return "EnabledPolicyCell";
+ }
+ }
+ }
}
}
From 31487a31bb8dc15a74adfea68128098f58477297 Mon Sep 17 00:00:00 2001
From: ifernandezdiaz
Date: Mon, 26 Jun 2023 10:30:13 -0300
Subject: [PATCH 30/33] [PM-2748] Refactoring locator strategy for Cipher
Details page (#2586)
* Refactoring locator strategy for Cipher Details page
* Fixing extra spaces
---
src/App/Pages/Vault/CipherDetailsPage.xaml | 179 ++++++++++++---------
1 file changed, 107 insertions(+), 72 deletions(-)
diff --git a/src/App/Pages/Vault/CipherDetailsPage.xaml b/src/App/Pages/Vault/CipherDetailsPage.xaml
index 0de7f7692..1f82eef19 100644
--- a/src/App/Pages/Vault/CipherDetailsPage.xaml
+++ b/src/App/Pages/Vault/CipherDetailsPage.xaml
@@ -69,24 +69,27 @@
-
+
+ StyleClass="box-header, box-header-platform"
+ AutomationId="" />
-
+
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ IsVisible="{Binding Cipher.Login.Username, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
@@ -99,13 +102,14 @@
Text="{u:I18n Username}"
StyleClass="box-label"
Grid.Row="0"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ AutomationId="CopyValueButton" />
+ IsVisible="{Binding Cipher.Login.Password, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
@@ -136,14 +141,15 @@
Text="{u:I18n Password}"
StyleClass="box-label"
Grid.Row="0"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ AutomationId="ItemValue" />
+ AutomationId="CheckPasswordButton" />
+ AutomationId="ViewValueButton" />
+ AutomationId="CopyValueButton" />
-
+
@@ -205,7 +211,8 @@
Text="{u:I18n VerificationCodeTotp}"
StyleClass="box-label"
Grid.Row="0"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ AutomationId="CopyValueButton" />
+ IsVisible="{Binding Cipher.Card.CardholderName, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ IsVisible="{Binding Cipher.Card.Number, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
@@ -286,21 +296,22 @@
Text="{u:I18n Number}"
StyleClass="box-label"
Grid.Row="0"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ AutomationId="ItemValue" />
+ AutomationId="ShowValueButton" />
+ AutomationId="CopyValueButton" />
+ IsVisible="{Binding Cipher.Card.Brand, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ IsVisible="{Binding Cipher.Card.Expiration, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ IsVisible="{Binding Cipher.Card.Code, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
@@ -364,21 +380,22 @@
Text="{u:I18n SecurityCode}"
StyleClass="box-label"
Grid.Row="0"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ AutomationId="ItemValue" />
+ AutomationId="ShowValueButton" />
+ AutomationId="CopyValueButton" />
+ IsVisible="{Binding Cipher.Identity.FullName, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ IsVisible="{Binding Cipher.Identity.Username, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ IsVisible="{Binding Cipher.Identity.Company, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ IsVisible="{Binding Cipher.Identity.SSN, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ IsVisible="{Binding Cipher.Identity.PassportNumber, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ IsVisible="{Binding Cipher.Identity.LicenseNumber, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ IsVisible="{Binding Cipher.Identity.Email, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow">
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
+ IsVisible="{Binding Cipher.Identity.Phone, Converter={StaticResource stringHasValue}}"
+ AutomationId="ItemRow" >
+ StyleClass="box-label"
+ AutomationId="ItemName" />
+ AutomationId="ItemValue" />
-
+
+ StyleClass="box-label"
+ AutomationId="ItemName" />
-
+
@@ -570,7 +605,7 @@
StyleClass="box-value"
Grid.Row="1"
Grid.Column="0"
- AutomationId="CipherUriLabel" />
+ AutomationId="UriValue" />
+ AutomationId="LaunchUriButton" />
+ AutomationId="CopyUriButton" />
@@ -607,7 +642,7 @@
-
+
Date: Mon, 26 Jun 2023 10:31:57 -0300
Subject: [PATCH 31/33] [PM-2688] Adding IDs for Options and Folders pages
(#2585)
* Adding IDs for Options and Folders pages
* Fixing extra spaces
---
src/App/Pages/Settings/FolderAddEditPage.xaml | 12 +++++++----
src/App/Pages/Settings/FoldersPage.xaml | 9 +++++---
src/App/Pages/Settings/OptionsPage.xaml | 21 ++++++++++++-------
3 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/src/App/Pages/Settings/FolderAddEditPage.xaml b/src/App/Pages/Settings/FolderAddEditPage.xaml
index 2aa3efb86..97c06a820 100644
--- a/src/App/Pages/Settings/FolderAddEditPage.xaml
+++ b/src/App/Pages/Settings/FolderAddEditPage.xaml
@@ -13,13 +13,16 @@
-
-
+
+
+ x:Name="_deleteItem"
+ AutomationId="DeleteFolderButton" />
@@ -43,7 +46,8 @@
StyleClass="box-value"
x:Name="_nameEntry"
ReturnType="Go"
- ReturnCommand="{Binding SubmitCommand}" />
+ ReturnCommand="{Binding SubmitCommand}"
+ AutomationId="FolderNameEntry" />
diff --git a/src/App/Pages/Settings/FoldersPage.xaml b/src/App/Pages/Settings/FoldersPage.xaml
index 5fdd1a567..ed26436f2 100644
--- a/src/App/Pages/Settings/FoldersPage.xaml
+++ b/src/App/Pages/Settings/FoldersPage.xaml
@@ -31,7 +31,8 @@
Margin="20, 0"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
- HorizontalTextAlignment="Center">
+ HorizontalTextAlignment="Center"
+ AutomationId="NoFoldersLabel">
+ Padding="10"
+ AutomationId="FolderCell">
+ Text="{Binding Name, Mode=OneWay}"
+ AutomationId="FolderName" />
diff --git a/src/App/Pages/Settings/OptionsPage.xaml b/src/App/Pages/Settings/OptionsPage.xaml
index fb8a4966f..8a6a407b5 100644
--- a/src/App/Pages/Settings/OptionsPage.xaml
+++ b/src/App/Pages/Settings/OptionsPage.xaml
@@ -27,7 +27,8 @@
x:Name="_themePicker"
ItemsSource="{Binding ThemeOptions, Mode=OneTime}"
SelectedIndex="{Binding ThemeSelectedIndex}"
- StyleClass="box-value" />
+ StyleClass="box-value"
+ AutomationId="ThemeSelectorPicker" />
+ StyleClass="box-value"
+ AutomationId="DefaultDarkThemePicker" />
+ StyleClass="box-value"
+ AutomationId="DefaultUriMatchDetectionPicker" />
+ StyleClass="box-value"
+ AutomationId="ClearClipboardPicker" />
+ StyleClass="box-value"
+ AutomationId="LanguagePicker" />
+ HorizontalOptions="End"
+ AutomationId="CopyTotpAutomaticallyToggle" />
+ HorizontalOptions="End"
+ AutomationId="ShowWebsiteIconsToggle" />
Date: Tue, 27 Jun 2023 18:49:38 -0300
Subject: [PATCH 32/33] [PM-192] Refactor forwarded email providers (#2579)
* PM-192 Refactor Forwarded email providers to use better patterns and code reuse.
* PM-192 fix format
---
src/App/Pages/Generator/GeneratorPage.xaml | 112 +-------
.../Pages/Generator/GeneratorPageViewModel.cs | 253 ++++++++----------
src/App/Resources/AppResources.Designer.cs | 18 ++
src/App/Resources/AppResources.resx | 6 +
src/Core/Abstractions/IApiService.cs | 6 +-
src/Core/Abstractions/ICryptoService.cs | 1 +
src/Core/Core.csproj | 2 +
.../ForwardedEmailInvalidSecretException.cs | 11 +
.../Domain/UsernameGenerationOptions.cs | 29 ++
.../Models/Domain/UsernameGeneratorConfig.cs | 9 -
src/Core/Services/ApiService.cs | 150 ++---------
src/Core/Services/CryptoService.cs | 18 ++
.../EmailForwarders/AnonAddyForwarder.cs | 42 +++
.../Services/EmailForwarders/BaseForwarder.cs | 63 +++++
.../EmailForwarders/DuckDuckGoForwarder.cs | 25 ++
.../EmailForwarders/FastmailForwarder.cs | 98 +++++++
.../EmailForwarders/FirefoxRelayForwarder.cs | 36 +++
.../EmailForwarders/ForwarderOptions.cs | 7 +
.../EmailForwarders/SimpleLoginForwarder.cs | 25 ++
.../Services/UsernameGenerationService.cs | 95 ++-----
20 files changed, 547 insertions(+), 459 deletions(-)
create mode 100644 src/Core/Exceptions/ForwardedEmailInvalidSecretException.cs
delete mode 100644 src/Core/Models/Domain/UsernameGeneratorConfig.cs
create mode 100644 src/Core/Services/EmailForwarders/AnonAddyForwarder.cs
create mode 100644 src/Core/Services/EmailForwarders/BaseForwarder.cs
create mode 100644 src/Core/Services/EmailForwarders/DuckDuckGoForwarder.cs
create mode 100644 src/Core/Services/EmailForwarders/FastmailForwarder.cs
create mode 100644 src/Core/Services/EmailForwarders/FirefoxRelayForwarder.cs
create mode 100644 src/Core/Services/EmailForwarders/ForwarderOptions.cs
create mode 100644 src/Core/Services/EmailForwarders/SimpleLoginForwarder.cs
diff --git a/src/App/Pages/Generator/GeneratorPage.xaml b/src/App/Pages/Generator/GeneratorPage.xaml
index 53553cc3f..a2f8b533b 100644
--- a/src/App/Pages/Generator/GeneratorPage.xaml
+++ b/src/App/Pages/Generator/GeneratorPage.xaml
@@ -249,27 +249,25 @@
ItemDisplayBinding="{Binding ., Converter={StaticResource localizableEnum}}"
StyleClass="box-value"
AutomationId="ServiceTypePicker" />
-
-
+
+ AutomationId="ForwardedEmailApiSecretEntry" />
+ AutomationId="ShowForwardedEmailApiSecretButton" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/App/Pages/Generator/GeneratorPageViewModel.cs b/src/App/Pages/Generator/GeneratorPageViewModel.cs
index 78436352b..935a9f7e0 100644
--- a/src/App/Pages/Generator/GeneratorPageViewModel.cs
+++ b/src/App/Pages/Generator/GeneratorPageViewModel.cs
@@ -8,6 +8,7 @@ using Bit.App.Utilities;
using Bit.Core;
using Bit.Core.Abstractions;
using Bit.Core.Enums;
+using Bit.Core.Exceptions;
using Bit.Core.Models.Domain;
using Bit.Core.Utilities;
using Xamarin.CommunityToolkit.ObjectModel;
@@ -23,7 +24,7 @@ namespace Bit.App.Pages
private readonly IUsernameGenerationService _usernameGenerationService;
private readonly ITokenService _tokenService;
private readonly IDeviceActionService _deviceActionService;
- readonly LazyResolve _logger = new LazyResolve("logger");
+ readonly LazyResolve _logger = new LazyResolve();
private PasswordGenerationOptions _options;
private UsernameGenerationOptions _usernameOptions;
@@ -49,11 +50,7 @@ namespace Bit.App.Pages
private bool _doneIniting;
private bool _showTypePicker;
private string _emailWebsite;
- private bool _showFirefoxRelayApiAccessToken;
- private bool _showAnonAddyApiAccessToken;
- private bool _showSimpleLoginApiKey;
- private bool _showDuckDuckGoApiKey;
- private bool _showFastmailApiKey;
+ private bool _showForwardedEmailApiSecret;
private bool _editMode;
public GeneratorPageViewModel()
@@ -96,7 +93,7 @@ namespace Bit.App.Pages
UsernameTypePromptHelpCommand = new Command(UsernameTypePromptHelp);
RegenerateCommand = new AsyncCommand(RegenerateAsync, onException: ex => OnSubmitException(ex), allowsMultipleExecutions: false);
RegenerateUsernameCommand = new AsyncCommand(RegenerateUsernameAsync, onException: ex => OnSubmitException(ex), allowsMultipleExecutions: false);
- ToggleForwardedEmailHiddenValueCommand = new AsyncCommand(ToggleForwardedEmailHiddenValueAsync, onException: ex => _logger.Value.Exception(ex), allowsMultipleExecutions: false);
+ ToggleForwardedEmailHiddenValueCommand = new Command(() => ShowForwardedEmailApiSecret = !ShowForwardedEmailApiSecret);
CopyCommand = new AsyncCommand(CopyAsync, onException: ex => _logger.Value.Exception(ex), allowsMultipleExecutions: false);
CloseCommand = new AsyncCommand(CloseAsync, onException: ex => _logger.Value.Exception(ex), allowsMultipleExecutions: false);
}
@@ -415,7 +412,6 @@ namespace Bit.App.Pages
public string UsernameTypeDescriptionLabel => GetUsernameTypeLabelDescription(UsernameTypeSelected);
-
public ForwardedEmailServiceType ForwardedEmailServiceSelected
{
get => _usernameOptions.ServiceType;
@@ -425,7 +421,11 @@ namespace Bit.App.Pages
{
_usernameOptions.ServiceType = value;
Username = Constants.DefaultUsernameGenerated;
- TriggerPropertyChanged(nameof(ForwardedEmailServiceSelected));
+ TriggerPropertyChanged(nameof(ForwardedEmailServiceSelected), new string[]
+ {
+ nameof(ForwardedEmailApiSecret),
+ nameof(ForwardedEmailApiSecretLabel)
+ });
SaveUsernameOptionsAsync(false).FireAndForget();
}
}
@@ -445,27 +445,104 @@ namespace Bit.App.Pages
}
}
- public string AnonAddyApiAccessToken
+ public string ForwardedEmailApiSecret
{
- get => _usernameOptions.AnonAddyApiAccessToken;
+ get
+ {
+ switch (ForwardedEmailServiceSelected)
+ {
+ case ForwardedEmailServiceType.AnonAddy:
+ return _usernameOptions.AnonAddyApiAccessToken;
+ case ForwardedEmailServiceType.DuckDuckGo:
+ return _usernameOptions.DuckDuckGoApiKey;
+ case ForwardedEmailServiceType.Fastmail:
+ return _usernameOptions.FastMailApiKey;
+ case ForwardedEmailServiceType.FirefoxRelay:
+ return _usernameOptions.FirefoxRelayApiAccessToken;
+ case ForwardedEmailServiceType.SimpleLogin:
+ return _usernameOptions.SimpleLoginApiKey;
+ default:
+ return null;
+ }
+ }
set
{
- if (_usernameOptions.AnonAddyApiAccessToken != value)
+ bool changed = false;
+ switch (ForwardedEmailServiceSelected)
{
- _usernameOptions.AnonAddyApiAccessToken = value;
- TriggerPropertyChanged(nameof(AnonAddyApiAccessToken));
+ case ForwardedEmailServiceType.AnonAddy:
+ if (_usernameOptions.AnonAddyApiAccessToken != value)
+ {
+ _usernameOptions.AnonAddyApiAccessToken = value;
+ changed = true;
+ }
+ break;
+ case ForwardedEmailServiceType.DuckDuckGo:
+ if (_usernameOptions.DuckDuckGoApiKey != value)
+ {
+ _usernameOptions.DuckDuckGoApiKey = value;
+ changed = true;
+ }
+ break;
+ case ForwardedEmailServiceType.Fastmail:
+ if (_usernameOptions.FastMailApiKey != value)
+ {
+ _usernameOptions.FastMailApiKey = value;
+ changed = true;
+ }
+ break;
+ case ForwardedEmailServiceType.FirefoxRelay:
+ if (_usernameOptions.FirefoxRelayApiAccessToken != value)
+ {
+ _usernameOptions.FirefoxRelayApiAccessToken = value;
+ changed = true;
+ }
+ break;
+ case ForwardedEmailServiceType.SimpleLogin:
+ if (_usernameOptions.SimpleLoginApiKey != value)
+ {
+ _usernameOptions.SimpleLoginApiKey = value;
+ changed = true;
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (changed)
+ {
+ TriggerPropertyChanged(nameof(ForwardedEmailApiSecret));
SaveUsernameOptionsAsync(false).FireAndForget();
}
}
}
- public bool ShowAnonAddyApiAccessToken
+ public string ForwardedEmailApiSecretLabel
{
get
{
- return _showAnonAddyApiAccessToken;
+ switch (ForwardedEmailServiceSelected)
+ {
+ case ForwardedEmailServiceType.AnonAddy:
+ case ForwardedEmailServiceType.FirefoxRelay:
+ return AppResources.APIAccessToken;
+ case ForwardedEmailServiceType.DuckDuckGo:
+ case ForwardedEmailServiceType.Fastmail:
+ case ForwardedEmailServiceType.SimpleLogin:
+ return AppResources.APIKeyRequiredParenthesis;
+ default:
+ return null;
+ }
}
- set => SetProperty(ref _showAnonAddyApiAccessToken, value);
+ }
+
+ public bool ShowForwardedEmailApiSecret
+ {
+ get
+ {
+ return _showForwardedEmailApiSecret;
+ }
+ set => SetProperty(ref _showForwardedEmailApiSecret, value);
}
public string AnonAddyDomainName
@@ -482,99 +559,6 @@ namespace Bit.App.Pages
}
}
- public string FirefoxRelayApiAccessToken
- {
- get => _usernameOptions.FirefoxRelayApiAccessToken;
- set
- {
- if (_usernameOptions.FirefoxRelayApiAccessToken != value)
- {
- _usernameOptions.FirefoxRelayApiAccessToken = value;
- TriggerPropertyChanged(nameof(FirefoxRelayApiAccessToken));
- SaveUsernameOptionsAsync(false).FireAndForget();
- }
- }
- }
-
- public bool ShowFirefoxRelayApiAccessToken
- {
- get
- {
- return _showFirefoxRelayApiAccessToken;
- }
- set => SetProperty(ref _showFirefoxRelayApiAccessToken, value);
- }
-
- public string SimpleLoginApiKey
- {
- get => _usernameOptions.SimpleLoginApiKey;
- set
- {
- if (_usernameOptions.SimpleLoginApiKey != value)
- {
- _usernameOptions.SimpleLoginApiKey = value;
- TriggerPropertyChanged(nameof(SimpleLoginApiKey));
- SaveUsernameOptionsAsync(false).FireAndForget();
- }
- }
- }
-
- public bool ShowSimpleLoginApiKey
- {
- get
- {
- return _showSimpleLoginApiKey;
- }
- set => SetProperty(ref _showSimpleLoginApiKey, value);
- }
-
- public string DuckDuckGoApiKey
- {
- get => _usernameOptions.DuckDuckGoApiKey;
- set
- {
- if (_usernameOptions.DuckDuckGoApiKey != value)
- {
- _usernameOptions.DuckDuckGoApiKey = value;
- TriggerPropertyChanged(nameof(DuckDuckGoApiKey));
- SaveUsernameOptionsAsync(false).FireAndForget();
- }
- }
- }
-
- public bool ShowDuckDuckGoApiKey
- {
- get
- {
- return _showDuckDuckGoApiKey;
- }
- set => SetProperty(ref _showDuckDuckGoApiKey, value);
- }
-
-
- public string FastmailApiKey
- {
- get => _usernameOptions.FastMailApiKey;
- set
- {
- if (_usernameOptions.FastMailApiKey != value)
- {
- _usernameOptions.FastMailApiKey = value;
- TriggerPropertyChanged(nameof(FastmailApiKey));
- SaveUsernameOptionsAsync(false).FireAndForget();
- }
- }
- }
-
- public bool ShowFastmailApiKey
- {
- get
- {
- return _showFastmailApiKey;
- }
- set => SetProperty(ref _showFastmailApiKey, value);
- }
-
public bool CapitalizeRandomWordUsername
{
get => _usernameOptions.CapitalizeRandomWordUsername;
@@ -807,12 +791,9 @@ namespace Bit.App.Pages
TriggerPropertyChanged(nameof(PlusAddressedEmailTypeSelected));
TriggerPropertyChanged(nameof(IncludeNumberRandomWordUsername));
TriggerPropertyChanged(nameof(CapitalizeRandomWordUsername));
- TriggerPropertyChanged(nameof(SimpleLoginApiKey));
- TriggerPropertyChanged(nameof(FirefoxRelayApiAccessToken));
+ TriggerPropertyChanged(nameof(ForwardedEmailApiSecret));
+ TriggerPropertyChanged(nameof(ForwardedEmailApiSecretLabel));
TriggerPropertyChanged(nameof(AnonAddyDomainName));
- TriggerPropertyChanged(nameof(AnonAddyApiAccessToken));
- TriggerPropertyChanged(nameof(DuckDuckGoApiKey));
- TriggerPropertyChanged(nameof(FastmailApiKey));
TriggerPropertyChanged(nameof(CatchAllEmailDomain));
TriggerPropertyChanged(nameof(ForwardedEmailServiceSelected));
TriggerPropertyChanged(nameof(UsernameTypeSelected));
@@ -845,15 +826,23 @@ namespace Bit.App.Pages
{
_logger.Value.Exception(ex);
+ string message = AppResources.GenericErrorMessage;
+
if (IsUsername && UsernameTypeSelected == UsernameType.ForwardedEmailAlias)
{
- await Device.InvokeOnMainThreadAsync(() => Page.DisplayAlert(
- AppResources.AnErrorHasOccurred, string.Format(AppResources.UnknownXErrorMessage, ForwardedEmailServiceSelected), AppResources.Ok));
- }
- else
- {
- await Device.InvokeOnMainThreadAsync(() => Page.DisplayAlert(AppResources.AnErrorHasOccurred, AppResources.GenericErrorMessage, AppResources.Ok));
+ if (ex is ForwardedEmailInvalidSecretException)
+ {
+ message = ForwardedEmailServiceSelected == ForwardedEmailServiceType.AnonAddy || ForwardedEmailServiceSelected == ForwardedEmailServiceType.FirefoxRelay
+ ? AppResources.InvalidAPIToken
+ : AppResources.InvalidAPIKey;
+ }
+ else
+ {
+ message = string.Format(AppResources.UnknownXErrorMessage, ForwardedEmailServiceSelected);
+ }
}
+
+ await Device.InvokeOnMainThreadAsync(() => Page.DisplayAlert(AppResources.AnErrorHasOccurred, message, AppResources.Ok));
}
private string GetUsernameTypeLabelDescription(UsernameType value)
@@ -870,27 +859,5 @@ namespace Bit.App.Pages
return string.Empty;
}
}
-
- private async Task ToggleForwardedEmailHiddenValueAsync()
- {
- switch (ForwardedEmailServiceSelected)
- {
- case ForwardedEmailServiceType.AnonAddy:
- ShowAnonAddyApiAccessToken = !ShowAnonAddyApiAccessToken;
- break;
- case ForwardedEmailServiceType.FirefoxRelay:
- ShowFirefoxRelayApiAccessToken = !ShowFirefoxRelayApiAccessToken;
- break;
- case ForwardedEmailServiceType.SimpleLogin:
- ShowSimpleLoginApiKey = !ShowSimpleLoginApiKey;
- break;
- case ForwardedEmailServiceType.DuckDuckGo:
- ShowDuckDuckGoApiKey = !ShowDuckDuckGoApiKey;
- break;
- case ForwardedEmailServiceType.Fastmail:
- ShowFastmailApiKey = !ShowFastmailApiKey;
- break;
- }
- }
}
}
diff --git a/src/App/Resources/AppResources.Designer.cs b/src/App/Resources/AppResources.Designer.cs
index f4bf3ff61..82bb07c83 100644
--- a/src/App/Resources/AppResources.Designer.cs
+++ b/src/App/Resources/AppResources.Designer.cs
@@ -3262,6 +3262,24 @@ namespace Bit.App.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Invalid API key.
+ ///
+ public static string InvalidAPIKey {
+ get {
+ return ResourceManager.GetString("InvalidAPIKey", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid API token.
+ ///
+ public static string InvalidAPIToken {
+ get {
+ return ResourceManager.GetString("InvalidAPIToken", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Invalid email address..
///
diff --git a/src/App/Resources/AppResources.resx b/src/App/Resources/AppResources.resx
index 8fa9d4375..9b10e05a3 100644
--- a/src/App/Resources/AppResources.resx
+++ b/src/App/Resources/AppResources.resx
@@ -2637,4 +2637,10 @@ Do you want to switch to this account?
Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
+
+ Invalid API key
+
+
+ Invalid API token
+
diff --git a/src/Core/Abstractions/IApiService.cs b/src/Core/Abstractions/IApiService.cs
index 0c2474439..b073b227c 100644
--- a/src/Core/Abstractions/IApiService.cs
+++ b/src/Core/Abstractions/IApiService.cs
@@ -1,8 +1,9 @@
using System;
using System.Collections.Generic;
+using System.Net;
using System.Net.Http;
+using System.Threading;
using System.Threading.Tasks;
-using Bit.Core.Enums;
using Bit.Core.Models.Domain;
using Bit.Core.Models.Request;
using Bit.Core.Models.Response;
@@ -48,6 +49,7 @@ namespace Bit.Core.Abstractions
Task PreValidateSso(string identifier);
Task SendAsync(HttpMethod method, string path,
TRequest body, bool authed, bool hasResponse, Action alterRequest, bool logoutOnUnauthorized = true);
+ Task SendAsync(HttpRequestMessage requestMessage, CancellationToken cancellationToken = default);
void SetUrls(EnvironmentUrls urls);
[Obsolete("Mar 25 2021: This method has been deprecated in favor of direct uploads. This method still exists for backward compatibility with old server versions.")]
Task PostCipherAttachmentLegacyAsync(string id, MultipartFormDataContent data);
@@ -89,9 +91,9 @@ namespace Bit.Core.Abstractions
Task GetAuthResponseAsync(string id, string accessCode);
Task PutAuthRequestAsync(string id, string key, string masterPasswordHash, string deviceIdentifier, bool requestApproved);
Task PostCreateRequestAsync(PasswordlessCreateLoginRequest passwordlessCreateLoginRequest);
- Task GetUsernameFromAsync(ForwardedEmailServiceType service, UsernameGeneratorConfig config);
Task GetKnownDeviceAsync(string email, string deviceIdentifier);
Task GetOrgDomainSsoDetailsAsync(string email);
Task GetConfigsAsync();
+ Task GetFastmailAccountIdAsync(string apiKey);
}
}
diff --git a/src/Core/Abstractions/ICryptoService.cs b/src/Core/Abstractions/ICryptoService.cs
index 60bbd3624..060cd9887 100644
--- a/src/Core/Abstractions/ICryptoService.cs
+++ b/src/Core/Abstractions/ICryptoService.cs
@@ -43,6 +43,7 @@ namespace Bit.Core.Abstractions
Task> MakeShareKeyAsync();
Task MakeSendKeyAsync(byte[] keyMaterial);
Task RandomNumberAsync(int min, int max);
+ Task RandomStringAsync(int length);
Task> RemakeEncKeyAsync(SymmetricCryptoKey key);
Task RsaEncryptAsync(byte[] data, byte[] publicKey = null);
Task RsaDecryptAsync(string encValue, byte[] privateKey = null);
diff --git a/src/Core/Core.csproj b/src/Core/Core.csproj
index 216e148d7..76c88095e 100644
--- a/src/Core/Core.csproj
+++ b/src/Core/Core.csproj
@@ -20,6 +20,7 @@
+
@@ -44,5 +45,6 @@
+
diff --git a/src/Core/Exceptions/ForwardedEmailInvalidSecretException.cs b/src/Core/Exceptions/ForwardedEmailInvalidSecretException.cs
new file mode 100644
index 000000000..2871b60d2
--- /dev/null
+++ b/src/Core/Exceptions/ForwardedEmailInvalidSecretException.cs
@@ -0,0 +1,11 @@
+using System;
+namespace Bit.Core.Exceptions
+{
+ public class ForwardedEmailInvalidSecretException : Exception
+ {
+ public ForwardedEmailInvalidSecretException(Exception innerEx)
+ : base("Invalid API Secret", innerEx)
+ {
+ }
+ }
+}
diff --git a/src/Core/Models/Domain/UsernameGenerationOptions.cs b/src/Core/Models/Domain/UsernameGenerationOptions.cs
index 44c48a6f3..deb98521d 100644
--- a/src/Core/Models/Domain/UsernameGenerationOptions.cs
+++ b/src/Core/Models/Domain/UsernameGenerationOptions.cs
@@ -1,4 +1,5 @@
using Bit.Core.Enums;
+using Bit.Core.Services.EmailForwarders;
namespace Bit.Core.Models.Domain
{
@@ -24,5 +25,33 @@ namespace Bit.Core.Models.Domain
public string AnonAddyApiAccessToken { get; set; }
public string AnonAddyDomainName { get; set; }
public string EmailWebsite { get; set; }
+
+ public ForwarderOptions GetForwarderOptions()
+ {
+ if (Type != UsernameType.ForwardedEmailAlias)
+ {
+ return null;
+ }
+
+ switch (ServiceType)
+ {
+ case ForwardedEmailServiceType.AnonAddy:
+ return new AnonAddyForwarderOptions
+ {
+ ApiKey = AnonAddyApiAccessToken,
+ DomainName = AnonAddyDomainName
+ };
+ case ForwardedEmailServiceType.DuckDuckGo:
+ return new ForwarderOptions { ApiKey = DuckDuckGoApiKey };
+ case ForwardedEmailServiceType.Fastmail:
+ return new ForwarderOptions { ApiKey = FastMailApiKey };
+ case ForwardedEmailServiceType.FirefoxRelay:
+ return new ForwarderOptions { ApiKey = FirefoxRelayApiAccessToken };
+ case ForwardedEmailServiceType.SimpleLogin:
+ return new ForwarderOptions { ApiKey = SimpleLoginApiKey };
+ default:
+ return null;
+ }
+ }
}
}
diff --git a/src/Core/Models/Domain/UsernameGeneratorConfig.cs b/src/Core/Models/Domain/UsernameGeneratorConfig.cs
deleted file mode 100644
index 53de60310..000000000
--- a/src/Core/Models/Domain/UsernameGeneratorConfig.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Bit.Core.Models.Domain
-{
- public class UsernameGeneratorConfig
- {
- public string ApiToken { get; set; }
- public string Domain { get; set; }
- public string Url { get; set; }
- }
-}
diff --git a/src/Core/Services/ApiService.cs b/src/Core/Services/ApiService.cs
index dde3b9505..6b2dbe48e 100644
--- a/src/Core/Services/ApiService.cs
+++ b/src/Core/Services/ApiService.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using Bit.Core.Abstractions;
using Bit.Core.Enums;
@@ -763,111 +764,29 @@ namespace Bit.Core.Services
}
}
- public async Task GetUsernameFromAsync(ForwardedEmailServiceType service, UsernameGeneratorConfig config)
+ public async Task SendAsync(HttpRequestMessage requestMessage, CancellationToken cancellationToken = default)
{
- using (var requestMessage = new HttpRequestMessage())
+ HttpResponseMessage response;
+ try
{
- requestMessage.Version = new Version(1, 0);
- requestMessage.Method = HttpMethod.Post;
- requestMessage.RequestUri = new Uri(config.Url);
- requestMessage.Headers.Add("Accept", "application/json");
-
- switch (service)
- {
- case ForwardedEmailServiceType.AnonAddy:
- requestMessage.Headers.Add("Authorization", $"Bearer {config.ApiToken}");
- requestMessage.Content = new FormUrlEncodedContent(new Dictionary
- {
- ["domain"] = config.Domain
- });
- break;
- case ForwardedEmailServiceType.FirefoxRelay:
- requestMessage.Headers.Add("Authorization", $"Token {config.ApiToken}");
- requestMessage.Content = new StringContent(JsonConvert.SerializeObject(
- new
- {
- enabled = true,
- description = "Generated by Bitwarden."
- }), Encoding.UTF8, "application/json");
- break;
- case ForwardedEmailServiceType.SimpleLogin:
- requestMessage.Headers.Add("Authentication", config.ApiToken);
- break;
- case ForwardedEmailServiceType.DuckDuckGo:
- requestMessage.Headers.Add("Authorization", $"Bearer {config.ApiToken}");
- break;
- case ForwardedEmailServiceType.Fastmail:
- requestMessage.Headers.Add("Authorization", $"Bearer {config.ApiToken}");
- requestMessage.Content = new StringContent(await CreateFastmailRequest(config.ApiToken),
- Encoding.UTF8, "application/json");
- break;
- }
-
- HttpResponseMessage response;
- try
- {
- response = await _httpClient.SendAsync(requestMessage);
- }
- catch (Exception e)
- {
- throw new ApiException(HandleWebError(e));
- }
- if (!response.IsSuccessStatusCode)
- {
- throw new ApiException(new ErrorResponse
- {
- StatusCode = response.StatusCode,
- Message = $"{service} error: {(int)response.StatusCode} {response.ReasonPhrase}."
- });
- }
- var responseJsonString = await response.Content.ReadAsStringAsync();
- var result = JObject.Parse(responseJsonString);
-
- switch (service)
- {
- case ForwardedEmailServiceType.AnonAddy:
- return result["data"]?["email"]?.ToString();
- case ForwardedEmailServiceType.FirefoxRelay:
- return result["full_address"]?.ToString();
- case ForwardedEmailServiceType.SimpleLogin:
- return result["alias"]?.ToString();
- case ForwardedEmailServiceType.DuckDuckGo:
- return $"{result["address"]?.ToString()}@duck.com";
- case ForwardedEmailServiceType.Fastmail:
- return HandleFastMailResponse(result);
- default:
- return string.Empty;
- }
+ response = await _httpClient.SendAsync(requestMessage, cancellationToken);
}
+ catch (Exception e)
+ {
+ throw new ApiException(HandleWebError(e));
+ }
+ if (!response.IsSuccessStatusCode)
+ {
+ throw new ApiException(new ErrorResponse
+ {
+ StatusCode = response.StatusCode,
+ Message = $"{requestMessage.RequestUri} error: {(int)response.StatusCode} {response.ReasonPhrase}."
+ });
+ }
+ return response;
}
- private string HandleFastMailResponse(JObject result)
- {
- if (result["methodResponses"] == null || !result["methodResponses"].HasValues ||
- !result["methodResponses"][0].HasValues)
- {
- throw new Exception("Fastmail error: could not parse response.");
- }
- if (result["methodResponses"][0][0].ToString() == "MaskedEmail/set")
- {
- if (result["methodResponses"][0][1]?["created"]?["new-masked-email"] != null)
- {
- return result["methodResponses"][0][1]?["created"]?["new-masked-email"]?["email"].ToString();
- }
- if (result["methodResponses"][0][1]?["notCreated"]?["new-masked-email"] != null)
- {
- throw new Exception("Fastmail error: " +
- result["methodResponses"][0][1]?["created"]?["new-masked-email"]?["description"].ToString());
- }
- }
- else if (result["methodResponses"][0][0].ToString() == "error")
- {
- throw new Exception("Fastmail error: " + result["methodResponses"][0][1]?["description"].ToString());
- }
- throw new Exception("Fastmail error: could not parse response.");
- }
-
- private async Task CreateFastmailRequest(string apiKey)
+ public async Task GetFastmailAccountIdAsync(string apiKey)
{
using (var httpclient = new HttpClient())
{
@@ -891,36 +810,7 @@ namespace Bit.Core.Services
});
}
var result = JObject.Parse(await response.Content.ReadAsStringAsync());
- var accountId = result["primaryAccounts"]?["https://www.fastmail.com/dev/maskedemail"]?.ToString();
- var requestJObj = new JObject
- {
- new JProperty("using",
- new JArray { "https://www.fastmail.com/dev/maskedemail", "urn:ietf:params:jmap:core" }),
- new JProperty("methodCalls",
- new JArray
- {
- new JArray
- {
- "MaskedEmail/set",
- new JObject
- {
- ["accountId"] = accountId,
- ["create"] = new JObject
- {
- ["new-masked-email"] = new JObject
- {
- ["state"] = "enabled",
- ["description"] = "",
- ["url"] = "",
- ["emailPrefix"] = ""
- }
- }
- },
- "0"
- }
- })
- };
- return requestJObj.ToString();
+ return result["primaryAccounts"]?["https://www.fastmail.com/dev/maskedemail"]?.ToString();
}
}
diff --git a/src/Core/Services/CryptoService.cs b/src/Core/Services/CryptoService.cs
index b8aaadb7d..bfa7c5b82 100644
--- a/src/Core/Services/CryptoService.cs
+++ b/src/Core/Services/CryptoService.cs
@@ -14,6 +14,8 @@ namespace Bit.Core.Services
{
public class CryptoService : ICryptoService
{
+ private const string RANDOM_STRING_CHARSET = "abcdefghijklmnopqrstuvwxyz1234567890";
+
private readonly IStateService _stateService;
private readonly ICryptoFunctionService _cryptoFunctionService;
@@ -633,6 +635,22 @@ namespace Bit.Core.Services
return (int)(min + (ui % diff));
}
+ ///
+ /// Makes random string with length based on the charset
+ ///
+ public async Task RandomStringAsync(int length)
+ {
+ var sb = new StringBuilder();
+
+ for (var i = 0; i < length; i++)
+ {
+ var randomCharIndex = await RandomNumberAsync(0, RANDOM_STRING_CHARSET.Length - 1);
+ sb.Append(RANDOM_STRING_CHARSET[randomCharIndex]);
+ }
+
+ return sb.ToString();
+ }
+
// Helpers
private async Task AesEncryptAsync(byte[] data, SymmetricCryptoKey key)
diff --git a/src/Core/Services/EmailForwarders/AnonAddyForwarder.cs b/src/Core/Services/EmailForwarders/AnonAddyForwarder.cs
new file mode 100644
index 000000000..834dd863d
--- /dev/null
+++ b/src/Core/Services/EmailForwarders/AnonAddyForwarder.cs
@@ -0,0 +1,42 @@
+using System.Collections.Generic;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Threading.Tasks;
+using Bit.Core.Abstractions;
+using Newtonsoft.Json.Linq;
+
+namespace Bit.Core.Services.EmailForwarders
+{
+ public class AnonAddyForwarderOptions : ForwarderOptions
+ {
+ public string DomainName { get; set; }
+ }
+
+ public class AnonAddyForwarder : BaseForwarder
+ {
+ protected override string RequestUri => "https://app.anonaddy.com/api/v1/aliases";
+
+ protected override bool CanGenerate(AnonAddyForwarderOptions options)
+ {
+ return !string.IsNullOrWhiteSpace(options.ApiKey) && !string.IsNullOrWhiteSpace(options.DomainName);
+ }
+
+ protected override void ConfigureHeaders(HttpRequestHeaders headers, AnonAddyForwarderOptions options)
+ {
+ headers.Add("Authorization", $"Bearer {options.ApiKey}");
+ }
+
+ protected override Task GetContentAsync(IApiService apiService, AnonAddyForwarderOptions options)
+ {
+ return Task.FromResult(new FormUrlEncodedContent(new Dictionary
+ {
+ ["domain"] = options.DomainName
+ }));
+ }
+
+ protected override string HandleResponse(JObject result)
+ {
+ return result["data"]?["email"]?.ToString();
+ }
+ }
+}
diff --git a/src/Core/Services/EmailForwarders/BaseForwarder.cs b/src/Core/Services/EmailForwarders/BaseForwarder.cs
new file mode 100644
index 000000000..b31393746
--- /dev/null
+++ b/src/Core/Services/EmailForwarders/BaseForwarder.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Threading.Tasks;
+using Bit.Core.Abstractions;
+using Bit.Core.Exceptions;
+using Newtonsoft.Json.Linq;
+
+namespace Bit.Core.Services.EmailForwarders
+{
+ public abstract class BaseForwarder
+ where T : ForwarderOptions
+ {
+ protected abstract string RequestUri { get; }
+
+ public async Task GenerateAsync(IApiService apiService, T options)
+ {
+ if (!CanGenerate(options))
+ {
+ return Constants.DefaultUsernameGenerated;
+ }
+
+ using (var requestMessage = new HttpRequestMessage())
+ {
+ requestMessage.Version = new Version(1, 0);
+ requestMessage.Method = HttpMethod.Post;
+ requestMessage.RequestUri = new Uri(RequestUri);
+ requestMessage.Headers.Add("Accept", "application/json");
+
+ ConfigureHeaders(requestMessage.Headers, options);
+ requestMessage.Content = await GetContentAsync(apiService, options);
+
+ try
+ {
+ var response = await apiService.SendAsync(requestMessage);
+
+ var responseJsonString = await response.Content.ReadAsStringAsync();
+
+ return HandleResponse(JObject.Parse(responseJsonString));
+ }
+ catch (ApiException ex)
+ {
+ if (IsRequestSecretInvalid(ex))
+ {
+ throw new ForwardedEmailInvalidSecretException(ex);
+ }
+
+ throw;
+ }
+ }
+ }
+
+ protected virtual bool CanGenerate(T options) => !string.IsNullOrWhiteSpace(options.ApiKey);
+
+ protected abstract void ConfigureHeaders(HttpRequestHeaders headers, T options);
+
+ protected abstract Task GetContentAsync(IApiService apiService, T options);
+
+ protected abstract string HandleResponse(JObject result);
+
+ protected virtual bool IsRequestSecretInvalid(ApiException ex) => ex.Error?.StatusCode == System.Net.HttpStatusCode.Unauthorized;
+ }
+}
diff --git a/src/Core/Services/EmailForwarders/DuckDuckGoForwarder.cs b/src/Core/Services/EmailForwarders/DuckDuckGoForwarder.cs
new file mode 100644
index 000000000..7e9579be5
--- /dev/null
+++ b/src/Core/Services/EmailForwarders/DuckDuckGoForwarder.cs
@@ -0,0 +1,25 @@
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Threading.Tasks;
+using Bit.Core.Abstractions;
+using Newtonsoft.Json.Linq;
+
+namespace Bit.Core.Services.EmailForwarders
+{
+ public class DuckDuckGoForwarder : BaseForwarder
+ {
+ protected override string RequestUri => "https://quack.duckduckgo.com/api/email/addresses";
+
+ protected override void ConfigureHeaders(HttpRequestHeaders headers, ForwarderOptions options)
+ {
+ headers.Add("Authorization", $"Bearer {options.ApiKey}");
+ }
+
+ protected override Task GetContentAsync(IApiService apiService, ForwarderOptions options) => Task.FromResult(null);
+
+ protected override string HandleResponse(JObject result)
+ {
+ return $"{result["address"]?.ToString()}@duck.com";
+ }
+ }
+}
diff --git a/src/Core/Services/EmailForwarders/FastmailForwarder.cs b/src/Core/Services/EmailForwarders/FastmailForwarder.cs
new file mode 100644
index 000000000..a47229861
--- /dev/null
+++ b/src/Core/Services/EmailForwarders/FastmailForwarder.cs
@@ -0,0 +1,98 @@
+using System;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+using Bit.Core.Abstractions;
+using Bit.Core.Exceptions;
+using Newtonsoft.Json.Linq;
+
+namespace Bit.Core.Services.EmailForwarders
+{
+ public class FastmailForwarder : BaseForwarder
+ {
+ protected override string RequestUri => "https://api.fastmail.com/jmap/api/";
+
+ protected override void ConfigureHeaders(HttpRequestHeaders headers, ForwarderOptions options)
+ {
+ headers.Add("Authorization", $"Bearer {options.ApiKey}");
+ }
+
+ protected override async Task GetContentAsync(IApiService apiService, ForwarderOptions options)
+ {
+ string accountId = null;
+ try
+ {
+ accountId = await apiService.GetFastmailAccountIdAsync(options.ApiKey);
+ }
+ catch (ApiException ex)
+ {
+ if (IsRequestSecretInvalid(ex))
+ {
+ throw new ForwardedEmailInvalidSecretException(ex);
+ }
+
+ throw;
+ }
+
+ var requestJObj = new JObject
+ {
+ new JProperty("using",
+ new JArray { "https://www.fastmail.com/dev/maskedemail", "urn:ietf:params:jmap:core" }),
+ new JProperty("methodCalls",
+ new JArray
+ {
+ new JArray
+ {
+ "MaskedEmail/set",
+ new JObject
+ {
+ ["accountId"] = accountId,
+ ["create"] = new JObject
+ {
+ ["new-masked-email"] = new JObject
+ {
+ ["state"] = "enabled",
+ ["description"] = "",
+ ["url"] = "",
+ ["emailPrefix"] = ""
+ }
+ }
+ },
+ "0"
+ }
+ })
+ };
+
+ return new StringContent(requestJObj.ToString(), Encoding.UTF8, "application/json");
+ }
+
+ protected override string HandleResponse(JObject result)
+ {
+ if (result["methodResponses"] == null || !result["methodResponses"].HasValues ||
+ !result["methodResponses"][0].HasValues)
+ {
+ throw new Exception("Fastmail error: could not parse response.");
+ }
+ if (result["methodResponses"][0][0].ToString() == "MaskedEmail/set")
+ {
+ if (result["methodResponses"][0][1]?["created"]?["new-masked-email"] != null)
+ {
+ return result["methodResponses"][0][1]?["created"]?["new-masked-email"]?["email"].ToString();
+ }
+ if (result["methodResponses"][0][1]?["notCreated"]?["new-masked-email"] != null)
+ {
+ throw new Exception("Fastmail error: " +
+ result["methodResponses"][0][1]?["created"]?["new-masked-email"]?["description"].ToString());
+ }
+ }
+ else if (result["methodResponses"][0][0].ToString() == "error")
+ {
+ throw new Exception("Fastmail error: " + result["methodResponses"][0][1]?["description"].ToString());
+ }
+ throw new Exception("Fastmail error: could not parse response.");
+ }
+
+ protected override bool IsRequestSecretInvalid(ApiException ex) => base.IsRequestSecretInvalid(ex) || ex.Error?.StatusCode == System.Net.HttpStatusCode.Forbidden;
+ }
+}
diff --git a/src/Core/Services/EmailForwarders/FirefoxRelayForwarder.cs b/src/Core/Services/EmailForwarders/FirefoxRelayForwarder.cs
new file mode 100644
index 000000000..0094808f6
--- /dev/null
+++ b/src/Core/Services/EmailForwarders/FirefoxRelayForwarder.cs
@@ -0,0 +1,36 @@
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+using Bit.Core.Abstractions;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace Bit.Core.Services.EmailForwarders
+{
+ public class FirefoxRelayForwarder : BaseForwarder
+ {
+ protected override string RequestUri => "https://relay.firefox.com/api/v1/relayaddresses/";
+
+ protected override void ConfigureHeaders(HttpRequestHeaders headers, ForwarderOptions options)
+ {
+ headers.Add("Authorization", $"Token {options.ApiKey}");
+ }
+
+ protected override Task GetContentAsync(IApiService apiService, ForwarderOptions options)
+ {
+ return Task.FromResult(new StringContent(
+ JsonConvert.SerializeObject(
+ new
+ {
+ enabled = true,
+ description = "Generated by Bitwarden."
+ }), Encoding.UTF8, "application/json"));
+ }
+
+ protected override string HandleResponse(JObject result)
+ {
+ return result["full_address"]?.ToString();
+ }
+ }
+}
diff --git a/src/Core/Services/EmailForwarders/ForwarderOptions.cs b/src/Core/Services/EmailForwarders/ForwarderOptions.cs
new file mode 100644
index 000000000..b640ebb39
--- /dev/null
+++ b/src/Core/Services/EmailForwarders/ForwarderOptions.cs
@@ -0,0 +1,7 @@
+namespace Bit.Core.Services.EmailForwarders
+{
+ public class ForwarderOptions
+ {
+ public string ApiKey { get; set; }
+ }
+}
diff --git a/src/Core/Services/EmailForwarders/SimpleLoginForwarder.cs b/src/Core/Services/EmailForwarders/SimpleLoginForwarder.cs
new file mode 100644
index 000000000..384e4adf2
--- /dev/null
+++ b/src/Core/Services/EmailForwarders/SimpleLoginForwarder.cs
@@ -0,0 +1,25 @@
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Threading.Tasks;
+using Bit.Core.Abstractions;
+using Newtonsoft.Json.Linq;
+
+namespace Bit.Core.Services.EmailForwarders
+{
+ public class SimpleLoginForwarder : BaseForwarder
+ {
+ protected override string RequestUri => "https://app.simplelogin.io/api/alias/random/new";
+
+ protected override void ConfigureHeaders(HttpRequestHeaders headers, ForwarderOptions options)
+ {
+ headers.Add("Authentication", options.ApiKey);
+ }
+
+ protected override Task GetContentAsync(IApiService apiService, ForwarderOptions options) => Task.FromResult(null);
+
+ protected override string HandleResponse(JObject result)
+ {
+ return result["alias"]?.ToString();
+ }
+ }
+}
diff --git a/src/Core/Services/UsernameGenerationService.cs b/src/Core/Services/UsernameGenerationService.cs
index a2f70224a..9ec9fa215 100644
--- a/src/Core/Services/UsernameGenerationService.cs
+++ b/src/Core/Services/UsernameGenerationService.cs
@@ -1,7 +1,9 @@
-using System.Threading.Tasks;
+using System.Text;
+using System.Threading.Tasks;
using Bit.Core.Abstractions;
using Bit.Core.Enums;
using Bit.Core.Models.Domain;
+using Bit.Core.Services.EmailForwarders;
using Bit.Core.Utilities;
namespace Bit.Core.Services
@@ -12,7 +14,7 @@ namespace Bit.Core.Services
private readonly ICryptoService _cryptoService;
private readonly IApiService _apiService;
private readonly IStateService _stateService;
- readonly LazyResolve _logger = new LazyResolve("logger");
+ readonly LazyResolve _logger = new LazyResolve();
private UsernameGenerationOptions _optionsCache;
public UsernameGenerationService(
@@ -104,7 +106,7 @@ namespace Bit.Core.Services
if (options.PlusAddressedEmailType == UsernameEmailType.Random)
{
- var randomString = await RandomStringAsync(8);
+ var randomString = await _cryptoService.RandomStringAsync(8);
return options.PlusAddressedEmail.Insert(atIndex, $"+{randomString}");
}
else
@@ -124,7 +126,7 @@ namespace Bit.Core.Services
if (options.CatchAllEmailType == UsernameEmailType.Random)
{
- var randomString = await RandomStringAsync(8);
+ var randomString = await _cryptoService.RandomStringAsync(8);
return string.Format(CATCH_ALL_EMAIL_DOMAIN_FORMAT, randomString, catchAllEmailDomain);
}
@@ -133,85 +135,34 @@ namespace Bit.Core.Services
private async Task GenerateForwardedEmailAliasAsync(UsernameGenerationOptions options)
{
+ if (options.ServiceType == ForwardedEmailServiceType.AnonAddy)
+ {
+ return await new AnonAddyForwarder()
+ .GenerateAsync(_apiService, (AnonAddyForwarderOptions)options.GetForwarderOptions());
+ }
+
+ BaseForwarder simpleForwarder = null;
+
switch (options.ServiceType)
{
- case ForwardedEmailServiceType.AnonAddy:
- if (string.IsNullOrWhiteSpace(options.AnonAddyApiAccessToken) || string.IsNullOrWhiteSpace(options.AnonAddyDomainName))
- {
- return Constants.DefaultUsernameGenerated;
- }
- return await _apiService.GetUsernameFromAsync(ForwardedEmailServiceType.AnonAddy,
- new UsernameGeneratorConfig()
- {
- ApiToken = options.AnonAddyApiAccessToken,
- Domain = options.AnonAddyDomainName,
- Url = "https://app.anonaddy.com/api/v1/aliases"
- });
-
case ForwardedEmailServiceType.FirefoxRelay:
- if (string.IsNullOrWhiteSpace(options.FirefoxRelayApiAccessToken))
- {
- return Constants.DefaultUsernameGenerated;
- }
- return await _apiService.GetUsernameFromAsync(ForwardedEmailServiceType.FirefoxRelay,
- new UsernameGeneratorConfig()
- {
- ApiToken = options.FirefoxRelayApiAccessToken,
- Url = "https://relay.firefox.com/api/v1/relayaddresses/"
- });
-
+ simpleForwarder = new FirefoxRelayForwarder();
+ break;
case ForwardedEmailServiceType.SimpleLogin:
- if (string.IsNullOrWhiteSpace(options.SimpleLoginApiKey))
- {
- return Constants.DefaultUsernameGenerated;
- }
- return await _apiService.GetUsernameFromAsync(ForwardedEmailServiceType.SimpleLogin,
- new UsernameGeneratorConfig()
- {
- ApiToken = options.SimpleLoginApiKey,
- Url = "https://app.simplelogin.io/api/alias/random/new"
- });
+ simpleForwarder = new SimpleLoginForwarder();
+ break;
case ForwardedEmailServiceType.DuckDuckGo:
- if (string.IsNullOrWhiteSpace(options.DuckDuckGoApiKey))
- {
- return Constants.DefaultUsernameGenerated;
- }
- return await _apiService.GetUsernameFromAsync(ForwardedEmailServiceType.DuckDuckGo,
- new UsernameGeneratorConfig()
- {
- ApiToken = options.DuckDuckGoApiKey,
- Url = "https://quack.duckduckgo.com/api/email/addresses"
- });
+ simpleForwarder = new DuckDuckGoForwarder();
+ break;
case ForwardedEmailServiceType.Fastmail:
- if (string.IsNullOrWhiteSpace(options.FastMailApiKey))
- {
- return Constants.DefaultUsernameGenerated;
- }
-
- return await _apiService.GetUsernameFromAsync(ForwardedEmailServiceType.Fastmail,
- new UsernameGeneratorConfig()
- {
- ApiToken = options.FastMailApiKey,
- Url = "https://api.fastmail.com/jmap/api/"
- });
+ simpleForwarder = new FastmailForwarder();
+ break;
default:
_logger.Value.Error($"Error UsernameGenerationService: ForwardedEmailServiceType {options.ServiceType} not implemented.");
return Constants.DefaultUsernameGenerated;
}
- }
- private async Task RandomStringAsync(int length)
- {
- var str = "";
- var charSet = "abcdefghijklmnopqrstuvwxyz1234567890";
-
- for (var i = 0; i < length; i++)
- {
- var randomCharIndex = await _cryptoService.RandomNumberAsync(0, charSet.Length - 1);
- str += charSet[randomCharIndex];
- }
-
- return str;
+ return await simpleForwarder.GenerateAsync(_apiService, options.GetForwarderOptions());
}
private string Capitalize(string str)
From 216c6abcf62e90d60a5a7efa2080652058d52306 Mon Sep 17 00:00:00 2001
From: ifernandezdiaz
Date: Wed, 28 Jun 2023 15:07:03 -0300
Subject: [PATCH 33/33] [PM-2737] Adding AutomationIDs for Send page elements
(#2583)
* Adding AutomationIDs for Send page elements
* Fixing some spaces
* Adding Matt's suggestion
* Adding Fede's suggestion
* Removing unnecesarry breaks
---
src/App/Pages/Send/SendAddEditPage.xaml | 89 +++++++++++++------
.../SendGroupingsPage/SendGroupingsPage.xaml | 12 ++-
.../SendGroupingsPageListItem.cs | 22 +++++
src/App/Pages/Send/SendsPage.xaml | 3 +-
4 files changed, 92 insertions(+), 34 deletions(-)
diff --git a/src/App/Pages/Send/SendAddEditPage.xaml b/src/App/Pages/Send/SendAddEditPage.xaml
index b77b5c4a4..a90ed8cd0 100644
--- a/src/App/Pages/Send/SendAddEditPage.xaml
+++ b/src/App/Pages/Send/SendAddEditPage.xaml
@@ -71,7 +71,8 @@
+ HorizontalTextAlignment="Center"
+ AutomationId="SendDisabledWarningMessageLabel" />
+ HorizontalTextAlignment="Center"
+ AutomationId="SendOptionsPolicyInEffectLabel" />
+ StyleClass="box-value"
+ AutomationId="SendNameEntry" />
@@ -152,12 +157,14 @@
Text="{Binding Send.File.FileName, Mode=OneWay}"
StyleClass="box-value"
VerticalTextAlignment="Center"
- HorizontalOptions="StartAndExpand" />
+ HorizontalOptions="StartAndExpand"
+ AutomationId="SendFileNameLabel" />
+ VerticalTextAlignment="Center"
+ AutomationId="SendFileSizeLabel" />
+ HorizontalTextAlignment="Center"
+ AutomationId="SendNoFileChosenLabel" />
+ HorizontalTextAlignment="Center"
+ AutomationId="SendCurrentFileNameLabel" />
+ Clicked="ChooseFile_Clicked"
+ AutomationId="SendChooseFileButton" />
@@ -235,7 +246,8 @@
IsToggled="{Binding Send.Text.Hidden}"
IsEnabled="{Binding SendEnabled}"
HorizontalOptions="End"
- Margin="10,0,0,0" />
+ Margin="10,0,0,0"
+ AutomationId="SendHideTextByDefaultToggle" />
+ Margin="10,0,0,0"
+ AutomationId="SendShareSendAfterSaveToggle" />
+ AutomationProperties.IsInAccessibleTree="False"
+ AutomationId="SendShowHideOptionsButton" />
+ AutomationProperties.IsInAccessibleTree="False"
+ AutomationId="SendOptionsDisplayed" />
+ AutomationProperties.IsInAccessibleTree="False"
+ AutomationId="SendOptionsHidden" />
+ AutomationProperties.Name="{u:I18n DeletionTime}"
+ AutomationId="SendDeletionOptionsPicker" />
@@ -308,14 +325,16 @@
IsEnabled="{Binding SendEnabled}"
AutomationProperties.IsInAccessibleTree="True"
AutomationProperties.Name="{u:I18n DeletionDate}"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationId="SendCustomDeletionDatePicker" />
+ Grid.Column="1"
+ AutomationId="SendCustomDeletionTimePicker" />
+ AutomationProperties.Name="{u:I18n ExpirationTime}"
+ AutomationId="SendExpirationOptionsPicker" />
@@ -349,7 +369,8 @@
IsEnabled="{Binding SendEnabled}"
AutomationProperties.IsInAccessibleTree="True"
AutomationProperties.Name="{u:I18n ExpirationDate}"
- Grid.Column="0" />
+ Grid.Column="0"
+ AutomationId="SendCustomExpirationDatePicker" />
+ Grid.Column="1"
+ AutomationId="SendCustomExpirationTimePicker" />
+ Clicked="ClearExpirationDate_Clicked"
+ AutomationId="SendClearExpirationDateButton" />
+ HorizontalOptions="FillAndExpand"
+ AutomationId="SendMaxAccessCountEntry" />
+ Margin="10,0,0,0"
+ AutomationId="SendMaxAccessCountStepper" />
+ VerticalTextAlignment="Center"
+ AutomationId="SendCurrentAccessCountLabel" />
+ HorizontalOptions="FillAndExpand"
+ AutomationId="SendNewPasswordEntry" />
+ AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
+ AutomationId="SendShowHidePasswordButton" />
+ effects:ScrollEnabledEffect.IsScrollEnabled="false"
+ AutomationId="SendNotesEntry">
@@ -492,7 +521,8 @@
IsToggled="{Binding Send.HideEmail}"
IsEnabled="{Binding DisableHideEmailControl, Converter={StaticResource inverseBool}}"
HorizontalOptions="End"
- Margin="10,0,0,0" />
+ Margin="10,0,0,0"
+ AutomationId="SendHideEmailSwitch" />
+ Margin="10,0,0,0"
+ AutomationId="SendDeactivateSwitch" />
diff --git a/src/App/Pages/Send/SendGroupingsPage/SendGroupingsPage.xaml b/src/App/Pages/Send/SendGroupingsPage/SendGroupingsPage.xaml
index af2eb475d..e53e8cdeb 100644
--- a/src/App/Pages/Send/SendGroupingsPage/SendGroupingsPage.xaml
+++ b/src/App/Pages/Send/SendGroupingsPage/SendGroupingsPage.xaml
@@ -44,13 +44,15 @@
+ ShowOptions="{Binding BindingContext.SendEnabled, Source={x:Reference _page}}"
+ AutomationId="SendCell" />
+ StyleClass="list-row, list-row-platform"
+ AutomationId="{Binding AutomationId}">
+ StyleClass="list-title"
+ AutomationId="SendFilterNameLabel" />
+ StyleClass="list-sub"
+ AutomationId="SendFilterCountLabel" />
diff --git a/src/App/Pages/Send/SendGroupingsPage/SendGroupingsPageListItem.cs b/src/App/Pages/Send/SendGroupingsPage/SendGroupingsPageListItem.cs
index a89ebf18d..81a65a2be 100644
--- a/src/App/Pages/Send/SendGroupingsPage/SendGroupingsPageListItem.cs
+++ b/src/App/Pages/Send/SendGroupingsPage/SendGroupingsPageListItem.cs
@@ -66,5 +66,27 @@ namespace Bit.App.Pages
return _icon;
}
}
+
+ public string AutomationId
+ {
+ get
+ {
+ if (_name != null)
+ {
+ return "SendItem";
+ }
+ if (Type != null)
+ {
+ switch (Type.Value)
+ {
+ case SendType.Text:
+ return "SendTextFilter";
+ case SendType.File:
+ return "SendFileFilter";
+ }
+ }
+ return null;
+ }
+ }
}
}
diff --git a/src/App/Pages/Send/SendsPage.xaml b/src/App/Pages/Send/SendsPage.xaml
index b2194eb31..e4ceabf13 100644
--- a/src/App/Pages/Send/SendsPage.xaml
+++ b/src/App/Pages/Send/SendsPage.xaml
@@ -59,7 +59,8 @@
Margin="20, 0"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
- HorizontalTextAlignment="Center" />
+ HorizontalTextAlignment="Center"
+ AutomationId="NoSendDisplayedLabel" />