mirror of
https://github.com/bitwarden/mobile.git
synced 2025-01-02 18:07:56 +01:00
More localized resource strings applied. Implemented more options actions on valut list page. Added delete confirmation.
This commit is contained in:
parent
27e8474dae
commit
aeb04d0178
@ -14,12 +14,16 @@ namespace Bit.App.Models.View
|
|||||||
FolderId = folderId;
|
FolderId = folderId;
|
||||||
Name = site.Name?.Decrypt();
|
Name = site.Name?.Decrypt();
|
||||||
Username = site.Username?.Decrypt();
|
Username = site.Username?.Decrypt();
|
||||||
|
Password = site.Password?.Decrypt();
|
||||||
|
Uri = site.Uri?.Decrypt();
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
public string FolderId { get; set; }
|
public string FolderId { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
|
public string Password { get; set; }
|
||||||
|
public string Uri { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Folder : ObservableCollection<Site>
|
public class Folder : ObservableCollection<Site>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using Xamarin.Forms;
|
using Bit.App.Resources;
|
||||||
|
using Xamarin.Forms;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
{
|
{
|
||||||
@ -9,7 +10,7 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
BarBackgroundColor = Color.FromHex("3c8dbc");
|
BarBackgroundColor = Color.FromHex("3c8dbc");
|
||||||
BarTextColor = Color.FromHex("ffffff");
|
BarTextColor = Color.FromHex("ffffff");
|
||||||
Title = "Login";
|
Title = AppResources.LogInNoun;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ using System.Text;
|
|||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
using Bit.App.Behaviors;
|
using Bit.App.Behaviors;
|
||||||
using Bit.App.Models.Api;
|
using Bit.App.Models.Api;
|
||||||
|
using Bit.App.Resources;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using XLabs.Ioc;
|
using XLabs.Ioc;
|
||||||
|
|
||||||
@ -21,7 +22,7 @@ namespace Bit.App.Pages
|
|||||||
var emailEntry = new Entry
|
var emailEntry = new Entry
|
||||||
{
|
{
|
||||||
Keyboard = Keyboard.Email,
|
Keyboard = Keyboard.Email,
|
||||||
Placeholder = "Email Address"
|
Placeholder = AppResources.EmailAddress
|
||||||
};
|
};
|
||||||
|
|
||||||
emailEntry.Behaviors.Add(new RequiredValidationBehavior());
|
emailEntry.Behaviors.Add(new RequiredValidationBehavior());
|
||||||
@ -30,25 +31,25 @@ namespace Bit.App.Pages
|
|||||||
var masterPasswordEntry = new Entry
|
var masterPasswordEntry = new Entry
|
||||||
{
|
{
|
||||||
IsPassword = true,
|
IsPassword = true,
|
||||||
Placeholder = "Master Password"
|
Placeholder = AppResources.MasterPassword
|
||||||
};
|
};
|
||||||
|
|
||||||
masterPasswordEntry.Behaviors.Add(new RequiredValidationBehavior());
|
masterPasswordEntry.Behaviors.Add(new RequiredValidationBehavior());
|
||||||
|
|
||||||
var loginButton = new Button
|
var loginButton = new Button
|
||||||
{
|
{
|
||||||
Text = "Log In",
|
Text = AppResources.LogIn,
|
||||||
Command = new Command(async () =>
|
Command = new Command(async () =>
|
||||||
{
|
{
|
||||||
if(string.IsNullOrWhiteSpace(emailEntry.Text))
|
if(string.IsNullOrWhiteSpace(emailEntry.Text))
|
||||||
{
|
{
|
||||||
await DisplayAlert("An error has occurred", "The Email Address field is required.", "Ok");
|
await DisplayAlert(AppResources.AnErrorHasOccurred, string.Format(AppResources.ValidationFieldRequired, AppResources.EmailAddress), AppResources.Ok);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(string.IsNullOrWhiteSpace(masterPasswordEntry.Text))
|
if(string.IsNullOrWhiteSpace(masterPasswordEntry.Text))
|
||||||
{
|
{
|
||||||
await DisplayAlert("An error has occurred", "The Master Password field is required.", "Ok");
|
await DisplayAlert(AppResources.AnErrorHasOccurred, string.Format(AppResources.ValidationFieldRequired, AppResources.MasterPassword), AppResources.Ok);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,7 +64,7 @@ namespace Bit.App.Pages
|
|||||||
var response = await authService.TokenPostAsync(request);
|
var response = await authService.TokenPostAsync(request);
|
||||||
if(!response.Succeeded)
|
if(!response.Succeeded)
|
||||||
{
|
{
|
||||||
await DisplayAlert("An error occurred", response.Errors.First().Message, "Ok");
|
await DisplayAlert(AppResources.AnErrorHasOccurred, response.Errors.First().Message, AppResources.Ok);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,7 +84,7 @@ namespace Bit.App.Pages
|
|||||||
stackLayout.Children.Add(masterPasswordEntry);
|
stackLayout.Children.Add(masterPasswordEntry);
|
||||||
stackLayout.Children.Add(loginButton);
|
stackLayout.Children.Add(loginButton);
|
||||||
|
|
||||||
Title = "Log In";
|
Title = AppResources.LogIn;
|
||||||
Content = stackLayout;
|
Content = stackLayout;
|
||||||
NavigationPage.SetHasNavigationBar(this, false);
|
NavigationPage.SetHasNavigationBar(this, false);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using Bit.App.Resources;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
@ -14,10 +15,10 @@ namespace Bit.App.Pages
|
|||||||
vaultNavigation.BarBackgroundColor = settingsNavigation.BarBackgroundColor = Color.FromHex("3c8dbc");
|
vaultNavigation.BarBackgroundColor = settingsNavigation.BarBackgroundColor = Color.FromHex("3c8dbc");
|
||||||
vaultNavigation.BarTextColor = settingsNavigation.BarTextColor = Color.FromHex("ffffff");
|
vaultNavigation.BarTextColor = settingsNavigation.BarTextColor = Color.FromHex("ffffff");
|
||||||
|
|
||||||
vaultNavigation.Title = "My Vault";
|
vaultNavigation.Title = AppResources.MyVault;
|
||||||
vaultNavigation.Icon = "fa-lock";
|
vaultNavigation.Icon = "fa-lock";
|
||||||
|
|
||||||
settingsNavigation.Title = "Settings";
|
settingsNavigation.Title = AppResources.Settings;
|
||||||
settingsNavigation.Icon = "fa-cogs";
|
settingsNavigation.Icon = "fa-cogs";
|
||||||
|
|
||||||
Children.Add(vaultNavigation);
|
Children.Add(vaultNavigation);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
|
using Bit.App.Resources;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using XLabs.Ioc;
|
using XLabs.Ioc;
|
||||||
|
|
||||||
@ -16,7 +17,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
var logoutButton = new Button
|
var logoutButton = new Button
|
||||||
{
|
{
|
||||||
Text = "Log Out",
|
Text = AppResources.LogOut,
|
||||||
Command = new Command(() =>
|
Command = new Command(() =>
|
||||||
{
|
{
|
||||||
authService.LogOut();
|
authService.LogOut();
|
||||||
@ -27,7 +28,7 @@ namespace Bit.App.Pages
|
|||||||
var stackLayout = new StackLayout { };
|
var stackLayout = new StackLayout { };
|
||||||
stackLayout.Children.Add(logoutButton);
|
stackLayout.Children.Add(logoutButton);
|
||||||
|
|
||||||
Title = "Settings";
|
Title = AppResources.Settings;
|
||||||
Content = stackLayout;
|
Content = stackLayout;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Acr.UserDialogs;
|
using Acr.UserDialogs;
|
||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
|
using Bit.App.Resources;
|
||||||
using Plugin.Connectivity.Abstractions;
|
using Plugin.Connectivity.Abstractions;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using XLabs.Ioc;
|
using XLabs.Ioc;
|
||||||
@ -67,7 +68,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
public void AlertNoConnection()
|
public void AlertNoConnection()
|
||||||
{
|
{
|
||||||
DisplayAlert("No internet connection", "Adding a new folder required an internet connection. Please connect to the internet before continuing.", "Ok");
|
DisplayAlert(AppResources.InternetConnectionRequiredTitle, AppResources.InternetConnectionRequiredMessage, AppResources.Ok);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ using System.Threading.Tasks;
|
|||||||
using Acr.UserDialogs;
|
using Acr.UserDialogs;
|
||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
using Bit.App.Models;
|
using Bit.App.Models;
|
||||||
|
using Bit.App.Resources;
|
||||||
using Plugin.Connectivity.Abstractions;
|
using Plugin.Connectivity.Abstractions;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using XLabs.Ioc;
|
using XLabs.Ioc;
|
||||||
@ -25,7 +26,7 @@ namespace Bit.App.Pages
|
|||||||
var nameEntry = new Entry();
|
var nameEntry = new Entry();
|
||||||
|
|
||||||
var stackLayout = new StackLayout();
|
var stackLayout = new StackLayout();
|
||||||
stackLayout.Children.Add(new Label { Text = "Name" });
|
stackLayout.Children.Add(new Label { Text = AppResources.Name });
|
||||||
stackLayout.Children.Add(nameEntry);
|
stackLayout.Children.Add(nameEntry);
|
||||||
|
|
||||||
var scrollView = new ScrollView
|
var scrollView = new ScrollView
|
||||||
@ -34,7 +35,7 @@ namespace Bit.App.Pages
|
|||||||
Orientation = ScrollOrientation.Vertical
|
Orientation = ScrollOrientation.Vertical
|
||||||
};
|
};
|
||||||
|
|
||||||
var saveToolBarItem = new ToolbarItem("Save", null, async () =>
|
var saveToolBarItem = new ToolbarItem(AppResources.Save, null, async () =>
|
||||||
{
|
{
|
||||||
if(!connectivity.IsConnected)
|
if(!connectivity.IsConnected)
|
||||||
{
|
{
|
||||||
@ -44,7 +45,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
if(string.IsNullOrWhiteSpace(nameEntry.Text))
|
if(string.IsNullOrWhiteSpace(nameEntry.Text))
|
||||||
{
|
{
|
||||||
await DisplayAlert("An error has occurred", "The Name field is required.", "Ok");
|
await DisplayAlert(AppResources.AnErrorHasOccurred, string.Format(AppResources.ValidationFieldRequired, AppResources.Name), AppResources.Ok);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,7 +75,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
public void AlertNoConnection()
|
public void AlertNoConnection()
|
||||||
{
|
{
|
||||||
DisplayAlert("No internet connection", "Adding a new folder required an internet connection. Please connect to the internet before continuing.", "Ok");
|
DisplayAlert(AppResources.InternetConnectionRequiredTitle, AppResources.InternetConnectionRequiredMessage, AppResources.Ok);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ using System.Text;
|
|||||||
using Acr.UserDialogs;
|
using Acr.UserDialogs;
|
||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
using Bit.App.Models;
|
using Bit.App.Models;
|
||||||
|
using Bit.App.Resources;
|
||||||
using Plugin.Connectivity.Abstractions;
|
using Plugin.Connectivity.Abstractions;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using XLabs.Ioc;
|
using XLabs.Ioc;
|
||||||
@ -27,7 +28,7 @@ namespace Bit.App.Pages
|
|||||||
var uriEntry = new Entry { Keyboard = Keyboard.Url };
|
var uriEntry = new Entry { Keyboard = Keyboard.Url };
|
||||||
var nameEntry = new Entry();
|
var nameEntry = new Entry();
|
||||||
var folderPicker = new Picker { Title = "Folder" };
|
var folderPicker = new Picker { Title = "Folder" };
|
||||||
folderPicker.Items.Add("(none)");
|
folderPicker.Items.Add(AppResources.FolderNone);
|
||||||
folderPicker.SelectedIndex = 0;
|
folderPicker.SelectedIndex = 0;
|
||||||
foreach(var folder in folders)
|
foreach(var folder in folders)
|
||||||
{
|
{
|
||||||
@ -38,17 +39,17 @@ namespace Bit.App.Pages
|
|||||||
var notesEditor = new Editor();
|
var notesEditor = new Editor();
|
||||||
|
|
||||||
var stackLayout = new StackLayout();
|
var stackLayout = new StackLayout();
|
||||||
stackLayout.Children.Add(new Label { Text = "URI" });
|
stackLayout.Children.Add(new Label { Text = AppResources.URI });
|
||||||
stackLayout.Children.Add(uriEntry);
|
stackLayout.Children.Add(uriEntry);
|
||||||
stackLayout.Children.Add(new Label { Text = "Name" });
|
stackLayout.Children.Add(new Label { Text = AppResources.Name });
|
||||||
stackLayout.Children.Add(nameEntry);
|
stackLayout.Children.Add(nameEntry);
|
||||||
stackLayout.Children.Add(new Label { Text = "Folder" });
|
stackLayout.Children.Add(new Label { Text = AppResources.Folder });
|
||||||
stackLayout.Children.Add(folderPicker);
|
stackLayout.Children.Add(folderPicker);
|
||||||
stackLayout.Children.Add(new Label { Text = "Username" });
|
stackLayout.Children.Add(new Label { Text = AppResources.Username });
|
||||||
stackLayout.Children.Add(usernameEntry);
|
stackLayout.Children.Add(usernameEntry);
|
||||||
stackLayout.Children.Add(new Label { Text = "Password" });
|
stackLayout.Children.Add(new Label { Text = AppResources.Password });
|
||||||
stackLayout.Children.Add(passwordEntry);
|
stackLayout.Children.Add(passwordEntry);
|
||||||
stackLayout.Children.Add(new Label { Text = "Notes" });
|
stackLayout.Children.Add(new Label { Text = AppResources.Notes });
|
||||||
stackLayout.Children.Add(notesEditor);
|
stackLayout.Children.Add(notesEditor);
|
||||||
|
|
||||||
var scrollView = new ScrollView
|
var scrollView = new ScrollView
|
||||||
@ -57,7 +58,7 @@ namespace Bit.App.Pages
|
|||||||
Orientation = ScrollOrientation.Vertical
|
Orientation = ScrollOrientation.Vertical
|
||||||
};
|
};
|
||||||
|
|
||||||
var saveToolBarItem = new ToolbarItem("Save", null, async () =>
|
var saveToolBarItem = new ToolbarItem(AppResources.Save, null, async () =>
|
||||||
{
|
{
|
||||||
if(!connectivity.IsConnected)
|
if(!connectivity.IsConnected)
|
||||||
{
|
{
|
||||||
@ -67,13 +68,13 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
if(string.IsNullOrWhiteSpace(uriEntry.Text))
|
if(string.IsNullOrWhiteSpace(uriEntry.Text))
|
||||||
{
|
{
|
||||||
await DisplayAlert("An error has occurred", "The Uri field is required.", "Ok");
|
await DisplayAlert(AppResources.AnErrorHasOccurred, string.Format(AppResources.ValidationFieldRequired, AppResources.URI), AppResources.Ok);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(string.IsNullOrWhiteSpace(nameEntry.Text))
|
if(string.IsNullOrWhiteSpace(nameEntry.Text))
|
||||||
{
|
{
|
||||||
await DisplayAlert("An error has occurred", "The Name field is required.", "Ok");
|
await DisplayAlert(AppResources.AnErrorHasOccurred, string.Format(AppResources.ValidationFieldRequired, AppResources.Name), AppResources.Ok);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +101,7 @@ namespace Bit.App.Pages
|
|||||||
userDialogs.SuccessToast(nameEntry.Text, "New site created.");
|
userDialogs.SuccessToast(nameEntry.Text, "New site created.");
|
||||||
}, ToolbarItemOrder.Default, 0);
|
}, ToolbarItemOrder.Default, 0);
|
||||||
|
|
||||||
Title = "Add Site";
|
Title = AppResources.AddSite;
|
||||||
Content = scrollView;
|
Content = scrollView;
|
||||||
ToolbarItems.Add(saveToolBarItem);
|
ToolbarItems.Add(saveToolBarItem);
|
||||||
|
|
||||||
@ -112,7 +113,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
public void AlertNoConnection()
|
public void AlertNoConnection()
|
||||||
{
|
{
|
||||||
DisplayAlert("No internet connection", "Adding a new folder required an internet connection. Please connect to the internet before continuing.", "Ok");
|
DisplayAlert(AppResources.InternetConnectionRequiredTitle, AppResources.InternetConnectionRequiredMessage, AppResources.Ok);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,12 +16,14 @@ namespace Bit.App.Pages
|
|||||||
private readonly IFolderService _folderService;
|
private readonly IFolderService _folderService;
|
||||||
private readonly ISiteService _siteService;
|
private readonly ISiteService _siteService;
|
||||||
private readonly IUserDialogs _userDialogs;
|
private readonly IUserDialogs _userDialogs;
|
||||||
|
private readonly IClipboardService _clipboardService;
|
||||||
|
|
||||||
public VaultListPage()
|
public VaultListPage()
|
||||||
{
|
{
|
||||||
_folderService = Resolver.Resolve<IFolderService>();
|
_folderService = Resolver.Resolve<IFolderService>();
|
||||||
_siteService = Resolver.Resolve<ISiteService>();
|
_siteService = Resolver.Resolve<ISiteService>();
|
||||||
_userDialogs = Resolver.Resolve<IUserDialogs>();
|
_userDialogs = Resolver.Resolve<IUserDialogs>();
|
||||||
|
_clipboardService = Resolver.Resolve<IClipboardService>();
|
||||||
|
|
||||||
Init();
|
Init();
|
||||||
}
|
}
|
||||||
@ -76,22 +78,44 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
var mi = sender as MenuItem;
|
var mi = sender as MenuItem;
|
||||||
var site = mi.CommandParameter as VaultView.Site;
|
var site = mi.CommandParameter as VaultView.Site;
|
||||||
var selection = await DisplayActionSheet("More Options", "Cancel", null, "View", "Edit", "Copy Password", "Copy Username", "Go To Website");
|
var selection = await DisplayActionSheet(AppResources.MoreOptions, AppResources.Cancel, null,
|
||||||
|
AppResources.View, AppResources.Edit, AppResources.CopyPassword, AppResources.CopyUsername, AppResources.GoToWebsite);
|
||||||
|
|
||||||
switch(selection)
|
if(selection == AppResources.View)
|
||||||
{
|
{
|
||||||
case "View":
|
await Navigation.PushAsync(new VaultViewSitePage(site.Id));
|
||||||
case "Edit":
|
|
||||||
case "Copy Password":
|
|
||||||
case "Copy Username":
|
|
||||||
case "Go To Website":
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
else if(selection == AppResources.Edit)
|
||||||
|
{
|
||||||
|
// TODO: navigate to edit page
|
||||||
|
}
|
||||||
|
else if(selection == AppResources.CopyPassword)
|
||||||
|
{
|
||||||
|
Copy(site.Password, AppResources.Password);
|
||||||
|
}
|
||||||
|
else if(selection == AppResources.CopyUsername)
|
||||||
|
{
|
||||||
|
Copy(site.Username, AppResources.Username);
|
||||||
|
}
|
||||||
|
else if(selection == AppResources.GoToWebsite)
|
||||||
|
{
|
||||||
|
Device.OpenUri(new Uri(site.Uri));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Copy(string copyText, string alertLabel)
|
||||||
|
{
|
||||||
|
_clipboardService.CopyToClipboard(copyText);
|
||||||
|
_userDialogs.SuccessToast(string.Format(AppResources.ValueHasBeenCopied, alertLabel));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void DeleteClickedAsync(object sender, EventArgs e)
|
private async void DeleteClickedAsync(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
if(!await _userDialogs.ConfirmAsync(AppResources.DoYouReallyWantToDelete, null, AppResources.Yes, AppResources.No))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var mi = sender as MenuItem;
|
var mi = sender as MenuItem;
|
||||||
var site = mi.CommandParameter as VaultView.Site;
|
var site = mi.CommandParameter as VaultView.Site;
|
||||||
var deleteCall = await _siteService.DeleteAsync(site.Id);
|
var deleteCall = await _siteService.DeleteAsync(site.Id);
|
||||||
@ -101,11 +125,11 @@ namespace Bit.App.Pages
|
|||||||
var folder = Folders.Single(f => f.Id == site.FolderId);
|
var folder = Folders.Single(f => f.Id == site.FolderId);
|
||||||
var siteIndex = folder.Select((s, i) => new { s, i }).First(s => s.s.Id == site.Id).i;
|
var siteIndex = folder.Select((s, i) => new { s, i }).First(s => s.s.Id == site.Id).i;
|
||||||
folder.RemoveAt(siteIndex);
|
folder.RemoveAt(siteIndex);
|
||||||
_userDialogs.SuccessToast("Site deleted.");
|
_userDialogs.SuccessToast(AppResources.SiteDeleted);
|
||||||
}
|
}
|
||||||
else if(deleteCall.Errors.Count() > 0)
|
else if(deleteCall.Errors.Count() > 0)
|
||||||
{
|
{
|
||||||
await DisplayAlert("An error has occurred", deleteCall.Errors.First().Message, "Ok");
|
await DisplayAlert(AppResources.AnErrorHasOccurred, deleteCall.Errors.First().Message, AppResources.Ok);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,7 +140,7 @@ namespace Bit.App.Pages
|
|||||||
public AddSiteToolBarItem(VaultListPage page)
|
public AddSiteToolBarItem(VaultListPage page)
|
||||||
{
|
{
|
||||||
_page = page;
|
_page = page;
|
||||||
Text = "Add";
|
Text = AppResources.Add;
|
||||||
Icon = "fa-plus";
|
Icon = "fa-plus";
|
||||||
Clicked += ClickedItem;
|
Clicked += ClickedItem;
|
||||||
}
|
}
|
||||||
@ -131,11 +155,11 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
public VaultListViewCell(VaultListPage page)
|
public VaultListViewCell(VaultListPage page)
|
||||||
{
|
{
|
||||||
var moreAction = new MenuItem { Text = "More" };
|
var moreAction = new MenuItem { Text = AppResources.More };
|
||||||
moreAction.SetBinding(MenuItem.CommandParameterProperty, new Binding("."));
|
moreAction.SetBinding(MenuItem.CommandParameterProperty, new Binding("."));
|
||||||
moreAction.Clicked += page.MoreClickedAsync;
|
moreAction.Clicked += page.MoreClickedAsync;
|
||||||
|
|
||||||
var deleteAction = new MenuItem { Text = "Delete", IsDestructive = true };
|
var deleteAction = new MenuItem { Text = AppResources.Delete, IsDestructive = true };
|
||||||
deleteAction.SetBinding(MenuItem.CommandParameterProperty, new Binding("."));
|
deleteAction.SetBinding(MenuItem.CommandParameterProperty, new Binding("."));
|
||||||
deleteAction.Clicked += page.DeleteClickedAsync;
|
deleteAction.Clicked += page.DeleteClickedAsync;
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ using System.Reflection.Emit;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using Acr.UserDialogs;
|
using Acr.UserDialogs;
|
||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
|
using Bit.App.Resources;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using XLabs.Ioc;
|
using XLabs.Ioc;
|
||||||
|
|
||||||
@ -49,10 +50,10 @@ namespace Bit.App.Pages
|
|||||||
usernameRow.Children.Add(usernameLabel);
|
usernameRow.Children.Add(usernameLabel);
|
||||||
usernameRow.Children.Add(new Button
|
usernameRow.Children.Add(new Button
|
||||||
{
|
{
|
||||||
Text = "Copy",
|
Text = AppResources.Copy,
|
||||||
HorizontalOptions = LayoutOptions.End,
|
HorizontalOptions = LayoutOptions.End,
|
||||||
VerticalOptions = LayoutOptions.Center,
|
VerticalOptions = LayoutOptions.Center,
|
||||||
Command = new Command(() => Copy(usernameLabel.Text, "Username"))
|
Command = new Command(() => Copy(usernameLabel.Text, AppResources.Username))
|
||||||
});
|
});
|
||||||
|
|
||||||
var passwordRow = new StackLayout { Orientation = StackOrientation.Horizontal };
|
var passwordRow = new StackLayout { Orientation = StackOrientation.Horizontal };
|
||||||
@ -67,7 +68,7 @@ namespace Bit.App.Pages
|
|||||||
passwordRow.Children.Add(passwordLabel);
|
passwordRow.Children.Add(passwordLabel);
|
||||||
var togglePasswordButton = new Button
|
var togglePasswordButton = new Button
|
||||||
{
|
{
|
||||||
Text = "Show",
|
Text = AppResources.Show,
|
||||||
HorizontalOptions = LayoutOptions.End,
|
HorizontalOptions = LayoutOptions.End,
|
||||||
VerticalOptions = LayoutOptions.Center,
|
VerticalOptions = LayoutOptions.Center,
|
||||||
Command = new Command((self) => TogglePassword(self as Button, passwordLabel, password))
|
Command = new Command((self) => TogglePassword(self as Button, passwordLabel, password))
|
||||||
@ -76,10 +77,10 @@ namespace Bit.App.Pages
|
|||||||
passwordRow.Children.Add(togglePasswordButton);
|
passwordRow.Children.Add(togglePasswordButton);
|
||||||
passwordRow.Children.Add(new Button
|
passwordRow.Children.Add(new Button
|
||||||
{
|
{
|
||||||
Text = "Copy",
|
Text = AppResources.Copy,
|
||||||
HorizontalOptions = LayoutOptions.End,
|
HorizontalOptions = LayoutOptions.End,
|
||||||
VerticalOptions = LayoutOptions.Center,
|
VerticalOptions = LayoutOptions.Center,
|
||||||
Command = new Command(() => Copy(password, "Password"))
|
Command = new Command(() => Copy(password, AppResources.Password))
|
||||||
});
|
});
|
||||||
|
|
||||||
var uriRow = new StackLayout { Orientation = StackOrientation.Horizontal };
|
var uriRow = new StackLayout { Orientation = StackOrientation.Horizontal };
|
||||||
@ -93,22 +94,22 @@ namespace Bit.App.Pages
|
|||||||
});
|
});
|
||||||
uriRow.Children.Add(new Button
|
uriRow.Children.Add(new Button
|
||||||
{
|
{
|
||||||
Text = "Launch",
|
Text = AppResources.Launch,
|
||||||
HorizontalOptions = LayoutOptions.End,
|
HorizontalOptions = LayoutOptions.End,
|
||||||
VerticalOptions = LayoutOptions.Center,
|
VerticalOptions = LayoutOptions.Center,
|
||||||
Command = new Command(() => Device.OpenUri(new Uri(uri)))
|
Command = new Command(() => Device.OpenUri(new Uri(uri)))
|
||||||
});
|
});
|
||||||
|
|
||||||
var stackLayout = new StackLayout();
|
var stackLayout = new StackLayout();
|
||||||
stackLayout.Children.Add(new Label { Text = "Username" });
|
stackLayout.Children.Add(new Label { Text = AppResources.Username });
|
||||||
stackLayout.Children.Add(usernameRow);
|
stackLayout.Children.Add(usernameRow);
|
||||||
stackLayout.Children.Add(new Label { Text = "Password" });
|
stackLayout.Children.Add(new Label { Text = AppResources.Password });
|
||||||
stackLayout.Children.Add(passwordRow);
|
stackLayout.Children.Add(passwordRow);
|
||||||
stackLayout.Children.Add(new Label { Text = "Website" });
|
stackLayout.Children.Add(new Label { Text = AppResources.Website });
|
||||||
stackLayout.Children.Add(uriRow);
|
stackLayout.Children.Add(uriRow);
|
||||||
if(site.Notes != null)
|
if(site.Notes != null)
|
||||||
{
|
{
|
||||||
stackLayout.Children.Add(new Label { Text = "Notes" });
|
stackLayout.Children.Add(new Label { Text = AppResources.Notes });
|
||||||
stackLayout.Children.Add(new Label { Text = site.Notes.Decrypt() });
|
stackLayout.Children.Add(new Label { Text = site.Notes.Decrypt() });
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,28 +119,28 @@ namespace Bit.App.Pages
|
|||||||
Orientation = ScrollOrientation.Vertical
|
Orientation = ScrollOrientation.Vertical
|
||||||
};
|
};
|
||||||
|
|
||||||
Title = site.Name?.Decrypt() ?? "No Name";
|
Title = site.Name?.Decrypt() ?? AppResources.SiteNoName;
|
||||||
Content = scrollView;
|
Content = scrollView;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TogglePassword(Button toggleButton, Label passwordLabel, string password)
|
private void TogglePassword(Button toggleButton, Label passwordLabel, string password)
|
||||||
{
|
{
|
||||||
if(toggleButton.Text == "Show")
|
if(toggleButton.Text == AppResources.Show)
|
||||||
{
|
{
|
||||||
toggleButton.Text = "Hide";
|
toggleButton.Text = AppResources.Hide;
|
||||||
passwordLabel.Text = password;
|
passwordLabel.Text = password;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
toggleButton.Text = "Show";
|
toggleButton.Text = AppResources.Show;
|
||||||
passwordLabel.Text = new string('●', password.Length);
|
passwordLabel.Text = new string('●', password.Length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Copy(string copyText, string alertLabel)
|
private void Copy(string copyText, string alertLabel)
|
||||||
{
|
{
|
||||||
_clipboardService.CopyToClipboard(copyText);
|
_clipboardService.CopyToClipboard(copyText);
|
||||||
_userDialogs.SuccessToast($"{alertLabel} has been copied.");
|
_userDialogs.SuccessToast(string.Format(AppResources.ValueHasBeenCopied, alertLabel));
|
||||||
}
|
}
|
||||||
|
|
||||||
private class EditSiteToolBarItem : ToolbarItem
|
private class EditSiteToolBarItem : ToolbarItem
|
||||||
@ -151,7 +152,7 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
_page = page;
|
_page = page;
|
||||||
_siteId = siteId;
|
_siteId = siteId;
|
||||||
Text = "Edit";
|
Text = AppResources.Edit;
|
||||||
Clicked += ClickedItem;
|
Clicked += ClickedItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
270
src/App/Resources/AppResources.Designer.cs
generated
270
src/App/Resources/AppResources.Designer.cs
generated
@ -61,6 +61,15 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Add.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Add {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Add", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Add Site.
|
/// Looks up a localized string similar to Add Site.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -70,6 +79,78 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to An error has occurred..
|
||||||
|
/// </summary>
|
||||||
|
internal static string AnErrorHasOccurred {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("AnErrorHasOccurred", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Cancel.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Cancel {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Cancel", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Copy.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Copy {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Copy", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Copy Password.
|
||||||
|
/// </summary>
|
||||||
|
internal static string CopyPassword {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("CopyPassword", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Copy Username.
|
||||||
|
/// </summary>
|
||||||
|
internal static string CopyUsername {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("CopyUsername", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Delete.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Delete {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Delete", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Do you really want to delete? This cannot be undone..
|
||||||
|
/// </summary>
|
||||||
|
internal static string DoYouReallyWantToDelete {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("DoYouReallyWantToDelete", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Edit.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Edit {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Edit", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Email.
|
/// Looks up a localized string similar to Email.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -79,6 +160,15 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Email Address.
|
||||||
|
/// </summary>
|
||||||
|
internal static string EmailAddress {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("EmailAddress", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Folder.
|
/// Looks up a localized string similar to Folder.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -97,6 +187,51 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Go To Website.
|
||||||
|
/// </summary>
|
||||||
|
internal static string GoToWebsite {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("GoToWebsite", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Hide.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Hide {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Hide", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Please connect to the internet before continuing..
|
||||||
|
/// </summary>
|
||||||
|
internal static string InternetConnectionRequiredMessage {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("InternetConnectionRequiredMessage", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Internet Connection Required.
|
||||||
|
/// </summary>
|
||||||
|
internal static string InternetConnectionRequiredTitle {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("InternetConnectionRequiredTitle", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Launch.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Launch {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Launch", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Log In.
|
/// Looks up a localized string similar to Log In.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -106,6 +241,15 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Login.
|
||||||
|
/// </summary>
|
||||||
|
internal static string LogInNoun {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LogInNoun", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Log Out.
|
/// Looks up a localized string similar to Log Out.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -124,6 +268,24 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to More.
|
||||||
|
/// </summary>
|
||||||
|
internal static string More {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("More", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to More Options.
|
||||||
|
/// </summary>
|
||||||
|
internal static string MoreOptions {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MoreOptions", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to My Vault.
|
/// Looks up a localized string similar to My Vault.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -133,6 +295,24 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Name.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Name {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Name", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to No.
|
||||||
|
/// </summary>
|
||||||
|
internal static string No {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("No", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Notes.
|
/// Looks up a localized string similar to Notes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -142,6 +322,15 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Ok.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Ok {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Ok", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Password.
|
/// Looks up a localized string similar to Password.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -151,6 +340,15 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Save.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Save {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Save", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Settings.
|
/// Looks up a localized string similar to Settings.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -160,6 +358,33 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Show.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Show {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Show", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Site has been deleted..
|
||||||
|
/// </summary>
|
||||||
|
internal static string SiteDeleted {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("SiteDeleted", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to No Name.
|
||||||
|
/// </summary>
|
||||||
|
internal static string SiteNoName {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("SiteNoName", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Sync.
|
/// Looks up a localized string similar to Sync.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -186,5 +411,50 @@ namespace Bit.App.Resources {
|
|||||||
return ResourceManager.GetString("Username", resourceCulture);
|
return ResourceManager.GetString("Username", resourceCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to The {0} field is required..
|
||||||
|
/// </summary>
|
||||||
|
internal static string ValidationFieldRequired {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ValidationFieldRequired", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to {0} has been copied..
|
||||||
|
/// </summary>
|
||||||
|
internal static string ValueHasBeenCopied {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ValueHasBeenCopied", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to View.
|
||||||
|
/// </summary>
|
||||||
|
internal static string View {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("View", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Website.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Website {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Website", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Yes.
|
||||||
|
/// </summary>
|
||||||
|
internal static string Yes {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Yes", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,13 +117,52 @@
|
|||||||
<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="Add" xml:space="preserve">
|
||||||
|
<value>Add</value>
|
||||||
|
<comment>Add/create a new entity (verb).</comment>
|
||||||
|
</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>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="AnErrorHasOccurred" xml:space="preserve">
|
||||||
|
<value>An error has occurred.</value>
|
||||||
|
<comment>Alert title when something goes wrong.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="Cancel" xml:space="preserve">
|
||||||
|
<value>Cancel</value>
|
||||||
|
<comment>Cancel an operation.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="Copy" xml:space="preserve">
|
||||||
|
<value>Copy</value>
|
||||||
|
<comment>Copy some value to your clipboard.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="CopyPassword" xml:space="preserve">
|
||||||
|
<value>Copy Password</value>
|
||||||
|
<comment>The button text that allows a user to copy the site's password to their clipboard.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="CopyUsername" xml:space="preserve">
|
||||||
|
<value>Copy Username</value>
|
||||||
|
<comment>The button text that allows a user to copy the site's username to their clipboard.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="Delete" xml:space="preserve">
|
||||||
|
<value>Delete</value>
|
||||||
|
<comment>Delete an entity (verb).</comment>
|
||||||
|
</data>
|
||||||
|
<data name="DoYouReallyWantToDelete" xml:space="preserve">
|
||||||
|
<value>Do you really want to delete? This cannot be undone.</value>
|
||||||
|
<comment>Confirmation alert message when deleteing something.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="Edit" xml:space="preserve">
|
||||||
|
<value>Edit</value>
|
||||||
|
</data>
|
||||||
<data name="Email" xml:space="preserve">
|
<data name="Email" xml:space="preserve">
|
||||||
<value>Email</value>
|
<value>Email</value>
|
||||||
<comment>Label for an email address.</comment>
|
<comment>Short label for an email address.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="EmailAddress" xml:space="preserve">
|
||||||
|
<value>Email Address</value>
|
||||||
|
<comment>Full label for a email address.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Folder" xml:space="preserve">
|
<data name="Folder" xml:space="preserve">
|
||||||
<value>Folder</value>
|
<value>Folder</value>
|
||||||
@ -133,34 +172,93 @@
|
|||||||
<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="GoToWebsite" xml:space="preserve">
|
||||||
|
<value>Go To Website</value>
|
||||||
|
<comment>The button text that allows user to launch the website to their web browser.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="Hide" xml:space="preserve">
|
||||||
|
<value>Hide</value>
|
||||||
|
<comment>Hide a secret value that is currently shown (password).</comment>
|
||||||
|
</data>
|
||||||
|
<data name="InternetConnectionRequiredMessage" xml:space="preserve">
|
||||||
|
<value>Please connect to the internet before continuing.</value>
|
||||||
|
<comment>Description message for the alert when internet connection is required to continue.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="InternetConnectionRequiredTitle" xml:space="preserve">
|
||||||
|
<value>Internet Connection Required</value>
|
||||||
|
<comment>Title for the alert when internet connection is required to continue.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="Launch" xml:space="preserve">
|
||||||
|
<value>Launch</value>
|
||||||
|
<comment>The button text that allows user to launch the website to their web browser.</comment>
|
||||||
|
</data>
|
||||||
<data name="LogIn" xml:space="preserve">
|
<data name="LogIn" xml:space="preserve">
|
||||||
<value>Log In</value>
|
<value>Log In</value>
|
||||||
<comment>The login button text.</comment>
|
<comment>The login button text (verb).</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LogInNoun" xml:space="preserve">
|
||||||
|
<value>Login</value>
|
||||||
|
<comment>Title for login page. (noun)</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogOut" xml:space="preserve">
|
<data name="LogOut" xml:space="preserve">
|
||||||
<value>Log Out</value>
|
<value>Log Out</value>
|
||||||
<comment>The log out button text.</comment>
|
<comment>The log out button text (verb).</comment>
|
||||||
</data>
|
</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>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="More" xml:space="preserve">
|
||||||
|
<value>More</value>
|
||||||
|
<comment>Text to define that there are more options things to see.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="MoreOptions" xml:space="preserve">
|
||||||
|
<value>More Options</value>
|
||||||
|
<comment>The text title that defines more options for a site.</comment>
|
||||||
|
</data>
|
||||||
<data name="MyVault" xml:space="preserve">
|
<data name="MyVault" xml:space="preserve">
|
||||||
<value>My Vault</value>
|
<value>My Vault</value>
|
||||||
<comment>The title for the vault page.</comment>
|
<comment>The title for the vault page.</comment>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Name" xml:space="preserve">
|
||||||
|
<value>Name</value>
|
||||||
|
<comment>Label for an entity name.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="No" xml:space="preserve">
|
||||||
|
<value>No</value>
|
||||||
|
</data>
|
||||||
<data name="Notes" xml:space="preserve">
|
<data name="Notes" xml:space="preserve">
|
||||||
<value>Notes</value>
|
<value>Notes</value>
|
||||||
<comment>Label for notes.</comment>
|
<comment>Label for notes.</comment>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Ok" xml:space="preserve">
|
||||||
|
<value>Ok</value>
|
||||||
|
<comment>Acknowledgement.</comment>
|
||||||
|
</data>
|
||||||
<data name="Password" xml:space="preserve">
|
<data name="Password" xml:space="preserve">
|
||||||
<value>Password</value>
|
<value>Password</value>
|
||||||
<comment>Label for a password.</comment>
|
<comment>Label for a password.</comment>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Save" xml:space="preserve">
|
||||||
|
<value>Save</value>
|
||||||
|
<comment>Button text for a save operation (verb).</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>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Show" xml:space="preserve">
|
||||||
|
<value>Show</value>
|
||||||
|
<comment>Reveal a hidden value (password).</comment>
|
||||||
|
</data>
|
||||||
|
<data name="SiteDeleted" xml:space="preserve">
|
||||||
|
<value>Site has been deleted.</value>
|
||||||
|
<comment>Confirmation message after successfully deleting a site.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="SiteNoName" xml:space="preserve">
|
||||||
|
<value>No Name</value>
|
||||||
|
<comment>Title text to display when there is no name given for a site.</comment>
|
||||||
|
</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>
|
||||||
@ -173,4 +271,22 @@
|
|||||||
<value>Username</value>
|
<value>Username</value>
|
||||||
<comment>Label for a username.</comment>
|
<comment>Label for a username.</comment>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ValidationFieldRequired" xml:space="preserve">
|
||||||
|
<value>The {0} field is required.</value>
|
||||||
|
<comment>Validation message for when a form field is left blank and is required to be entered.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="ValueHasBeenCopied" xml:space="preserve">
|
||||||
|
<value>{0} has been copied.</value>
|
||||||
|
<comment>Confirmation message after suceessfully copying a value to the clipboard.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="View" xml:space="preserve">
|
||||||
|
<value>View</value>
|
||||||
|
</data>
|
||||||
|
<data name="Website" xml:space="preserve">
|
||||||
|
<value>Website</value>
|
||||||
|
<comment>Label for a website.</comment>
|
||||||
|
</data>
|
||||||
|
<data name="Yes" xml:space="preserve">
|
||||||
|
<value>Yes</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
Loading…
Reference in New Issue
Block a user