From 620d421a4bba1aed0f0b59e54273b3faaa9f41b2 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Fri, 25 Nov 2016 16:32:13 -0500 Subject: [PATCH] i18n resource strings for tools pages --- .../Pages/Tools/ToolsAutofillServicePage.cs | 9 +- src/App/Pages/Tools/ToolsExtensionPage.cs | 25 +- src/App/Pages/Tools/ToolsPage.cs | 23 +- .../Pages/Tools/ToolsPasswordGeneratorPage.cs | 17 +- .../ToolsPasswordGeneratorSettingsPage.cs | 8 +- src/App/Resources/AppResources.Designer.cs | 315 ++++++++++++++++++ src/App/Resources/AppResources.resx | 108 ++++++ 7 files changed, 464 insertions(+), 41 deletions(-) diff --git a/src/App/Pages/Tools/ToolsAutofillServicePage.cs b/src/App/Pages/Tools/ToolsAutofillServicePage.cs index 6f7523141..c24854e63 100644 --- a/src/App/Pages/Tools/ToolsAutofillServicePage.cs +++ b/src/App/Pages/Tools/ToolsAutofillServicePage.cs @@ -3,6 +3,7 @@ using Bit.App.Controls; using Xamarin.Forms; using XLabs.Ioc; using Bit.App.Abstractions; +using Bit.App.Resources; namespace Bit.App.Pages { @@ -21,7 +22,7 @@ namespace Bit.App.Pages { var serviceLabel = new Label { - Text = "Use the bitwarden accessibility service to auto-fill your logins across apps and the web.", + Text = AppResources.AutofillDescription, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.Center, HorizontalTextAlignment = TextAlignment.Center, @@ -31,7 +32,7 @@ namespace Bit.App.Pages var comingSoonLabel = new Label { - Text = "Coming Soon!", + Text = AppResources.ComingSoon, VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.Center, HorizontalTextAlignment = TextAlignment.Center, @@ -42,7 +43,7 @@ namespace Bit.App.Pages var progressButton = new ExtendedButton { - Text = "See Development Progress", + Text = AppResources.SeeDevProgress, Command = new Command(() => { _googleAnalyticsService.TrackAppEvent("SeeAutofillProgress"); @@ -63,7 +64,7 @@ namespace Bit.App.Pages VerticalOptions = LayoutOptions.FillAndExpand }; - Title = "Auto-fill Service"; + Title = AppResources.AutofillService; Content = new ScrollView { Content = stackLayout }; } } diff --git a/src/App/Pages/Tools/ToolsExtensionPage.cs b/src/App/Pages/Tools/ToolsExtensionPage.cs index f57817887..fcecaab26 100644 --- a/src/App/Pages/Tools/ToolsExtensionPage.cs +++ b/src/App/Pages/Tools/ToolsExtensionPage.cs @@ -7,6 +7,7 @@ using Plugin.Settings.Abstractions; using Xamarin.Forms; using XLabs.Ioc; using Bit.App.Abstractions; +using Bit.App.Resources; namespace Bit.App.Pages { @@ -34,7 +35,7 @@ namespace Bit.App.Pages var notStartedLabel = new Label { - Text = "Get instant access to your passwords!", + Text = AppResources.ExtensionInstantAccess, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.Center, HorizontalTextAlignment = TextAlignment.Center, @@ -44,7 +45,7 @@ namespace Bit.App.Pages var notStartedSublabel = new Label { - Text = "To turn on bitwarden in Safari and other apps, tap the \"more\" icon on the bottom row of the menu.", + Text = AppResources.ExtensionTurnOn, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.Center, HorizontalTextAlignment = TextAlignment.Center, @@ -61,7 +62,7 @@ namespace Bit.App.Pages var notStartedButton = new ExtendedButton { - Text = "Enable App Extension", + Text = AppResources.ExtensionEnable, Command = new Command(() => ShowExtension("NotStartedEnable")), VerticalOptions = LayoutOptions.End, HorizontalOptions = LayoutOptions.Fill, @@ -83,7 +84,7 @@ namespace Bit.App.Pages var notActivatedLabel = new Label { - Text = "Almost done!", + Text = AppResources.ExtensionAlmostDone, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.Center, HorizontalTextAlignment = TextAlignment.Center, @@ -93,7 +94,7 @@ namespace Bit.App.Pages var notActivatedSublabel = new Label { - Text = "Tap the bitwarden icon in the menu to launch the extension.", + Text = AppResources.ExtensionTapIcon, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.Center, HorizontalTextAlignment = TextAlignment.Center, @@ -110,7 +111,7 @@ namespace Bit.App.Pages var notActivatedButton = new ExtendedButton { - Text = "Enable App Extension", + Text = AppResources.ExtensionEnable, Command = new Command(() => ShowExtension("NotActivatedEnable")), VerticalOptions = LayoutOptions.End, HorizontalOptions = LayoutOptions.Fill, @@ -132,7 +133,7 @@ namespace Bit.App.Pages var activatedLabel = new Label { - Text = "You're ready to log in!", + Text = AppResources.ExtensionReady, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.Center, HorizontalTextAlignment = TextAlignment.Center, @@ -142,7 +143,7 @@ namespace Bit.App.Pages var activatedSublabel = new Label { - Text = "In Safari, find bitwarden using the share icon (hint: scroll to the right on the bottom row of the menu).", + Text = AppResources.ExtensionInSafari, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.Center, HorizontalTextAlignment = TextAlignment.Center, @@ -160,7 +161,7 @@ namespace Bit.App.Pages var activatedButton = new ExtendedButton { - Text = "See Supported Apps", + Text = AppResources.ExtensionSeeApps, Command = new Command(() => { _googleAnalyticsService.TrackAppEvent("SeeSupportedApps"); @@ -173,7 +174,7 @@ namespace Bit.App.Pages var activatedButtonReenable = new ExtendedButton { - Text = "Re-enable App Extension", + Text = AppResources.ExntesionReenable, Command = new Command(() => ShowExtension("Re-enable")), VerticalOptions = LayoutOptions.End, HorizontalOptions = LayoutOptions.Fill, @@ -199,10 +200,10 @@ namespace Bit.App.Pages if(Device.OS == TargetPlatform.iOS) { - ToolbarItems.Add(new DismissModalToolBarItem(this, "Close")); + ToolbarItems.Add(new DismissModalToolBarItem(this, AppResources.Close)); } - Title = "App Extension"; + Title = AppResources.AppExtension; Content = new ScrollView { Content = stackLayout }; BindingContext = Model; } diff --git a/src/App/Pages/Tools/ToolsPage.cs b/src/App/Pages/Tools/ToolsPage.cs index 96154f62b..33bf11848 100644 --- a/src/App/Pages/Tools/ToolsPage.cs +++ b/src/App/Pages/Tools/ToolsPage.cs @@ -24,22 +24,20 @@ namespace Bit.App.Pages public void Init() { - var generatorCell = new ToolsViewCell("Password Generator", - "Automatically generate strong, unique passwords for your logins.", "refresh"); + var generatorCell = new ToolsViewCell(AppResources.PasswordGenerator, AppResources.PasswordGeneratorDescription, + "refresh"); generatorCell.Tapped += GeneratorCell_Tapped; - var webCell = new ToolsViewCell("bitwarden Web Vault", - "Manage your logins from any web browser with the bitwarden web vault.", "globe"); + var webCell = new ToolsViewCell(AppResources.WebVault, AppResources.WebVaultDescription, "globe"); webCell.Tapped += WebCell_Tapped; - var importCell = new ToolsViewCell("Import Logins", - "Quickly bulk import your logins from other password management apps.", "cloudup"); + var importCell = new ToolsViewCell(AppResources.ImportLogins, AppResources.ImportLoginsDescription, "cloudup"); importCell.Tapped += ImportCell_Tapped; var section = new TableSection { generatorCell }; if(Device.OS == TargetPlatform.iOS) { - var extensionCell = new ToolsViewCell("bitwarden App Extension", - "Use bitwarden in Safari and other apps to auto-fill your logins.", "upload"); + var extensionCell = new ToolsViewCell(AppResources.BitwardenAppExtension, + AppResources.BitwardenAppExtensionDescription, "upload"); extensionCell.Tapped += (object sender, EventArgs e) => { Navigation.PushModalAsync(new ExtendedNavigationPage(new ToolsExtensionPage())); @@ -48,8 +46,8 @@ namespace Bit.App.Pages } else { - var autofillServiceCell = new ToolsViewCell("bitwarden Auto-fill Service", - "Use the bitwarden accessibility service to auto-fill your logins.", "upload"); + var autofillServiceCell = new ToolsViewCell(AppResources.BitwardenAutofillService, + AppResources.BitwardenAutofillServiceDescription, "upload"); autofillServiceCell.Tapped += (object sender, EventArgs e) => { Navigation.PushAsync(new ToolsAutofillServicePage()); @@ -94,9 +92,8 @@ namespace Bit.App.Pages private async void ImportCell_Tapped(object sender, EventArgs e) { - if(!await _userDialogs.ConfirmAsync( - "You can bulk import logins from the bitwarden.com web vault. Do you want to visit the website now?", - null, AppResources.Yes, AppResources.Cancel)) + if(!await _userDialogs.ConfirmAsync(AppResources.ImportLoginsConfirmation, null, AppResources.Yes, + AppResources.Cancel)) { return; } diff --git a/src/App/Pages/Tools/ToolsPasswordGeneratorPage.cs b/src/App/Pages/Tools/ToolsPasswordGeneratorPage.cs index 01491901c..9ada40a8a 100644 --- a/src/App/Pages/Tools/ToolsPasswordGeneratorPage.cs +++ b/src/App/Pages/Tools/ToolsPasswordGeneratorPage.cs @@ -53,13 +53,13 @@ namespace Bit.App.Pages Password.SetBinding(Label.TextProperty, m => m.Password); SliderCell = new SliderViewCell(this, _passwordGenerationService, _settings); - var settingsCell = new ExtendedTextCell { Text = "More Settings", ShowDisclousure = true }; + var settingsCell = new ExtendedTextCell { Text = AppResources.MoreSettings, ShowDisclousure = true }; settingsCell.Tapped += SettingsCell_Tapped; var buttonColor = Color.FromHex("3c8dbc"); - var regenerateCell = new ExtendedTextCell { Text = "Regenerate Password", TextColor = buttonColor }; + var regenerateCell = new ExtendedTextCell { Text = AppResources.RegeneratePassword, TextColor = buttonColor }; regenerateCell.Tapped += RegenerateCell_Tapped; ; - var copyCell = new ExtendedTextCell { Text = "Copy Password", TextColor = buttonColor }; + var copyCell = new ExtendedTextCell { Text = AppResources.CopyPassword, TextColor = buttonColor }; copyCell.Tapped += CopyCell_Tapped; var table = new ExtendedTableView @@ -76,7 +76,7 @@ namespace Bit.App.Pages regenerateCell, copyCell }, - new TableSection("Options") + new TableSection(AppResources.Options) { SliderCell, settingsCell @@ -88,7 +88,8 @@ namespace Bit.App.Pages { table.RowHeight = -1; table.EstimatedRowHeight = 44; - ToolbarItems.Add(new DismissModalToolBarItem(this, _passwordValueAction == null ? "Close" : "Cancel")); + ToolbarItems.Add(new DismissModalToolBarItem(this, + _passwordValueAction == null ? AppResources.Close : AppResources.Cancel)); } var stackLayout = new StackLayout @@ -108,7 +109,7 @@ namespace Bit.App.Pages if(_passwordValueAction != null) { - var selectToolBarItem = new ToolbarItem("Select", null, async () => + var selectToolBarItem = new ToolbarItem(AppResources.Select, null, async () => { _googleAnalyticsService.TrackAppEvent("SelectedGeneratedPassword"); _passwordValueAction(Password.Text); @@ -118,7 +119,7 @@ namespace Bit.App.Pages ToolbarItems.Add(selectToolBarItem); } - Title = "Generate Password"; + Title = AppResources.GeneratePassword; Content = scrollView; BindingContext = Model; } @@ -181,7 +182,7 @@ namespace Bit.App.Pages var label = new Label { FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)), - Text = "Length", + Text = AppResources.Length, HorizontalOptions = LayoutOptions.Start, VerticalOptions = LayoutOptions.CenterAndExpand }; diff --git a/src/App/Pages/Tools/ToolsPasswordGeneratorSettingsPage.cs b/src/App/Pages/Tools/ToolsPasswordGeneratorSettingsPage.cs index 50d9729b0..392585b32 100644 --- a/src/App/Pages/Tools/ToolsPasswordGeneratorSettingsPage.cs +++ b/src/App/Pages/Tools/ToolsPasswordGeneratorSettingsPage.cs @@ -64,14 +64,14 @@ namespace Bit.App.Pages AvoidAmbiguousCell = new ExtendedSwitchCell { - Text = "Avoid Ambiguous Characters", + Text = AppResources.AvoidAmbiguousCharacters, On = !_settings.GetValueOrDefault(Constants.PasswordGeneratorAmbiguous, false) }; AvoidAmbiguousCell.OnChanged += AvoidAmbiguousCell_OnChanged; ; - NumbersMinCell = new StepperCell("Minimum Numbers", + NumbersMinCell = new StepperCell(AppResources.MinNumbers, _settings.GetValueOrDefault(Constants.PasswordGeneratorMinNumbers, 1), 0, 5, 1); - SpecialMinCell = new StepperCell("Minimum Special", + SpecialMinCell = new StepperCell(AppResources.MinSpecial, _settings.GetValueOrDefault(Constants.PasswordGeneratorMinSpecial, 1), 0, 5, 1); var table = new ExtendedTableView @@ -107,7 +107,7 @@ namespace Bit.App.Pages table.EstimatedRowHeight = 44; } - Title = "Settings"; + Title = AppResources.Settings; Content = table; } diff --git a/src/App/Resources/AppResources.Designer.cs b/src/App/Resources/AppResources.Designer.cs index 082140ba8..d482cfc16 100644 --- a/src/App/Resources/AppResources.Designer.cs +++ b/src/App/Resources/AppResources.Designer.cs @@ -115,6 +115,42 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to App Extension. + /// + public static string AppExtension { + get { + return ResourceManager.GetString("AppExtension", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Use the bitwarden accessibility service to auto-fill your logins across apps and the web.. + /// + public static string AutofillDescription { + get { + return ResourceManager.GetString("AutofillDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Auto-fill Service. + /// + public static string AutofillService { + get { + return ResourceManager.GetString("AutofillService", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Avoid Ambiguous Characters. + /// + public static string AvoidAmbiguousCharacters { + get { + return ResourceManager.GetString("AvoidAmbiguousCharacters", resourceCulture); + } + } + /// /// Looks up a localized string similar to Back. /// @@ -133,6 +169,42 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to bitwarden App Extension. + /// + public static string BitwardenAppExtension { + get { + return ResourceManager.GetString("BitwardenAppExtension", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Use bitwarden in Safari and other apps to auto-fill your logins.. + /// + public static string BitwardenAppExtensionDescription { + get { + return ResourceManager.GetString("BitwardenAppExtensionDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to bitwarden Auto-fill Service. + /// + public static string BitwardenAutofillService { + get { + return ResourceManager.GetString("BitwardenAutofillService", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Use the bitwarden accessibility service to auto-fill your logins.. + /// + public static string BitwardenAutofillServiceDescription { + get { + return ResourceManager.GetString("BitwardenAutofillServiceDescription", resourceCulture); + } + } + /// /// Looks up a localized string similar to Cancel. /// @@ -178,6 +250,24 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to Close. + /// + public static string Close { + get { + return ResourceManager.GetString("Close", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Coming Soon!. + /// + public static string ComingSoon { + get { + return ResourceManager.GetString("ComingSoon", resourceCulture); + } + } + /// /// Looks up a localized string similar to Copy. /// @@ -313,6 +403,87 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to Re-enable App Extension. + /// + public static string ExntesionReenable { + get { + return ResourceManager.GetString("ExntesionReenable", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Almost done!. + /// + public static string ExtensionAlmostDone { + get { + return ResourceManager.GetString("ExtensionAlmostDone", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Enable App Extension. + /// + public static string ExtensionEnable { + get { + return ResourceManager.GetString("ExtensionEnable", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to In Safari, find bitwarden using the share icon (hint: scroll to the right on the bottom row of the menu).. + /// + public static string ExtensionInSafari { + get { + return ResourceManager.GetString("ExtensionInSafari", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Get instant access to your passwords!. + /// + public static string ExtensionInstantAccess { + get { + return ResourceManager.GetString("ExtensionInstantAccess", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to You're ready to log in!. + /// + public static string ExtensionReady { + get { + return ResourceManager.GetString("ExtensionReady", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to See Supported Apps. + /// + public static string ExtensionSeeApps { + get { + return ResourceManager.GetString("ExtensionSeeApps", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tap the bitwarden icon in the menu to launch the extension.. + /// + public static string ExtensionTapIcon { + get { + return ResourceManager.GetString("ExtensionTapIcon", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to To turn on bitwarden in Safari and other apps, tap the "more" icon on the bottom row of the menu.. + /// + public static string ExtensionTurnOn { + get { + return ResourceManager.GetString("ExtensionTurnOn", resourceCulture); + } + } + /// /// Looks up a localized string similar to Favorites. /// @@ -412,6 +583,15 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to Generate Password. + /// + public static string GeneratePassword { + get { + return ResourceManager.GetString("GeneratePassword", resourceCulture); + } + } + /// /// Looks up a localized string similar to Go To Website. /// @@ -439,6 +619,33 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to Import Logins. + /// + public static string ImportLogins { + get { + return ResourceManager.GetString("ImportLogins", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to You can bulk import logins from the bitwarden.com web vault. Do you want to visit the website now?. + /// + public static string ImportLoginsConfirmation { + get { + return ResourceManager.GetString("ImportLoginsConfirmation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Quickly bulk import your logins from other password management apps.. + /// + public static string ImportLoginsDescription { + get { + return ResourceManager.GetString("ImportLoginsDescription", resourceCulture); + } + } + /// /// Looks up a localized string similar to Please connect to the internet before continuing.. /// @@ -493,6 +700,15 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to Length. + /// + public static string Length { + get { + return ResourceManager.GetString("Length", resourceCulture); + } + } + /// /// Looks up a localized string similar to Lock. /// @@ -610,6 +826,24 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to Minimum Numbers. + /// + public static string MinNumbers { + get { + return ResourceManager.GetString("MinNumbers", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Minimum Special. + /// + public static string MinSpecial { + get { + return ResourceManager.GetString("MinSpecial", resourceCulture); + } + } + /// /// Looks up a localized string similar to More. /// @@ -619,6 +853,15 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to More Settings. + /// + public static string MoreSettings { + get { + return ResourceManager.GetString("MoreSettings", resourceCulture); + } + } + /// /// Looks up a localized string similar to My Vault. /// @@ -673,6 +916,15 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to Options. + /// + public static string Options { + get { + return ResourceManager.GetString("Options", resourceCulture); + } + } + /// /// Looks up a localized string similar to Other. /// @@ -691,6 +943,24 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to Password Generator. + /// + public static string PasswordGenerator { + get { + return ResourceManager.GetString("PasswordGenerator", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Automatically generate strong, unique passwords for your logins.. + /// + public static string PasswordGeneratorDescription { + get { + return ResourceManager.GetString("PasswordGeneratorDescription", resourceCulture); + } + } + /// /// Looks up a localized string similar to Rate the App. /// @@ -718,6 +988,15 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to Regenerate Password. + /// + public static string RegeneratePassword { + get { + return ResourceManager.GetString("RegeneratePassword", resourceCulture); + } + } + /// /// Looks up a localized string similar to Save. /// @@ -745,6 +1024,24 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to See Development Progress. + /// + public static string SeeDevProgress { + get { + return ResourceManager.GetString("SeeDevProgress", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Select. + /// + public static string Select { + get { + return ResourceManager.GetString("Select", resourceCulture); + } + } + /// /// Looks up a localized string similar to Set PIN. /// @@ -1033,6 +1330,24 @@ namespace Bit.App.Resources { } } + /// + /// Looks up a localized string similar to bitwarden Web Vault. + /// + public static string WebVault { + get { + return ResourceManager.GetString("WebVault", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Manage your logins from any web browser with the bitwarden web vault.. + /// + public static string WebVaultDescription { + get { + return ResourceManager.GetString("WebVaultDescription", resourceCulture); + } + } + /// /// Looks up a localized string similar to Yes. /// diff --git a/src/App/Resources/AppResources.resx b/src/App/Resources/AppResources.resx index 7053c97d2..fcf9c5a5d 100644 --- a/src/App/Resources/AppResources.resx +++ b/src/App/Resources/AppResources.resx @@ -394,6 +394,30 @@ Account + + App Extension + + + Use the bitwarden accessibility service to auto-fill your logins across apps and the web. + + + Auto-fill Service + + + Avoid Ambiguous Characters + + + bitwarden App Extension + + + 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. + Change Email @@ -406,15 +430,64 @@ You can change your master password on the bitwarden.com web vault. Do you want to visit the website now? + + Close + + + Coming Soon! + Current Session + + Re-enable App Extension + + + Almost done! + + + Enable App Extension + + + 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 + + + Get instant access to your passwords! + + + You're ready to log in! + + + See Supported Apps + + + 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. + Fingerprint + + Generate Password + + + Import Logins + + + You can bulk import logins from the bitwarden.com web vault. Do you want to visit the website now? + + + Quickly bulk import your logins from other password management apps. + Last Sync: + + Length + Lock @@ -439,12 +512,32 @@ Manage + + Minimum Numbers + Minimum numeric characters for password generator settings + + + Minimum Special + Minimum special characters for password generator settings + + + More Settings + Never + + Options + Other + + Password Generator + + + Automatically generate strong, unique passwords for your logins. + Rate the App @@ -454,9 +547,18 @@ App Store ratings are reset with every new version of bitwarden. Please consider helping us out with a good review! + + Regenerate Password + Security + + See Development Progress + + + Select + Set PIN @@ -492,4 +594,10 @@ Unlock with PIN Code + + bitwarden Web Vault + + + Manage your logins from any web browser with the bitwarden web vault. + \ No newline at end of file