1
0
mirror of https://github.com/bitwarden/mobile.git synced 2024-11-23 11:45:38 +01:00

i18n resource strings for lock and settings pages

This commit is contained in:
Kyle Spearrin 2016-11-25 13:22:11 -05:00
parent c0a532a0fe
commit 071ec61683
14 changed files with 838 additions and 89 deletions

View File

@ -41,7 +41,7 @@ namespace Bit.App.Pages
var fingerprintButton = new ExtendedButton var fingerprintButton = new ExtendedButton
{ {
Text = "Use Fingerprint to Unlock", Text = AppResources.UseFingerprintToUnlock,
Command = new Command(async () => await CheckFingerprintAsync()), Command = new Command(async () => await CheckFingerprintAsync()),
VerticalOptions = LayoutOptions.EndAndExpand, VerticalOptions = LayoutOptions.EndAndExpand,
Style = (Style)Application.Current.Resources["btn-primary"] Style = (Style)Application.Current.Resources["btn-primary"]
@ -64,7 +64,7 @@ namespace Bit.App.Pages
Children = { fingerprintIcon, fingerprintButton, logoutButton } Children = { fingerprintIcon, fingerprintButton, logoutButton }
}; };
Title = "Verify Fingerprint"; Title = AppResources.VerifyFingerprint;
Content = stackLayout; Content = stackLayout;
} }
@ -85,7 +85,7 @@ namespace Bit.App.Pages
public async Task LogoutAsync() public async Task LogoutAsync()
{ {
if(!await _userDialogs.ConfirmAsync("Are you sure you want to log out?", null, AppResources.Yes, AppResources.Cancel)) if(!await _userDialogs.ConfirmAsync(AppResources.LogoutConfirmation, null, AppResources.Yes, AppResources.Cancel))
{ {
return; return;
} }
@ -95,7 +95,7 @@ namespace Bit.App.Pages
public async Task CheckFingerprintAsync() public async Task CheckFingerprintAsync()
{ {
var result = await _fingerprint.AuthenticateAsync("Use your fingerprint to verify."); var result = await _fingerprint.AuthenticateAsync(AppResources.FingerprintDirection);
if(result.Authenticated) if(result.Authenticated)
{ {
_settings.AddOrUpdateValue(Constants.Locked, false); _settings.AddOrUpdateValue(Constants.Locked, false);

View File

@ -85,13 +85,13 @@ namespace Bit.App.Pages
table.EstimatedRowHeight = 70; table.EstimatedRowHeight = 70;
} }
var loginToolbarItem = new ToolbarItem("Submit", null, async () => var loginToolbarItem = new ToolbarItem(AppResources.Submit, null, async () =>
{ {
await CheckPasswordAsync(); await CheckPasswordAsync();
}, ToolbarItemOrder.Default, 0); }, ToolbarItemOrder.Default, 0);
ToolbarItems.Add(loginToolbarItem); ToolbarItems.Add(loginToolbarItem);
Title = "Verify Master Password"; Title = AppResources.VerifyMasterPassword;
Content = scrollView; Content = scrollView;
} }
@ -129,7 +129,7 @@ namespace Bit.App.Pages
{ {
// TODO: keep track of invalid attempts and logout? // TODO: keep track of invalid attempts and logout?
_userDialogs.Alert("Invalid Master Password. Try again."); _userDialogs.Alert(AppResources.InvalidMasterPassword);
PasswordCell.Entry.Text = string.Empty; PasswordCell.Entry.Text = string.Empty;
PasswordCell.Entry.Focus(); PasswordCell.Entry.Focus();
} }
@ -137,7 +137,7 @@ namespace Bit.App.Pages
private async Task LogoutAsync() private async Task LogoutAsync()
{ {
if(!await _userDialogs.ConfirmAsync("Are you sure you want to log out?", null, AppResources.Yes, AppResources.Cancel)) if(!await _userDialogs.ConfirmAsync(AppResources.LogoutConfirmation, null, AppResources.Yes, AppResources.Cancel))
{ {
return; return;
} }

View File

@ -34,7 +34,7 @@ namespace Bit.App.Pages
{ {
var instructionLabel = new Label var instructionLabel = new Label
{ {
Text = "Enter your PIN code.", Text = AppResources.EnterPIN,
LineBreakMode = LineBreakMode.WordWrap, LineBreakMode = LineBreakMode.WordWrap,
FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Label)), FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Label)),
HorizontalTextAlignment = TextAlignment.Center, HorizontalTextAlignment = TextAlignment.Center,
@ -68,7 +68,7 @@ namespace Bit.App.Pages
PinControl.Label.GestureRecognizers.Add(tgr); PinControl.Label.GestureRecognizers.Add(tgr);
instructionLabel.GestureRecognizers.Add(tgr); instructionLabel.GestureRecognizers.Add(tgr);
Title = "Verify PIN"; Title = AppResources.VerifyPIN;
Content = stackLayout; Content = stackLayout;
Content.GestureRecognizers.Add(tgr); Content.GestureRecognizers.Add(tgr);
BindingContext = Model; BindingContext = Model;
@ -102,7 +102,7 @@ namespace Bit.App.Pages
{ {
// TODO: keep track of invalid attempts and logout? // TODO: keep track of invalid attempts and logout?
_userDialogs.Alert("Invalid PIN. Try again."); _userDialogs.Alert(AppResources.InvalidPIN);
Model.PIN = string.Empty; Model.PIN = string.Empty;
PinControl.Entry.Focus(); PinControl.Entry.Focus();
} }
@ -110,7 +110,7 @@ namespace Bit.App.Pages
private async Task LogoutAsync() private async Task LogoutAsync()
{ {
if(!await _userDialogs.ConfirmAsync("Are you sure you want to log out?", null, AppResources.Yes, AppResources.Cancel)) if(!await _userDialogs.ConfirmAsync(AppResources.LogoutConfirmation, null, AppResources.Yes, AppResources.Cancel))
{ {
return; return;
} }

View File

@ -3,6 +3,7 @@ using Bit.App.Controls;
using Xamarin.Forms; using Xamarin.Forms;
using Bit.App.Abstractions; using Bit.App.Abstractions;
using XLabs.Ioc; using XLabs.Ioc;
using Bit.App.Resources;
namespace Bit.App.Pages namespace Bit.App.Pages
{ {
@ -27,7 +28,7 @@ namespace Bit.App.Pages
var versionLabel = new Label var versionLabel = new Label
{ {
FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)), FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)),
Text = $@"Version {_appInfoService.Version} ({_appInfoService.Build}) Text = $@"{AppResources.Version} {_appInfoService.Version} ({_appInfoService.Build})
© 8bit Solutions LLC 2015-{DateTime.Now.Year}", © 8bit Solutions LLC 2015-{DateTime.Now.Year}",
HorizontalTextAlignment = TextAlignment.Center HorizontalTextAlignment = TextAlignment.Center
}; };
@ -41,7 +42,7 @@ namespace Bit.App.Pages
var creditsCell = new ExtendedTextCell var creditsCell = new ExtendedTextCell
{ {
Text = "Credits", Text = AppResources.Credits,
ShowDisclousure = true ShowDisclousure = true
}; };
creditsCell.Tapped += RateCell_Tapped; creditsCell.Tapped += RateCell_Tapped;
@ -73,7 +74,7 @@ namespace Bit.App.Pages
Spacing = 0 Spacing = 0
}; };
Title = "About"; Title = AppResources.About;
Content = new ScrollView { Content = stackLayout }; Content = new ScrollView { Content = stackLayout };
} }

View File

@ -72,7 +72,7 @@ namespace Bit.App.Pages
Name = nameCell.Entry.Text.Encrypt() Name = nameCell.Entry.Text.Encrypt()
}; };
_userDialogs.ShowLoading("Saving...", MaskType.Black); _userDialogs.ShowLoading(AppResources.Saving, MaskType.Black);
var saveResult = await _folderService.SaveAsync(folder); var saveResult = await _folderService.SaveAsync(folder);
_userDialogs.HideLoading(); _userDialogs.HideLoading();
@ -80,7 +80,7 @@ namespace Bit.App.Pages
if(saveResult.Succeeded) if(saveResult.Succeeded)
{ {
await Navigation.PopForDeviceAsync(); await Navigation.PopForDeviceAsync();
_userDialogs.Toast("New folder created."); _userDialogs.Toast(AppResources.FolderCreated);
_googleAnalyticsService.TrackAppEvent("CreatedFolder"); _googleAnalyticsService.TrackAppEvent("CreatedFolder");
} }
else if(saveResult.Errors.Count() > 0) else if(saveResult.Errors.Count() > 0)
@ -93,12 +93,12 @@ namespace Bit.App.Pages
} }
}, ToolbarItemOrder.Default, 0); }, ToolbarItemOrder.Default, 0);
Title = "Add Folder"; Title = AppResources.AddFolder;
Content = table; Content = table;
ToolbarItems.Add(saveToolBarItem); ToolbarItems.Add(saveToolBarItem);
if(Device.OS == TargetPlatform.iOS) if(Device.OS == TargetPlatform.iOS)
{ {
ToolbarItems.Add(new DismissModalToolBarItem(this, "Cancel")); ToolbarItems.Add(new DismissModalToolBarItem(this, AppResources.Cancel));
} }
} }

View File

@ -1,6 +1,7 @@
using System; using System;
using Bit.App.Controls; using Bit.App.Controls;
using Xamarin.Forms; using Xamarin.Forms;
using Bit.App.Resources;
namespace Bit.App.Pages namespace Bit.App.Pages
{ {
@ -35,7 +36,7 @@ Fingerprint by masterpage.com from the Noun Project")
table.EstimatedRowHeight = 100; table.EstimatedRowHeight = 100;
} }
Title = "Thank You"; Title = AppResources.ThankYou;
Content = table; Content = table;
} }

View File

@ -86,7 +86,7 @@ namespace Bit.App.Pages
folder.Name = nameCell.Entry.Text.Encrypt(); folder.Name = nameCell.Entry.Text.Encrypt();
_userDialogs.ShowLoading("Saving...", MaskType.Black); _userDialogs.ShowLoading(AppResources.Saving, MaskType.Black);
var saveResult = await _folderService.SaveAsync(folder); var saveResult = await _folderService.SaveAsync(folder);
_userDialogs.HideLoading(); _userDialogs.HideLoading();
@ -94,7 +94,7 @@ namespace Bit.App.Pages
if(saveResult.Succeeded) if(saveResult.Succeeded)
{ {
await Navigation.PopForDeviceAsync(); await Navigation.PopForDeviceAsync();
_userDialogs.Toast("Folder updated."); _userDialogs.Toast(AppResources.FolderUpdated);
_googleAnalyticsService.TrackAppEvent("EditedFolder"); _googleAnalyticsService.TrackAppEvent("EditedFolder");
} }
else if(saveResult.Errors.Count() > 0) else if(saveResult.Errors.Count() > 0)
@ -107,12 +107,12 @@ namespace Bit.App.Pages
} }
}, ToolbarItemOrder.Default, 0); }, ToolbarItemOrder.Default, 0);
Title = "Edit Folder"; Title = AppResources.EditFolder;
Content = mainTable; Content = mainTable;
ToolbarItems.Add(saveToolBarItem); ToolbarItems.Add(saveToolBarItem);
if(Device.OS == TargetPlatform.iOS) if(Device.OS == TargetPlatform.iOS)
{ {
ToolbarItems.Add(new DismissModalToolBarItem(this, "Cancel")); ToolbarItems.Add(new DismissModalToolBarItem(this, AppResources.Cancel));
} }
} }
@ -141,14 +141,14 @@ namespace Bit.App.Pages
} }
_userDialogs.ShowLoading("Deleting...", MaskType.Black); _userDialogs.ShowLoading(AppResources.Deleting, MaskType.Black);
var deleteTask = await _folderService.DeleteAsync(_folderId); var deleteTask = await _folderService.DeleteAsync(_folderId);
_userDialogs.HideLoading(); _userDialogs.HideLoading();
if(deleteTask.Succeeded) if(deleteTask.Succeeded)
{ {
await Navigation.PopForDeviceAsync(); await Navigation.PopForDeviceAsync();
_userDialogs.Toast("Folder deleted."); _userDialogs.Toast(AppResources.FolderDeleted);
} }
else if(deleteTask.Errors.Count() > 0) else if(deleteTask.Errors.Count() > 0)
{ {

View File

@ -3,6 +3,7 @@ using Bit.App.Controls;
using Xamarin.Forms; using Xamarin.Forms;
using Bit.App.Abstractions; using Bit.App.Abstractions;
using XLabs.Ioc; using XLabs.Ioc;
using Bit.App.Resources;
namespace Bit.App.Pages namespace Bit.App.Pages
{ {
@ -21,7 +22,7 @@ namespace Bit.App.Pages
{ {
var emailCell = new ExtendedTextCell var emailCell = new ExtendedTextCell
{ {
Text = "Email Us", Text = AppResources.EmailUs,
ShowDisclousure = true ShowDisclousure = true
}; };
emailCell.Tapped += EmailCell_Tapped; emailCell.Tapped += EmailCell_Tapped;
@ -39,12 +40,12 @@ namespace Bit.App.Pages
var emailLabel = new CustomLabel(this) var emailLabel = new CustomLabel(this)
{ {
Text = "Email us directly to get help or leave feedback." Text = AppResources.EmailUsDescription
}; };
var websiteCell = new ExtendedTextCell var websiteCell = new ExtendedTextCell
{ {
Text = "Visit Our Website", Text = AppResources.VisitOurWebsite,
ShowDisclousure = true ShowDisclousure = true
}; };
websiteCell.Tapped += WebsiteCell_Tapped; websiteCell.Tapped += WebsiteCell_Tapped;
@ -63,12 +64,12 @@ namespace Bit.App.Pages
var websiteLabel = new CustomLabel(this) var websiteLabel = new CustomLabel(this)
{ {
Text = "Visit our website to get help, news, email us, and/or learn more about how to use bitwarden." Text = AppResources.VisitOurWebsiteDescription
}; };
var bugCell = new ExtendedTextCell var bugCell = new ExtendedTextCell
{ {
Text = "File a Bug Report", Text = AppResources.FileBugReport,
ShowDisclousure = true ShowDisclousure = true
}; };
bugCell.Tapped += BugCell_Tapped; bugCell.Tapped += BugCell_Tapped;
@ -87,7 +88,7 @@ namespace Bit.App.Pages
var bugLabel = new CustomLabel(this) var bugLabel = new CustomLabel(this)
{ {
Text = "Open an issue at our GitHub repository." Text = AppResources.FileBugReportDescription
}; };
var stackLayout = new StackLayout var stackLayout = new StackLayout
@ -103,7 +104,7 @@ namespace Bit.App.Pages
bugLabel.WidthRequest = stackLayout.Bounds.Width - bugLabel.Bounds.Left * 2; bugLabel.WidthRequest = stackLayout.Bounds.Width - bugLabel.Bounds.Left * 2;
}; };
Title = "Help and Feedback"; Title = AppResources.HelpAndFeedback;
Content = new ScrollView { Content = stackLayout }; Content = new ScrollView { Content = stackLayout };
} }

View File

@ -38,7 +38,7 @@ namespace Bit.App.Pages
listView.ItemSelected += FolderSelected; listView.ItemSelected += FolderSelected;
listView.ItemTemplate = new DataTemplate(() => new SettingsFolderListViewCell(this)); listView.ItemTemplate = new DataTemplate(() => new SettingsFolderListViewCell(this));
Title = "Folders"; Title = AppResources.Folders;
Content = listView; Content = listView;
} }

View File

@ -43,14 +43,14 @@ namespace Bit.App.Pages
{ {
PinCell = new ExtendedSwitchCell PinCell = new ExtendedSwitchCell
{ {
Text = "Unlock with PIN Code", Text = AppResources.UnlockWithPIN,
On = _settings.GetValueOrDefault(Constants.SettingPinUnlockOn, false) On = _settings.GetValueOrDefault(Constants.SettingPinUnlockOn, false)
}; };
PinCell.OnChanged += PinCell_Changed; PinCell.OnChanged += PinCell_Changed;
LockOptionsCell = new ExtendedTextCell LockOptionsCell = new ExtendedTextCell
{ {
Text = "Lock Options", Text = AppResources.LockOptions,
Detail = GetLockOptionsDetailsText(), Detail = GetLockOptionsDetailsText(),
ShowDisclousure = true ShowDisclousure = true
}; };
@ -58,12 +58,12 @@ namespace Bit.App.Pages
var twoStepCell = new ExtendedTextCell var twoStepCell = new ExtendedTextCell
{ {
Text = "Two-step Login", Text = AppResources.TwoStepLogin,
ShowDisclousure = true ShowDisclousure = true
}; };
twoStepCell.Tapped += TwoStepCell_Tapped; ; twoStepCell.Tapped += TwoStepCell_Tapped; ;
var securitySecion = new TableSection("Security") var securitySecion = new TableSection(AppResources.Security)
{ {
LockOptionsCell, LockOptionsCell,
PinCell, PinCell,
@ -72,10 +72,11 @@ namespace Bit.App.Pages
if(_fingerprint.IsAvailable) if(_fingerprint.IsAvailable)
{ {
var fingerprintName = Device.OnPlatform(iOS: "Touch ID", Android: "Fingerprint", WinPhone: "Fingerprint"); var fingerprintName = Device.OnPlatform(iOS: AppResources.TouchID, Android: AppResources.Fingerprint,
WinPhone: AppResources.Fingerprint);
FingerprintCell = new ExtendedSwitchCell FingerprintCell = new ExtendedSwitchCell
{ {
Text = "Unlock with " + fingerprintName, Text = string.Format(AppResources.UnlockWith, fingerprintName),
On = _settings.GetValueOrDefault(Constants.SettingFingerprintUnlockOn, false), On = _settings.GetValueOrDefault(Constants.SettingFingerprintUnlockOn, false),
IsEnabled = _fingerprint.IsAvailable IsEnabled = _fingerprint.IsAvailable
}; };
@ -85,59 +86,59 @@ namespace Bit.App.Pages
var changeMasterPasswordCell = new ExtendedTextCell var changeMasterPasswordCell = new ExtendedTextCell
{ {
Text = "Change Master Password", Text = AppResources.ChangeMasterPassword,
ShowDisclousure = true ShowDisclousure = true
}; };
changeMasterPasswordCell.Tapped += ChangeMasterPasswordCell_Tapped; changeMasterPasswordCell.Tapped += ChangeMasterPasswordCell_Tapped;
var changeEmailCell = new ExtendedTextCell var changeEmailCell = new ExtendedTextCell
{ {
Text = "Change Email", Text = AppResources.ChangeEmail,
ShowDisclousure = true ShowDisclousure = true
}; };
changeEmailCell.Tapped += ChangeEmailCell_Tapped; changeEmailCell.Tapped += ChangeEmailCell_Tapped;
var foldersCell = new ExtendedTextCell var foldersCell = new ExtendedTextCell
{ {
Text = "Folders", Text = AppResources.Folders,
ShowDisclousure = true ShowDisclousure = true
}; };
foldersCell.Tapped += FoldersCell_Tapped; foldersCell.Tapped += FoldersCell_Tapped;
var syncCell = new ExtendedTextCell var syncCell = new ExtendedTextCell
{ {
Text = "Sync", Text = AppResources.Sync,
ShowDisclousure = true ShowDisclousure = true
}; };
syncCell.Tapped += SyncCell_Tapped; syncCell.Tapped += SyncCell_Tapped;
var lockCell = new ExtendedTextCell var lockCell = new ExtendedTextCell
{ {
Text = "Lock" Text = AppResources.Lock
}; };
lockCell.Tapped += LockCell_Tapped; lockCell.Tapped += LockCell_Tapped;
var logOutCell = new ExtendedTextCell var logOutCell = new ExtendedTextCell
{ {
Text = "Log Out" Text = AppResources.LogOut
}; };
logOutCell.Tapped += LogOutCell_Tapped; logOutCell.Tapped += LogOutCell_Tapped;
var aboutCell = new ExtendedTextCell var aboutCell = new ExtendedTextCell
{ {
Text = "About", Text = AppResources.About,
ShowDisclousure = true ShowDisclousure = true
}; };
aboutCell.Tapped += AboutCell_Tapped; aboutCell.Tapped += AboutCell_Tapped;
var helpCell = new ExtendedTextCell var helpCell = new ExtendedTextCell
{ {
Text = "Help and Feedback", Text = AppResources.HelpAndFeedback,
ShowDisclousure = true ShowDisclousure = true
}; };
helpCell.Tapped += HelpCell_Tapped; helpCell.Tapped += HelpCell_Tapped;
var otherSection = new TableSection("Other") var otherSection = new TableSection(AppResources.Other)
{ {
aboutCell, aboutCell,
helpCell helpCell
@ -145,9 +146,7 @@ namespace Bit.App.Pages
if(Device.OS == TargetPlatform.iOS) if(Device.OS == TargetPlatform.iOS)
{ {
var rateCell = new LongDetailViewCell("Rate the App", var rateCell = new LongDetailViewCell(AppResources.RateTheApp, AppResources.RateTheAppDescriptionAppStore);
"App Store ratings are reset with every new version of bitwarden."
+ " Please consider helping us out with a good review!");
rateCell.Tapped += RateCell_Tapped; rateCell.Tapped += RateCell_Tapped;
otherSection.Add(rateCell); otherSection.Add(rateCell);
} }
@ -155,8 +154,8 @@ namespace Bit.App.Pages
{ {
var rateCell = new ExtendedTextCell var rateCell = new ExtendedTextCell
{ {
Text = "Rate the App", Text = AppResources.RateTheApp,
Detail = "Please consider helping us out with a good review!", Detail = AppResources.RateTheAppDescription,
ShowDisclousure = true, ShowDisclousure = true,
DetailLineBreakMode = LineBreakMode.WordWrap DetailLineBreakMode = LineBreakMode.WordWrap
}; };
@ -169,17 +168,17 @@ namespace Bit.App.Pages
Root = new TableRoot Root = new TableRoot
{ {
securitySecion, securitySecion,
new TableSection("Account") new TableSection(AppResources.Account)
{ {
changeMasterPasswordCell, changeMasterPasswordCell,
changeEmailCell changeEmailCell
}, },
new TableSection("Manage") new TableSection(AppResources.Manage)
{ {
foldersCell, foldersCell,
syncCell syncCell
}, },
new TableSection("Current Session") new TableSection(AppResources.CurrentSession)
{ {
lockCell, lockCell,
logOutCell logOutCell
@ -194,10 +193,8 @@ namespace Bit.App.Pages
private async void TwoStepCell_Tapped(object sender, EventArgs e) private async void TwoStepCell_Tapped(object sender, EventArgs e)
{ {
if(!await _userDialogs.ConfirmAsync("Two-step login makes your account more secure by requiring you to enter" if(!await _userDialogs.ConfirmAsync(AppResources.TwoStepLoginConfirmation, null, AppResources.Yes,
+ " a security code from an authenticator app whenever you log in. Two-step login can be enabled on the" AppResources.Cancel))
+ " bitwarden.com web vault. Do you want to visit the website now?",
null, AppResources.Yes, AppResources.Cancel))
{ {
return; return;
} }
@ -208,35 +205,36 @@ namespace Bit.App.Pages
private async void LockOptionsCell_Tapped(object sender, EventArgs e) private async void LockOptionsCell_Tapped(object sender, EventArgs e)
{ {
var selection = await DisplayActionSheet("Lock Options", AppResources.Cancel, null, var selection = await DisplayActionSheet(AppResources.LockOptions, AppResources.Cancel, null,
"Immediately", "1 minute", "15 minutes", "1 hour", "4 hours", "Never"); AppResources.LockOptionImmediately, AppResources.LockOption1Minute, AppResources.LockOption15Minutes,
AppResources.LockOption1Hour, AppResources.LockOption4Hours, AppResources.Never);
if(selection == AppResources.Cancel) if(selection == AppResources.Cancel)
{ {
return; return;
} }
if(selection == "Immediately") if(selection == AppResources.LockOptionImmediately)
{ {
_settings.AddOrUpdateValue(Constants.SettingLockSeconds, 0); _settings.AddOrUpdateValue(Constants.SettingLockSeconds, 0);
} }
else if(selection == "1 minute") else if(selection == AppResources.LockOption1Minute)
{ {
_settings.AddOrUpdateValue(Constants.SettingLockSeconds, 60); _settings.AddOrUpdateValue(Constants.SettingLockSeconds, 60);
} }
else if(selection == "15 minutes") else if(selection == AppResources.LockOption15Minutes)
{ {
_settings.AddOrUpdateValue(Constants.SettingLockSeconds, 60 * 15); _settings.AddOrUpdateValue(Constants.SettingLockSeconds, 60 * 15);
} }
else if(selection == "1 hour") else if(selection == AppResources.LockOption1Hour)
{ {
_settings.AddOrUpdateValue(Constants.SettingLockSeconds, 60 * 60); _settings.AddOrUpdateValue(Constants.SettingLockSeconds, 60 * 60);
} }
else if(selection == "4 hours") else if(selection == AppResources.LockOption4Hours)
{ {
_settings.AddOrUpdateValue(Constants.SettingLockSeconds, 60 * 60 * 4); _settings.AddOrUpdateValue(Constants.SettingLockSeconds, 60 * 60 * 4);
} }
else if(selection == "Never") else if(selection == AppResources.Never)
{ {
_settings.AddOrUpdateValue(Constants.SettingLockSeconds, -1); _settings.AddOrUpdateValue(Constants.SettingLockSeconds, -1);
} }
@ -282,8 +280,7 @@ namespace Bit.App.Pages
private async void LogOutCell_Tapped(object sender, EventArgs e) private async void LogOutCell_Tapped(object sender, EventArgs e)
{ {
if(!await _userDialogs.ConfirmAsync( if(!await _userDialogs.ConfirmAsync(AppResources.LogoutConfirmation, null, AppResources.Yes, AppResources.Cancel))
"Are you sure you want to log out?", null, AppResources.Yes, AppResources.Cancel))
{ {
return; return;
} }
@ -293,8 +290,8 @@ namespace Bit.App.Pages
private async void ChangeMasterPasswordCell_Tapped(object sender, EventArgs e) private async void ChangeMasterPasswordCell_Tapped(object sender, EventArgs e)
{ {
if(!await _userDialogs.ConfirmAsync("You can change your master password on the bitwarden.com web vault." if(!await _userDialogs.ConfirmAsync(AppResources.ChangePasswordConfirmation, null, AppResources.Yes,
+ "Do you want to visit the website now?", null, AppResources.Yes, AppResources.Cancel)) AppResources.Cancel))
{ {
return; return;
} }
@ -305,8 +302,8 @@ namespace Bit.App.Pages
private async void ChangeEmailCell_Tapped(object sender, EventArgs e) private async void ChangeEmailCell_Tapped(object sender, EventArgs e)
{ {
if(!await _userDialogs.ConfirmAsync("You can change your email address on the bitwarden.com web vault." if(!await _userDialogs.ConfirmAsync(AppResources.ChangeEmailConfirmation, null, AppResources.Yes,
+ " Do you want to visit the website now?", null, AppResources.Yes, AppResources.Cancel)) AppResources.Cancel))
{ {
return; return;
} }
@ -380,27 +377,27 @@ namespace Bit.App.Pages
var lockSeconds = _settings.GetValueOrDefault(Constants.SettingLockSeconds, 60 * 15); var lockSeconds = _settings.GetValueOrDefault(Constants.SettingLockSeconds, 60 * 15);
if(lockSeconds == -1) if(lockSeconds == -1)
{ {
return "Never"; return AppResources.Never;
} }
else if(lockSeconds == 60) else if(lockSeconds == 60)
{ {
return "1 minute"; return AppResources.LockOption1Minute;
} }
else if(lockSeconds == 60 * 15) else if(lockSeconds == 60 * 15)
{ {
return "15 minutes"; return AppResources.LockOption15Minutes;
} }
else if(lockSeconds == 60 * 60) else if(lockSeconds == 60 * 60)
{ {
return "1 hour"; return AppResources.LockOption1Hour;
} }
else if(lockSeconds == 60 * 60 * 4) else if(lockSeconds == 60 * 60 * 4)
{ {
return "4 hours"; return AppResources.LockOption4Hours;
} }
else else
{ {
return "Immediately"; return AppResources.LockOptionImmediately;
} }
} }

View File

@ -32,7 +32,7 @@ namespace Bit.App.Pages
{ {
var instructionLabel = new Label var instructionLabel = new Label
{ {
Text = "Enter a 4 digit PIN code to unlock the app with.", Text = AppResources.SetPINDirection,
LineBreakMode = LineBreakMode.WordWrap, LineBreakMode = LineBreakMode.WordWrap,
FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Label)), FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Label)),
HorizontalTextAlignment = TextAlignment.Center, HorizontalTextAlignment = TextAlignment.Center,
@ -56,7 +56,7 @@ namespace Bit.App.Pages
PinControl.Label.GestureRecognizers.Add(tgr); PinControl.Label.GestureRecognizers.Add(tgr);
instructionLabel.GestureRecognizers.Add(tgr); instructionLabel.GestureRecognizers.Add(tgr);
Title = "Set PIN"; Title = AppResources.SetPIN;
Content = stackLayout; Content = stackLayout;
Content.GestureRecognizers.Add(tgr); Content.GestureRecognizers.Add(tgr);
BindingContext = Model; BindingContext = Model;

View File

@ -36,7 +36,7 @@ namespace Bit.App.Pages
{ {
var syncButton = new ExtendedButton var syncButton = new ExtendedButton
{ {
Text = "Sync Vault Now", Text = AppResources.SyncVaultNow,
Command = new Command(async () => await SyncAsync()), Command = new Command(async () => await SyncAsync()),
Style = (Style)Application.Current.Resources["btn-primaryAccent"] Style = (Style)Application.Current.Resources["btn-primaryAccent"]
}; };
@ -57,7 +57,7 @@ namespace Bit.App.Pages
Padding = new Thickness(15, 0) Padding = new Thickness(15, 0)
}; };
Title = "Sync"; Title = AppResources.Sync;
Content = stackLayout; Content = stackLayout;
} }
@ -75,7 +75,7 @@ namespace Bit.App.Pages
var lastSyncDate = _settings.GetValueOrDefault<DateTime?>(Constants.LastSync, null); var lastSyncDate = _settings.GetValueOrDefault<DateTime?>(Constants.LastSync, null);
try try
{ {
LastSyncLabel.Text = "Last Sync: " + lastSyncDate?.ToLocalTime().ToString() ?? "Never"; LastSyncLabel.Text = AppResources.LastSync + " " + lastSyncDate?.ToLocalTime().ToString() ?? AppResources.Never;
} }
catch catch
{ {
@ -93,17 +93,17 @@ namespace Bit.App.Pages
return; return;
} }
_userDialogs.ShowLoading("Syncing...", MaskType.Black); _userDialogs.ShowLoading(AppResources.Syncing, MaskType.Black);
var succeeded = await _syncService.FullSyncAsync(); var succeeded = await _syncService.FullSyncAsync();
_userDialogs.HideLoading(); _userDialogs.HideLoading();
if(succeeded) if(succeeded)
{ {
_userDialogs.Toast("Syncing complete."); _userDialogs.Toast(AppResources.SyncingComplete);
_googleAnalyticsService.TrackAppEvent("Synced"); _googleAnalyticsService.TrackAppEvent("Synced");
} }
else else
{ {
_userDialogs.Toast("Syncing failed."); _userDialogs.Toast(AppResources.SyncingFailed);
} }
SetLastSync(); SetLastSync();

View File

@ -61,6 +61,24 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to About.
/// </summary>
public static string About {
get {
return ResourceManager.GetString("About", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Account.
/// </summary>
public static string Account {
get {
return ResourceManager.GetString("Account", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Add. /// Looks up a localized string similar to Add.
/// </summary> /// </summary>
@ -70,6 +88,15 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Add Folder.
/// </summary>
public static string AddFolder {
get {
return ResourceManager.GetString("AddFolder", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Add Site. /// Looks up a localized string similar to Add Site.
/// </summary> /// </summary>
@ -115,6 +142,42 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Change Email.
/// </summary>
public static string ChangeEmail {
get {
return ResourceManager.GetString("ChangeEmail", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to You can change your email address on the bitwarden.com web vault. Do you want to visit the website now?.
/// </summary>
public static string ChangeEmailConfirmation {
get {
return ResourceManager.GetString("ChangeEmailConfirmation", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Change Master Password.
/// </summary>
public static string ChangeMasterPassword {
get {
return ResourceManager.GetString("ChangeMasterPassword", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?.
/// </summary>
public static string ChangePasswordConfirmation {
get {
return ResourceManager.GetString("ChangePasswordConfirmation", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Copy. /// Looks up a localized string similar to Copy.
/// </summary> /// </summary>
@ -142,6 +205,24 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Credits.
/// </summary>
public static string Credits {
get {
return ResourceManager.GetString("Credits", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Current Session.
/// </summary>
public static string CurrentSession {
get {
return ResourceManager.GetString("CurrentSession", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Delete. /// Looks up a localized string similar to Delete.
/// </summary> /// </summary>
@ -151,6 +232,15 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Deleting....
/// </summary>
public static string Deleting {
get {
return ResourceManager.GetString("Deleting", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Do you really want to delete? This cannot be undone.. /// Looks up a localized string similar to Do you really want to delete? This cannot be undone..
/// </summary> /// </summary>
@ -169,6 +259,15 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Edit Folder.
/// </summary>
public static string EditFolder {
get {
return ResourceManager.GetString("EditFolder", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Email. /// Looks up a localized string similar to Email.
/// </summary> /// </summary>
@ -187,6 +286,33 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Email Us.
/// </summary>
public static string EmailUs {
get {
return ResourceManager.GetString("EmailUs", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Email us directly to get help or leave feedback..
/// </summary>
public static string EmailUsDescription {
get {
return ResourceManager.GetString("EmailUsDescription", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Enter your PIN code..
/// </summary>
public static string EnterPIN {
get {
return ResourceManager.GetString("EnterPIN", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Favorites. /// Looks up a localized string similar to Favorites.
/// </summary> /// </summary>
@ -196,6 +322,42 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to File a Bug Report.
/// </summary>
public static string FileBugReport {
get {
return ResourceManager.GetString("FileBugReport", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Open an issue at our GitHub repository..
/// </summary>
public static string FileBugReportDescription {
get {
return ResourceManager.GetString("FileBugReportDescription", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Fingerprint.
/// </summary>
public static string Fingerprint {
get {
return ResourceManager.GetString("Fingerprint", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Use your fingerprint to verify..
/// </summary>
public static string FingerprintDirection {
get {
return ResourceManager.GetString("FingerprintDirection", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Folder. /// Looks up a localized string similar to Folder.
/// </summary> /// </summary>
@ -205,6 +367,24 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to New folder created..
/// </summary>
public static string FolderCreated {
get {
return ResourceManager.GetString("FolderCreated", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Folder deleted..
/// </summary>
public static string FolderDeleted {
get {
return ResourceManager.GetString("FolderDeleted", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to (none). /// Looks up a localized string similar to (none).
/// </summary> /// </summary>
@ -214,6 +394,24 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Folders.
/// </summary>
public static string Folders {
get {
return ResourceManager.GetString("Folders", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Folder updated..
/// </summary>
public static string FolderUpdated {
get {
return ResourceManager.GetString("FolderUpdated", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Go To Website. /// Looks up a localized string similar to Go To Website.
/// </summary> /// </summary>
@ -223,6 +421,15 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Help and Feedback.
/// </summary>
public static string HelpAndFeedback {
get {
return ResourceManager.GetString("HelpAndFeedback", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Hide. /// Looks up a localized string similar to Hide.
/// </summary> /// </summary>
@ -250,6 +457,33 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Invalid Master Password. Try again..
/// </summary>
public static string InvalidMasterPassword {
get {
return ResourceManager.GetString("InvalidMasterPassword", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Invalid PIN. Try again..
/// </summary>
public static string InvalidPIN {
get {
return ResourceManager.GetString("InvalidPIN", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Last Sync:.
/// </summary>
public static string LastSync {
get {
return ResourceManager.GetString("LastSync", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Launch. /// Looks up a localized string similar to Launch.
/// </summary> /// </summary>
@ -259,6 +493,69 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Lock.
/// </summary>
public static string Lock {
get {
return ResourceManager.GetString("Lock", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 15 minutes.
/// </summary>
public static string LockOption15Minutes {
get {
return ResourceManager.GetString("LockOption15Minutes", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 1 hour.
/// </summary>
public static string LockOption1Hour {
get {
return ResourceManager.GetString("LockOption1Hour", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 1 minute.
/// </summary>
public static string LockOption1Minute {
get {
return ResourceManager.GetString("LockOption1Minute", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 4 hours.
/// </summary>
public static string LockOption4Hours {
get {
return ResourceManager.GetString("LockOption4Hours", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Immediately.
/// </summary>
public static string LockOptionImmediately {
get {
return ResourceManager.GetString("LockOptionImmediately", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Lock Options.
/// </summary>
public static string LockOptions {
get {
return ResourceManager.GetString("LockOptions", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Log In. /// Looks up a localized string similar to Log In.
/// </summary> /// </summary>
@ -286,6 +583,24 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Are you sure you want to log out?.
/// </summary>
public static string LogoutConfirmation {
get {
return ResourceManager.GetString("LogoutConfirmation", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Manage.
/// </summary>
public static string Manage {
get {
return ResourceManager.GetString("Manage", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Master Password. /// Looks up a localized string similar to Master Password.
/// </summary> /// </summary>
@ -322,6 +637,15 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Never.
/// </summary>
public static string Never {
get {
return ResourceManager.GetString("Never", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to No. /// Looks up a localized string similar to No.
/// </summary> /// </summary>
@ -349,6 +673,15 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Other.
/// </summary>
public static string Other {
get {
return ResourceManager.GetString("Other", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Password. /// Looks up a localized string similar to Password.
/// </summary> /// </summary>
@ -358,6 +691,33 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Rate the App.
/// </summary>
public static string RateTheApp {
get {
return ResourceManager.GetString("RateTheApp", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Please consider helping us out with a good review!.
/// </summary>
public static string RateTheAppDescription {
get {
return ResourceManager.GetString("RateTheAppDescription", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to App Store ratings are reset with every new version of bitwarden. Please consider helping us out with a good review!.
/// </summary>
public static string RateTheAppDescriptionAppStore {
get {
return ResourceManager.GetString("RateTheAppDescriptionAppStore", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Save. /// Looks up a localized string similar to Save.
/// </summary> /// </summary>
@ -367,6 +727,42 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Saving....
/// </summary>
public static string Saving {
get {
return ResourceManager.GetString("Saving", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Security.
/// </summary>
public static string Security {
get {
return ResourceManager.GetString("Security", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Set PIN.
/// </summary>
public static string SetPIN {
get {
return ResourceManager.GetString("SetPIN", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Enter a 4 digit PIN code to unlock the app with..
/// </summary>
public static string SetPINDirection {
get {
return ResourceManager.GetString("SetPINDirection", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Settings. /// Looks up a localized string similar to Settings.
/// </summary> /// </summary>
@ -403,6 +799,15 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Submit.
/// </summary>
public static string Submit {
get {
return ResourceManager.GetString("Submit", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Sync. /// Looks up a localized string similar to Sync.
/// </summary> /// </summary>
@ -412,6 +817,51 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Syncing....
/// </summary>
public static string Syncing {
get {
return ResourceManager.GetString("Syncing", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Syncing complete..
/// </summary>
public static string SyncingComplete {
get {
return ResourceManager.GetString("SyncingComplete", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Syncing failed..
/// </summary>
public static string SyncingFailed {
get {
return ResourceManager.GetString("SyncingFailed", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Sync Vault Now.
/// </summary>
public static string SyncVaultNow {
get {
return ResourceManager.GetString("SyncVaultNow", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Thank You.
/// </summary>
public static string ThankYou {
get {
return ResourceManager.GetString("ThankYou", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Tools. /// Looks up a localized string similar to Tools.
/// </summary> /// </summary>
@ -421,6 +871,51 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Touch ID.
/// </summary>
public static string TouchID {
get {
return ResourceManager.GetString("TouchID", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Two-step Login.
/// </summary>
public static string TwoStepLogin {
get {
return ResourceManager.GetString("TwoStepLogin", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Two-step login makes your account more secure by requiring you to enter a security code from an authenticator app whenever you log in. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?.
/// </summary>
public static string TwoStepLoginConfirmation {
get {
return ResourceManager.GetString("TwoStepLoginConfirmation", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Unlock with {0}.
/// </summary>
public static string UnlockWith {
get {
return ResourceManager.GetString("UnlockWith", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Unlock with PIN Code.
/// </summary>
public static string UnlockWithPIN {
get {
return ResourceManager.GetString("UnlockWithPIN", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to URI. /// Looks up a localized string similar to URI.
/// </summary> /// </summary>
@ -430,6 +925,15 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Use Fingerprint to Unlock.
/// </summary>
public static string UseFingerprintToUnlock {
get {
return ResourceManager.GetString("UseFingerprintToUnlock", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Username. /// Looks up a localized string similar to Username.
/// </summary> /// </summary>
@ -457,6 +961,42 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Verify Fingerprint.
/// </summary>
public static string VerifyFingerprint {
get {
return ResourceManager.GetString("VerifyFingerprint", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Verify Master Password.
/// </summary>
public static string VerifyMasterPassword {
get {
return ResourceManager.GetString("VerifyMasterPassword", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Verify PIN.
/// </summary>
public static string VerifyPIN {
get {
return ResourceManager.GetString("VerifyPIN", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Version.
/// </summary>
public static string Version {
get {
return ResourceManager.GetString("Version", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to View. /// Looks up a localized string similar to View.
/// </summary> /// </summary>
@ -466,6 +1006,24 @@ namespace Bit.App.Resources {
} }
} }
/// <summary>
/// Looks up a localized string similar to Visit Our Website.
/// </summary>
public static string VisitOurWebsite {
get {
return ResourceManager.GetString("VisitOurWebsite", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Visit our website to get help, news, email us, and/or learn more about how to use bitwarden..
/// </summary>
public static string VisitOurWebsiteDescription {
get {
return ResourceManager.GetString("VisitOurWebsiteDescription", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Website. /// Looks up a localized string similar to Website.
/// </summary> /// </summary>

View File

@ -117,10 +117,16 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="About" xml:space="preserve">
<value>About</value>
</data>
<data name="Add" xml:space="preserve"> <data name="Add" xml:space="preserve">
<value>Add</value> <value>Add</value>
<comment>Add/create a new entity (verb).</comment> <comment>Add/create a new entity (verb).</comment>
</data> </data>
<data name="AddFolder" xml:space="preserve">
<value>Add Folder</value>
</data>
<data name="AddSite" xml:space="preserve"> <data name="AddSite" xml:space="preserve">
<value>Add Site</value> <value>Add Site</value>
<comment>The title for the add site page.</comment> <comment>The title for the add site page.</comment>
@ -153,10 +159,18 @@
<value>Copy Username</value> <value>Copy Username</value>
<comment>The button text that allows a user to copy the site's username to their clipboard.</comment> <comment>The button text that allows a user to copy the site's username to their clipboard.</comment>
</data> </data>
<data name="Credits" xml:space="preserve">
<value>Credits</value>
<comment>Title for page that we use to give credit to resources that we use.</comment>
</data>
<data name="Delete" xml:space="preserve"> <data name="Delete" xml:space="preserve">
<value>Delete</value> <value>Delete</value>
<comment>Delete an entity (verb).</comment> <comment>Delete an entity (verb).</comment>
</data> </data>
<data name="Deleting" xml:space="preserve">
<value>Deleting...</value>
<comment>Message shown when interacting with the server</comment>
</data>
<data name="DoYouReallyWantToDelete" xml:space="preserve"> <data name="DoYouReallyWantToDelete" xml:space="preserve">
<value>Do you really want to delete? This cannot be undone.</value> <value>Do you really want to delete? This cannot be undone.</value>
<comment>Confirmation alert message when deleteing something.</comment> <comment>Confirmation alert message when deleteing something.</comment>
@ -164,6 +178,9 @@
<data name="Edit" xml:space="preserve"> <data name="Edit" xml:space="preserve">
<value>Edit</value> <value>Edit</value>
</data> </data>
<data name="EditFolder" xml:space="preserve">
<value>Edit Folder</value>
</data>
<data name="Email" xml:space="preserve"> <data name="Email" xml:space="preserve">
<value>Email</value> <value>Email</value>
<comment>Short label for an email address.</comment> <comment>Short label for an email address.</comment>
@ -172,22 +189,55 @@
<value>Email Address</value> <value>Email Address</value>
<comment>Full label for a email address.</comment> <comment>Full label for a email address.</comment>
</data> </data>
<data name="EmailUs" xml:space="preserve">
<value>Email Us</value>
</data>
<data name="EmailUsDescription" xml:space="preserve">
<value>Email us directly to get help or leave feedback.</value>
</data>
<data name="EnterPIN" xml:space="preserve">
<value>Enter your PIN code.</value>
</data>
<data name="Favorites" xml:space="preserve"> <data name="Favorites" xml:space="preserve">
<value>Favorites</value> <value>Favorites</value>
<comment>Title for your favorite items in the vault.</comment> <comment>Title for your favorite items in the vault.</comment>
</data> </data>
<data name="FileBugReport" xml:space="preserve">
<value>File a Bug Report</value>
</data>
<data name="FileBugReportDescription" xml:space="preserve">
<value>Open an issue at our GitHub repository.</value>
</data>
<data name="FingerprintDirection" xml:space="preserve">
<value>Use your fingerprint to verify.</value>
</data>
<data name="Folder" xml:space="preserve"> <data name="Folder" xml:space="preserve">
<value>Folder</value> <value>Folder</value>
<comment>Label for a folder.</comment> <comment>Label for a folder.</comment>
</data> </data>
<data name="FolderCreated" xml:space="preserve">
<value>New folder created.</value>
</data>
<data name="FolderDeleted" xml:space="preserve">
<value>Folder deleted.</value>
</data>
<data name="FolderNone" xml:space="preserve"> <data name="FolderNone" xml:space="preserve">
<value>(none)</value> <value>(none)</value>
<comment>Sites that have no folder specified go in this special "catch-all" folder.</comment> <comment>Sites that have no folder specified go in this special "catch-all" folder.</comment>
</data> </data>
<data name="Folders" xml:space="preserve">
<value>Folders</value>
</data>
<data name="FolderUpdated" xml:space="preserve">
<value>Folder updated.</value>
</data>
<data name="GoToWebsite" xml:space="preserve"> <data name="GoToWebsite" xml:space="preserve">
<value>Go To Website</value> <value>Go To Website</value>
<comment>The button text that allows user to launch the website to their web browser.</comment> <comment>The button text that allows user to launch the website to their web browser.</comment>
</data> </data>
<data name="HelpAndFeedback" xml:space="preserve">
<value>Help and Feedback</value>
</data>
<data name="Hide" xml:space="preserve"> <data name="Hide" xml:space="preserve">
<value>Hide</value> <value>Hide</value>
<comment>Hide a secret value that is currently shown (password).</comment> <comment>Hide a secret value that is currently shown (password).</comment>
@ -200,6 +250,12 @@
<value>Internet Connection Required</value> <value>Internet Connection Required</value>
<comment>Title for the alert when internet connection is required to continue.</comment> <comment>Title for the alert when internet connection is required to continue.</comment>
</data> </data>
<data name="InvalidMasterPassword" xml:space="preserve">
<value>Invalid Master Password. Try again.</value>
</data>
<data name="InvalidPIN" xml:space="preserve">
<value>Invalid PIN. Try again.</value>
</data>
<data name="Launch" xml:space="preserve"> <data name="Launch" xml:space="preserve">
<value>Launch</value> <value>Launch</value>
<comment>The button text that allows user to launch the website to their web browser.</comment> <comment>The button text that allows user to launch the website to their web browser.</comment>
@ -216,6 +272,9 @@
<value>Log Out</value> <value>Log Out</value>
<comment>The log out button text (verb).</comment> <comment>The log out button text (verb).</comment>
</data> </data>
<data name="LogoutConfirmation" xml:space="preserve">
<value>Are you sure you want to log out?</value>
</data>
<data name="MasterPassword" xml:space="preserve"> <data name="MasterPassword" xml:space="preserve">
<value>Master Password</value> <value>Master Password</value>
<comment>Label for a master password.</comment> <comment>Label for a master password.</comment>
@ -251,6 +310,10 @@
<value>Save</value> <value>Save</value>
<comment>Button text for a save operation (verb).</comment> <comment>Button text for a save operation (verb).</comment>
</data> </data>
<data name="Saving" xml:space="preserve">
<value>Saving...</value>
<comment>Message shown when interacting with the server</comment>
</data>
<data name="Settings" xml:space="preserve"> <data name="Settings" xml:space="preserve">
<value>Settings</value> <value>Settings</value>
<comment>The title for the settings page.</comment> <comment>The title for the settings page.</comment>
@ -267,10 +330,16 @@
<value>No Name</value> <value>No Name</value>
<comment>Title text to display when there is no name given for a site.</comment> <comment>Title text to display when there is no name given for a site.</comment>
</data> </data>
<data name="Submit" xml:space="preserve">
<value>Submit</value>
</data>
<data name="Sync" xml:space="preserve"> <data name="Sync" xml:space="preserve">
<value>Sync</value> <value>Sync</value>
<comment>The title for the sync page.</comment> <comment>The title for the sync page.</comment>
</data> </data>
<data name="ThankYou" xml:space="preserve">
<value>Thank You</value>
</data>
<data name="Tools" xml:space="preserve"> <data name="Tools" xml:space="preserve">
<value>Tools</value> <value>Tools</value>
<comment>The title for the tools page.</comment> <comment>The title for the tools page.</comment>
@ -279,6 +348,9 @@
<value>URI</value> <value>URI</value>
<comment>Label for a uri/url.</comment> <comment>Label for a uri/url.</comment>
</data> </data>
<data name="UseFingerprintToUnlock" xml:space="preserve">
<value>Use Fingerprint to Unlock</value>
</data>
<data name="Username" xml:space="preserve"> <data name="Username" xml:space="preserve">
<value>Username</value> <value>Username</value>
<comment>Label for a username.</comment> <comment>Label for a username.</comment>
@ -291,9 +363,27 @@
<value>{0} has been copied.</value> <value>{0} has been copied.</value>
<comment>Confirmation message after suceessfully copying a value to the clipboard.</comment> <comment>Confirmation message after suceessfully copying a value to the clipboard.</comment>
</data> </data>
<data name="VerifyFingerprint" xml:space="preserve">
<value>Verify Fingerprint</value>
</data>
<data name="VerifyMasterPassword" xml:space="preserve">
<value>Verify Master Password</value>
</data>
<data name="VerifyPIN" xml:space="preserve">
<value>Verify PIN</value>
</data>
<data name="Version" xml:space="preserve">
<value>Version</value>
</data>
<data name="View" xml:space="preserve"> <data name="View" xml:space="preserve">
<value>View</value> <value>View</value>
</data> </data>
<data name="VisitOurWebsite" xml:space="preserve">
<value>Visit Our Website</value>
</data>
<data name="VisitOurWebsiteDescription" xml:space="preserve">
<value>Visit our website to get help, news, email us, and/or learn more about how to use bitwarden.</value>
</data>
<data name="Website" xml:space="preserve"> <data name="Website" xml:space="preserve">
<value>Website</value> <value>Website</value>
<comment>Label for a website.</comment> <comment>Label for a website.</comment>
@ -301,4 +391,105 @@
<data name="Yes" xml:space="preserve"> <data name="Yes" xml:space="preserve">
<value>Yes</value> <value>Yes</value>
</data> </data>
<data name="Account" xml:space="preserve">
<value>Account</value>
</data>
<data name="ChangeEmail" xml:space="preserve">
<value>Change Email</value>
</data>
<data name="ChangeEmailConfirmation" xml:space="preserve">
<value>You can change your email address on the bitwarden.com web vault. Do you want to visit the website now?</value>
</data>
<data name="ChangeMasterPassword" xml:space="preserve">
<value>Change Master Password</value>
</data>
<data name="ChangePasswordConfirmation" xml:space="preserve">
<value>You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?</value>
</data>
<data name="CurrentSession" xml:space="preserve">
<value>Current Session</value>
</data>
<data name="Fingerprint" xml:space="preserve">
<value>Fingerprint</value>
</data>
<data name="LastSync" xml:space="preserve">
<value>Last Sync:</value>
</data>
<data name="Lock" xml:space="preserve">
<value>Lock</value>
</data>
<data name="LockOption15Minutes" xml:space="preserve">
<value>15 minutes</value>
</data>
<data name="LockOption1Hour" xml:space="preserve">
<value>1 hour</value>
</data>
<data name="LockOption1Minute" xml:space="preserve">
<value>1 minute</value>
</data>
<data name="LockOption4Hours" xml:space="preserve">
<value>4 hours</value>
</data>
<data name="LockOptionImmediately" xml:space="preserve">
<value>Immediately</value>
</data>
<data name="LockOptions" xml:space="preserve">
<value>Lock Options</value>
</data>
<data name="Manage" xml:space="preserve">
<value>Manage</value>
</data>
<data name="Never" xml:space="preserve">
<value>Never</value>
</data>
<data name="Other" xml:space="preserve">
<value>Other</value>
</data>
<data name="RateTheApp" xml:space="preserve">
<value>Rate the App</value>
</data>
<data name="RateTheAppDescription" xml:space="preserve">
<value>Please consider helping us out with a good review!</value>
</data>
<data name="RateTheAppDescriptionAppStore" xml:space="preserve">
<value>App Store ratings are reset with every new version of bitwarden. Please consider helping us out with a good review!</value>
</data>
<data name="Security" xml:space="preserve">
<value>Security</value>
</data>
<data name="SetPIN" xml:space="preserve">
<value>Set PIN</value>
</data>
<data name="SetPINDirection" xml:space="preserve">
<value>Enter a 4 digit PIN code to unlock the app with.</value>
</data>
<data name="Syncing" xml:space="preserve">
<value>Syncing...</value>
<comment>Message shown when interacting with the server</comment>
</data>
<data name="SyncingComplete" xml:space="preserve">
<value>Syncing complete.</value>
</data>
<data name="SyncingFailed" xml:space="preserve">
<value>Syncing failed.</value>
</data>
<data name="SyncVaultNow" xml:space="preserve">
<value>Sync Vault Now</value>
</data>
<data name="TouchID" xml:space="preserve">
<value>Touch ID</value>
<comment>What Apple calls their fingerprint reader.</comment>
</data>
<data name="TwoStepLogin" xml:space="preserve">
<value>Two-step Login</value>
</data>
<data name="TwoStepLoginConfirmation" xml:space="preserve">
<value>Two-step login makes your account more secure by requiring you to enter a security code from an authenticator app whenever you log in. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?</value>
</data>
<data name="UnlockWith" xml:space="preserve">
<value>Unlock with {0}</value>
</data>
<data name="UnlockWithPIN" xml:space="preserve">
<value>Unlock with PIN Code</value>
</data>
</root> </root>