1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2025-11-12 03:18:26 -06:00

new xml Tag for en and de (#708)

* new xml Tag for en and de

* add linux support for env LANG

* precopiled header into TrueCrypt.fdp to substitute '_()' with 'LangString[]'

* more LangString in Code

* add Language xml's to Linux Setup location

* backup language for linux is en

* remove Language.en.xml install

* rearange new xml lines to end

* yes/no dialogs now translated

* All OK/Cancel Button now support international

Co-authored-by: tb@tbon.de <tb@tbon.de>
This commit is contained in:
T-Bonhagen
2020-12-11 18:42:59 +01:00
committed by GitHub
parent cb7adbfa26
commit 38ad7650ac
26 changed files with 3891 additions and 2654 deletions

View File

@@ -243,7 +243,7 @@ namespace VeraCrypt
}
catch (...)
{
Gui->ShowError (_("Unknown exception occurred."));
Gui->ShowError (LangString["LINUX_UNKNOWN_EXC_OCCURRED"]);
}
_exit (1);

View File

@@ -48,21 +48,21 @@ namespace VeraCrypt
enableNewPassword = true;
enableNewKeyfiles = true;
enablePkcs5Prf = true;
SetTitle (_("Change Volume Password and Keyfiles"));
SetTitle (LangString["IDD_PASSWORDCHANGE_DLG"]);
break;
case Mode::ChangeKeyfiles:
enableNewKeyfiles = true;
SetTitle (_("Add/Remove Keyfiles to/from Volume"));
SetTitle (LangString["IDD_PCDM_ADD_REMOVE_VOL_KEYFILES"]);
break;
case Mode::RemoveAllKeyfiles:
SetTitle (_("Remove All Keyfiles from Volume"));
SetTitle (LangString["IDD_PCDM_REMOVE_ALL_KEYFILES_FROM_VOL"]);
break;
case Mode::ChangePkcs5Prf:
enablePkcs5Prf = true;
SetTitle (_("Change Header Key Derivation Algorithm"));
SetTitle (LangString["IDD_PCDM_CHANGE_PKCS5_PRF"]);
break;
default:

View File

@@ -75,7 +75,7 @@ namespace VeraCrypt
}
#ifdef TC_WINDOWS
fields[ColumnDevice] = StringFormatter (L"{0} {1}:", _("Harddisk"), device.SystemNumber);
fields[ColumnDevice] = StringFormatter (L"{0} {1}:", LangString["HARDDISK"], device.SystemNumber);
fields[ColumnDrive] = device.MountPoint;
fields[ColumnName] = device.Name;
#else
@@ -120,21 +120,20 @@ namespace VeraCrypt
Fit();
Layout();
Center();
StdButtonsOK->Disable();
StdButtonsOK->SetDefault();
OKButton->Disable();
OKButton->SetDefault();
}
void DeviceSelectionDialog::OnListItemActivated (wxListEvent& event)
{
if (StdButtonsOK->IsEnabled())
if (OKButton->IsEnabled())
EndModal (wxID_OK);
}
void DeviceSelectionDialog::OnListItemDeselected (wxListEvent& event)
{
if (DeviceListCtrl->GetSelectedItemCount() == 0)
StdButtonsOK->Disable();
OKButton->Disable();
}
void DeviceSelectionDialog::OnListItemSelected (wxListEvent& event)
@@ -144,9 +143,9 @@ namespace VeraCrypt
if (device && device->Size)
{
SelectedDevice = *device;
StdButtonsOK->Enable();
OKButton->Enable();
}
else
StdButtonsOK->Disable();
OKButton->Disable();
}
}

View File

@@ -121,7 +121,7 @@ namespace VeraCrypt
else
EncryptionAlgorithmStaticText->SetLabel (L"");
EncryptionAlgorithmHyperlink->SetLabel (_("More information"));
EncryptionAlgorithmHyperlink->SetLabel (LangString["IDC_MORE_INFO_SYS_ENCRYPTION"]);
}
Layout();

File diff suppressed because it is too large Load Diff

View File

@@ -41,6 +41,8 @@
#include <wx/spinctrl.h>
#include <wx/notebook.h>
#include "international.h"
///////////////////////////////////////////////////////////////////////////
namespace VeraCrypt
@@ -244,7 +246,7 @@ namespace VeraCrypt
public:
BenchmarkDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("VeraCrypt - Algorithms Benchmark"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
BenchmarkDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_BENCHMARK_DLG"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
~BenchmarkDialogBase();
};
@@ -284,19 +286,19 @@ namespace VeraCrypt
protected:
wxListCtrl* DeviceListCtrl;
wxStdDialogButtonSizer* StdButtons;
wxButton* StdButtonsOK;
wxButton* StdButtonsCancel;
wxButton* CancelButton;
wxButton* OKButton;
// Virtual event handlers, overide them in your derived class
virtual void OnListItemActivated( wxListEvent& event ) { event.Skip(); }
virtual void OnListItemDeselected( wxListEvent& event ) { event.Skip(); }
virtual void OnListItemSelected( wxListEvent& event ) { event.Skip(); }
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
public:
DeviceSelectionDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Select a Partition or Device"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );
DeviceSelectionDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_RAWDEVICES_DLG"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );
~DeviceSelectionDialogBase();
};
@@ -335,7 +337,7 @@ namespace VeraCrypt
public:
EncryptionTestDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("VeraCrypt - Test Vectors"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
EncryptionTestDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_CIPHER_TEST_DLG"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
~EncryptionTestDialogBase();
};
@@ -368,7 +370,7 @@ namespace VeraCrypt
public:
FavoriteVolumesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Favorite Volumes"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
FavoriteVolumesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_FAVORITE_VOLUMES"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
~FavoriteVolumesDialogBase();
};
@@ -398,7 +400,7 @@ namespace VeraCrypt
public:
KeyfilesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Select Keyfiles"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
KeyfilesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("SELECT_TOKEN_KEYFILES"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
~KeyfilesDialogBase();
};
@@ -455,7 +457,7 @@ namespace VeraCrypt
public:
LegalNoticesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("VeraCrypt - Legal Notices"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
LegalNoticesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("LEGAL_NOTICES_DLG_TITLE"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
~LegalNoticesDialogBase();
};
@@ -507,7 +509,7 @@ namespace VeraCrypt
public:
MountOptionsDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Enter VeraCrypt Volume Password"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );
MountOptionsDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_PASSWORD_DLG"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );
~MountOptionsDialogBase();
};
@@ -522,17 +524,17 @@ namespace VeraCrypt
protected:
wxChoice* SecurityTokenChoice;
wxTextCtrl* KeyfileNameTextCtrl;
wxStdDialogButtonSizer* StdButtons;
wxButton* StdButtonsOK;
wxButton* StdButtonsCancel;
wxButton* CancelButton;
wxButton* OKButton;
// Virtual event handlers, overide them in your derived class
virtual void OnKeyfileNameChanged( wxCommandEvent& event ) { event.Skip(); }
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
public:
NewSecurityTokenKeyfileDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("New Security Token Keyfile Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
NewSecurityTokenKeyfileDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_TOKEN_PREFERENCES"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );
~NewSecurityTokenKeyfileDialogBase();
};
@@ -545,6 +547,7 @@ namespace VeraCrypt
private:
protected:
wxBoxSizer* bSizer32;
wxNotebook* PreferencesNotebook;
wxPanel* SecurityPage;
wxStaticBoxSizer* AutoDismountSizer;
@@ -600,9 +603,8 @@ namespace VeraCrypt
wxButton* RemoveHotkeyButton;
wxCheckBox* BeepAfterHotkeyMountDismountCheckBox;
wxCheckBox* DisplayMessageAfterHotkeyDismountCheckBox;
wxStdDialogButtonSizer* StdButtons;
wxButton* StdButtonsOK;
wxButton* StdButtonsCancel;
wxButton* OKButton;
wxButton* CancelButton;
// Virtual event handlers, overide them in your derived class
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
@@ -618,7 +620,6 @@ namespace VeraCrypt
virtual void OnHotkeyListItemSelected( wxListEvent& event ) { event.Skip(); }
virtual void OnAssignHotkeyButtonClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnRemoveHotkeyButtonClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
@@ -628,7 +629,7 @@ namespace VeraCrypt
wxPanel* SecurityTokensPage;
wxPanel* HotkeysPage;
PreferencesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Preferences"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
PreferencesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_PREFERENCES_DLG"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );
~PreferencesDialogBase();
};
@@ -657,7 +658,7 @@ namespace VeraCrypt
public:
RandomPoolEnrichmentDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("VeraCrypt - Random Pool Enrichment"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
RandomPoolEnrichmentDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_RANDOM_POOL_ENRICHMENT"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
~RandomPoolEnrichmentDialogBase();
};
@@ -689,7 +690,7 @@ namespace VeraCrypt
public:
SecurityTokenKeyfilesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Security Token Keyfiles"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );
SecurityTokenKeyfilesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_KEYFILES"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );
~SecurityTokenKeyfilesDialogBase();
};
@@ -703,12 +704,15 @@ namespace VeraCrypt
protected:
wxListCtrl* PropertiesListCtrl;
wxStdDialogButtonSizer* StdButtons;
wxButton* StdButtonsOK;
wxButton* OKButton;
// Virtual event handlers, overide them in your derived class
virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
public:
VolumePropertiesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Volume Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE );
VolumePropertiesDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("IDD_VOLUME_PROPERTIES"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE );
~VolumePropertiesDialogBase();
};

View File

@@ -219,7 +219,7 @@ namespace VeraCrypt
L"cmd.exe", args.c_str(), nullptr, SW_SHOW);
#else
# ifdef TC_MACOSX
Gui->ShowInfo (_("Disk Utility will be launched after you press 'OK'.\n\nPlease select your volume in the Disk Utility window and press 'Verify Disk' or 'Repair Disk' button on the 'First Aid' page."));
Gui->ShowInfo (LangString["LINUX_FIRST_AID"]);
# endif
Core->CheckFilesystem (selectedVolume, repair);
UpdateVolumeList();
@@ -282,15 +282,15 @@ namespace VeraCrypt
VolumeStaticBoxSizer->Detach (VolumeGridBagSizer);
VolumeStaticBoxSizer->Add (VolumeGridBagSizer, 1, wxEXPAND, 0);
ExitButton->SetLabel (_("Close"));
MountAllDevicesButton->SetLabel (_("Mount All Devices"));
ExitButton->SetLabel (LangString["CLOSE"]);
MountAllDevicesButton->SetLabel (LangString["LINUX_MOUNT_ALL_DEV"]);
#endif
#ifdef TC_WINDOWS
SlotListCtrl->InsertColumn (ColumnSlot, LangString["DRIVE"], wxLIST_FORMAT_LEFT, 1);
colPermilles.push_back (75);
#else
SlotListCtrl->InsertColumn (ColumnSlot, _("Slot"), wxLIST_FORMAT_LEFT, 1);
SlotListCtrl->InsertColumn (ColumnSlot, LangString["TOKEN_SLOT_ID"], wxLIST_FORMAT_LEFT, 1);
colPermilles.push_back (82);
#endif
@@ -493,7 +493,7 @@ namespace VeraCrypt
catch (exception &e)
{
Gui->ShowError (e);
Gui->ShowError (_("Error while loading configuration files located in ") + wstring (Application::GetConfigFilePath (L"")));
Gui->ShowError (LangString["LINUX_ERROR_LOADING_CONFIG"] + wstring (Application::GetConfigFilePath (L"")));
}
}
@@ -514,8 +514,8 @@ namespace VeraCrypt
Gui->AppendToMenu (*popup, LangString[Gui->IsInBackgroundMode() ? "SHOW_TC" : "HIDE_TC"], this, wxCommandEventHandler (TaskBarIcon::OnShowHideMenuItemSelected));
popup->AppendSeparator();
Gui->AppendToMenu (*popup, _("Mount All Favorite Volumes"), this, wxCommandEventHandler (TaskBarIcon::OnMountAllFavoritesMenuItemSelected))->Enable (!Busy);
Gui->AppendToMenu (*popup, _("Dismount All Mounted Volumes"), this, wxCommandEventHandler (TaskBarIcon::OnDismountAllMenuItemSelected))->Enable (!Busy);
Gui->AppendToMenu (*popup, LangString["IDM_MOUNT_FAVORITE_VOLUMES"], this, wxCommandEventHandler (TaskBarIcon::OnMountAllFavoritesMenuItemSelected))->Enable (!Busy);
Gui->AppendToMenu (*popup, LangString["HK_DISMOUNT_ALL"], this, wxCommandEventHandler (TaskBarIcon::OnDismountAllMenuItemSelected))->Enable (!Busy);
// Favorite volumes
if (Gui->GetPreferences().BackgroundTaskMenuMountItemsEnabled && !Frame->FavoriteVolumesMenuMap.empty())
@@ -524,7 +524,8 @@ namespace VeraCrypt
typedef pair <int, FavoriteVolume> FavMapPair;
foreach (FavMapPair fp, Frame->FavoriteVolumesMenuMap)
{
Gui->AppendToMenu (*popup, LangString["MOUNT"] + L" " + wstring (fp.second.Path) + (fp.second.MountPoint.IsEmpty() ? L"" : L" " + wstring (fp.second.MountPoint)),
//TBH Gui->AppendToMenu (*popup, LangString["MOUNT"] + L" " + wstring (fp.second.Path) + (fp.second.MountPoint.IsEmpty() ? L"" : L" " + wstring (fp.second.MountPoint)),
Gui->AppendToMenu (*popup, LangString["MOUNT_BUTTON"] + L" " + wstring (fp.second.Path) + (fp.second.MountPoint.IsEmpty() ? L"" : L" " + wstring (fp.second.MountPoint)),
this, wxCommandEventHandler (TaskBarIcon::OnFavoriteVolumeMenuItemSelected), fp.first)->Enable (!Busy);
}
}
@@ -569,10 +570,10 @@ namespace VeraCrypt
}
popup->AppendSeparator();
Gui->AppendToMenu (*popup, _("Preferences..."), this, wxCommandEventHandler (TaskBarIcon::OnPreferencesMenuItemSelected))->Enable (!Busy);
Gui->AppendToMenu (*popup, LangString["IDM_PREFERENCES"], this, wxCommandEventHandler (TaskBarIcon::OnPreferencesMenuItemSelected))->Enable (!Busy);
#ifndef TC_MACOSX
popup->AppendSeparator();
Gui->AppendToMenu (*popup, _("Exit"), this, wxCommandEventHandler (TaskBarIcon::OnExitMenuItemSelected))->Enable (!Busy && Frame->CanExit());
Gui->AppendToMenu (*popup, LangString["EXIT"], this, wxCommandEventHandler (TaskBarIcon::OnExitMenuItemSelected))->Enable (!Busy && Frame->CanExit());
#endif
return popup.release();
}
@@ -692,7 +693,7 @@ namespace VeraCrypt
{
if (!IsFreeSlotSelected())
{
Gui->ShowWarning (_("Please select a free drive slot from the list."));
Gui->ShowWarning (LangString["LINUX_SELECT_FREE_SLOT"]);
return;
}
@@ -1143,10 +1144,10 @@ namespace VeraCrypt
{
Gui->AppendToMenu (popup, LangString["DISMOUNT"], this, wxCommandEventHandler (MainFrame::OnDismountVolumeMenuItemSelected));
Gui->AppendToMenu (popup, LangString["OPEN"], this, wxCommandEventHandler (MainFrame::OnOpenVolumeMenuItemSelected));
Gui->AppendToMenu (popup, _("Deselect"), this, wxCommandEventHandler (MainFrame::OnClearSlotSelectionMenuItemSelected));
Gui->AppendToMenu (popup, LangString["LINUX_DESELECT"], this, wxCommandEventHandler (MainFrame::OnClearSlotSelectionMenuItemSelected));
popup.AppendSeparator();
Gui->AppendToMenu (popup, _("Add to Favorites..."), this, wxCommandEventHandler (MainFrame::OnAddToFavoritesMenuItemSelected));
Gui->AppendToMenu (popup, LangString["IDPM_ADD_TO_FAVORITES"], this, wxCommandEventHandler (MainFrame::OnAddToFavoritesMenuItemSelected));
popup.AppendSeparator();
Gui->AppendToMenu (popup, LangString["IDPM_CHECK_FILESYS"], this, wxCommandEventHandler (MainFrame::OnCheckFilesystemMenuItemSelected));
@@ -1159,7 +1160,7 @@ namespace VeraCrypt
}
else if (IsFreeSlotSelected())
{
Gui->AppendToMenu (popup, _("Mount Volume"), this, wxCommandEventHandler (MainFrame::OnMountVolumeMenuItemSelected));
Gui->AppendToMenu (popup, LangString["IDM_MOUNT_VOLUME"], this, wxCommandEventHandler (MainFrame::OnMountVolumeMenuItemSelected));
popup.AppendSeparator();
@@ -1168,7 +1169,7 @@ namespace VeraCrypt
popup.AppendSeparator();
Gui->AppendToMenu (popup, _("Deselect"), this, wxCommandEventHandler (MainFrame::OnClearSlotSelectionMenuItemSelected));
Gui->AppendToMenu (popup, LangString["LINUX_DESELECT"], this, wxCommandEventHandler (MainFrame::OnClearSlotSelectionMenuItemSelected));
PopupMenu (&popup);
}
@@ -1483,21 +1484,21 @@ namespace VeraCrypt
wxMenu popup;
Gui->AppendToMenu (popup, _("Change Volume Password..."), this, wxCommandEventHandler (MainFrame::OnChangePasswordMenuItemSelected));
Gui->AppendToMenu (popup, LangString["IDM_CHANGE_PASSWORD"], this, wxCommandEventHandler (MainFrame::OnChangePasswordMenuItemSelected));
popup.AppendSeparator ();
Gui->AppendToMenu (popup, _("Add/Remove Keyfiles to/from Volume..."), this, wxCommandEventHandler (MainFrame::OnChangeKeyfilesMenuItemSelected));
Gui->AppendToMenu (popup, _("Remove All Keyfiles from Volume..."), this, wxCommandEventHandler (MainFrame::OnRemoveKeyfilesMenuItemSelected));
Gui->AppendToMenu (popup, LangString["IDM_ADD_REMOVE_VOL_KEYFILES"], this, wxCommandEventHandler (MainFrame::OnChangeKeyfilesMenuItemSelected));
Gui->AppendToMenu (popup, LangString["IDM_REMOVE_ALL_KEYFILES_FROM_VOL"], this, wxCommandEventHandler (MainFrame::OnRemoveKeyfilesMenuItemSelected));
popup.AppendSeparator ();
Gui->AppendToMenu (popup, _("Change Header Key Derivation Algorithm..."), this, wxCommandEventHandler (MainFrame::OnChangePkcs5PrfMenuItemSelected));
Gui->AppendToMenu (popup, LangString["IDM_CHANGE_SYS_HEADER_KEY_DERIV_ALGO"], this, wxCommandEventHandler (MainFrame::OnChangePkcs5PrfMenuItemSelected));
popup.AppendSeparator ();
Gui->AppendToMenu (popup, _("Backup Volume Header..."), this, wxCommandEventHandler (MainFrame::OnBackupVolumeHeadersMenuItemSelected));
Gui->AppendToMenu (popup, _("Restore Volume Header..."), this, wxCommandEventHandler (MainFrame::OnRestoreVolumeHeaderMenuItemSelected));
Gui->AppendToMenu (popup, LangString["IDM_BACKUP_VOL_HEADER"], this, wxCommandEventHandler (MainFrame::OnBackupVolumeHeadersMenuItemSelected));
Gui->AppendToMenu (popup, LangString["IDM_RESTORE_VOL_HEADER"], this, wxCommandEventHandler (MainFrame::OnRestoreVolumeHeaderMenuItemSelected));
PopupMenu (&popup, VolumeToolsButton->GetPosition().x + 2, VolumeToolsButton->GetPosition().y + 2);
}
@@ -1587,7 +1588,7 @@ namespace VeraCrypt
{
bool mounted = IsMountedSlotSelected();
VolumeButton->SetLabel (mounted ? LangString["DISMOUNT"] : wxString (_("Mount")));
VolumeButton->SetLabel (mounted ? LangString["UNMOUNT_BUTTON"] : LangString["MOUNT_BUTTON"]);
VolumePropertiesButton->Enable (mounted);
DismountVolumeMenuItem->Enable (mounted);

View File

@@ -88,7 +88,7 @@ namespace VeraCrypt
OptionsButton->SetLabel (OptionsButtonLabel + L" >");
OptionsPanel->Show (false);
ProtectionPasswordPanel = new VolumePasswordPanel (OptionsPanel, &options, options.ProtectionPassword, true, options.ProtectionKeyfiles, false, true, true, false, true, true, _("P&assword to hidden volume:"));
ProtectionPasswordPanel = new VolumePasswordPanel (OptionsPanel, &options, options.ProtectionPassword, true, options.ProtectionKeyfiles, false, true, true, false, true, true, LangString["IDT_HIDDEN_PROT_PASSWD"]);
ProtectionPasswordSizer->Add (ProtectionPasswordPanel, 1, wxALL | wxEXPAND);
UpdateDialog();
@@ -143,7 +143,7 @@ namespace VeraCrypt
if (Options.PartitionInSystemEncryptionScope && Options.Password->Size() > VolumePassword::MaxLegacySize)
{
Gui->ShowWarning (StringFormatter (_("System Encryption password is longer than {0} characters."), (int) VolumePassword::MaxLegacySize));
Gui->ShowWarning (StringFormatter (LangString["LINUX_SYSTEM_ENC_PW_LENGTH_NOTE"], (int) VolumePassword::MaxLegacySize));
return;
}

View File

@@ -43,7 +43,7 @@ namespace VeraCrypt
void NewSecurityTokenKeyfileDialog::OnKeyfileNameChanged (wxCommandEvent& event)
{
StdButtonsOK->Enable (!KeyfileNameTextCtrl->GetValue().empty());
OKButton->Enable(!KeyfileNameTextCtrl->GetValue().empty());
event.Skip();
}
}

View File

@@ -135,8 +135,8 @@ namespace VeraCrypt
#ifdef TC_MACOSX
DismountOnScreenSaverCheckBox->Show (false);
DismountOnLogOffCheckBox->SetLabel (_("VeraCrypt quits"));
OpenExplorerWindowAfterMountCheckBox->SetLabel (_("Open Finder window for successfully mounted volume"));
DismountOnLogOffCheckBox->SetLabel (LangString["LINUX_VC_QUITS"]);
OpenExplorerWindowAfterMountCheckBox->SetLabel (LangString["LINUX_OPEN_FINDER"]);
MountRemovableCheckBox->Show (false);
FilesystemSizer->Show (false);
@@ -200,7 +200,7 @@ namespace VeraCrypt
Fit();
Center();
StdButtonsOK->SetDefault();
OKButton->SetDefault();
#ifdef TC_WINDOWS
// Hotkey timer
@@ -302,20 +302,20 @@ namespace VeraCrypt
if (Gui->AskYesNo (LangString["CONFIRM_SETTING_DEGRADES_PERFORMANCE"], true, true))
{
#ifdef TC_LINUX
Gui->ShowWarning (_("Please note that this setting takes effect only if use of the kernel cryptographic services is disabled."));
Gui->ShowWarning (LangString["LINUX_DISABLE_KERNEL_ONLY_SETTING"]);
#endif
}
else
NoHardwareCryptoCheckBox->SetValue (false);
}
Gui->ShowWarning (_("Please note that any currently mounted volumes need to be remounted before they can use this setting."));
Gui->ShowWarning (LangString["LINUX_REMOUNT_BECAUSEOF_SETTING"]);
}
void PreferencesDialog::OnNoKernelCryptoCheckBoxClick (wxCommandEvent& event)
{
if (event.IsChecked())
NoKernelCryptoCheckBox->SetValue (Gui->AskYesNo (_("Disabling the use of kernel cryptographic services can degrade performance.\n\nAre you sure?"), false, true));
NoKernelCryptoCheckBox->SetValue (Gui->AskYesNo (LangString["LINUX_DISABLE_KERNEL_CRYPT_CONFIRM"], false, true));
}
void PreferencesDialog::OnClose (wxCloseEvent& event)
@@ -424,7 +424,7 @@ namespace VeraCrypt
{
#ifdef TC_LINUX
if (!event.IsChecked())
Gui->ShowInfo (_("Please note that disabling this option may have no effect on volumes mounted using kernel cryptographic services."));
Gui->ShowInfo (LangString["LINUX_KERNEL_CRYPT_OPTION_CHANGE_MOUNTED_HINT"]);
#endif
}

File diff suppressed because it is too large Load Diff

View File

@@ -117,7 +117,7 @@ namespace VeraCrypt
page->SetPageTitle (LangString["INTRO_TITLE"]);
page->AddChoice (VolumeHostType::File, LangString["IDC_FILE_CONTAINER"], LangString["IDT_FILE_CONTAINER"], L"introcontainer", LangString["IDC_MORE_INFO_ON_CONTAINERS"]);
page->AddChoice (VolumeHostType::Device, _("Create a volume within a partition/&drive"), _("Formats and encrypts a non-system partition, entire external or secondary drive, entire USB stick, etc."));
page->AddChoice (VolumeHostType::Device, LangString["IDC_NONSYS_DEVICE"], LangString["IDT_NON_SYS_DEVICE"]);
page->SetSelection (SelectedVolumeHostType);
return page;
@@ -138,7 +138,7 @@ namespace VeraCrypt
case Step::VolumeLocation:
{
VolumeLocationWizardPage *page = new VolumeLocationWizardPage (GetPageParent(), SelectedVolumeHostType);
page->SetPageTitle (LangString["VOLUME_LOCATION"]);
page->SetPageTitle (LangString["LOCATION"]);
if (SelectedVolumeType == VolumeType::Hidden)
page->SetPageText (LangString[SelectedVolumeHostType == VolumeHostType::File ? "FILE_HELP_HIDDEN_HOST_VOL" : "DEVICE_HELP_HIDDEN_HOST_VOL"]);
@@ -179,8 +179,8 @@ namespace VeraCrypt
else if (SelectedVolumeType == VolumeType::Hidden)
{
pageTitle = LangString["SIZE_HIDVOL_TITLE"];
pageText = LangString["SIZE_HELP_HIDDEN_VOL"] + L"\n\n" + _("Please note that if your operating system does not allocate files from the beginning of the free space, the maximum possible hidden volume size may be much smaller than the size of the free space on the outer volume. This is not a bug in VeraCrypt but a limitation of the operating system.");
freeSpaceText = StringFormatter (_("Maximum possible hidden volume size for this volume is {0}."), Gui->SizeToString (MaxHiddenVolumeSize));
pageText = LangString["SIZE_HELP_HIDDEN_VOL"] + L"\n\n" + LangString["LINUX_DYNAMIC_NOTICE"];
freeSpaceText = StringFormatter (LangString["LINUX_MAX_HIDDEN_SIZE"], Gui->SizeToString (MaxHiddenVolumeSize));
}
else
{
@@ -246,11 +246,9 @@ namespace VeraCrypt
SingleChoiceWizardPage <bool> *page = new SingleChoiceWizardPage <bool> (GetPageParent(), wxEmptyString, true);
page->SetPageTitle (LangString["FILESYS_PAGE_TITLE"]);
page->AddChoice (false, _("I will not store files larger than 4 GB on the volume"),
_("Choose this option if you do not need to store files larger than 4 GB (4,294,967,296 bytes) on the volume."));
page->AddChoice (true, LangString["UISTR_YES"],LangString["FILESYS_PAGE_HELP_QUESTION"]);
page->AddChoice (true, _("I will store files larger than 4 GB on the volume"),
_("Choose this option if you need to store files larger than 4 GB (4,294,967,296 bytes) on the volume."));
page->AddChoice (false, LangString["UISTR_NO"],LangString["FILESYS_PAGE_HELP_EXPLANATION"]);
page->SetSelection (LargeFilesSupport);
return page;
@@ -264,7 +262,7 @@ namespace VeraCrypt
VolumeFormatOptionsWizardPage *page = new VolumeFormatOptionsWizardPage (GetPageParent(), filesystemSize, SectorSize,
SelectedVolumePath.IsDevice() && (OuterVolume || SelectedVolumeType != VolumeType::Hidden), OuterVolume, LargeFilesSupport);
page->SetPageTitle (_("Format Options"));
page->SetPageTitle (LangString["FORMAT_TITLE"]);
page->SetFilesystemType (SelectedFilesystemType);
if (!OuterVolume && SelectedVolumeType == VolumeType::Hidden)
@@ -277,13 +275,12 @@ namespace VeraCrypt
case Step::CrossPlatformSupport:
{
SingleChoiceWizardPage <bool> *page = new SingleChoiceWizardPage <bool> (GetPageParent(), wxEmptyString, true);
page->SetPageTitle (_("Cross-Platform Support"));
page->SetPageTitle ( LangString["LINUX_CROSS_SUPPORT"]);
page->AddChoice (true, _("I will mount the volume on other platforms"),
_("Choose this option if you need to use the volume on other platforms."));
page->AddChoice (true, LangString["LINUX_CROSS_SUPPORT_OTHER"], LangString["LINUX_CROSS_SUPPORT_OTHER_HELP"]);
page->AddChoice (false, StringFormatter (_("I will mount the volume only on {0}"), SystemInfo::GetPlatformName()),
_("Choose this option if you do not need to use the volume on other platforms."));
page->AddChoice (false, StringFormatter ( LangString["LINUX_CROSS_SUPPORT_ONLY"], SystemInfo::GetPlatformName()),
LangString["LINUX_CROSS_SUPPORT_ONLY_HELP"]);
page->SetSelection (CrossPlatformSupport);
return page;
@@ -312,7 +309,7 @@ namespace VeraCrypt
page->SetPageTitle (LangString["FORMAT_FINISHED_TITLE"]);
page->SetPageText (LangString["FORMAT_FINISHED_HELP"]);
SetCancelButtonText (_("Exit"));
SetCancelButtonText (LangString["IDC_EXIT"]);
return page;
}
@@ -353,13 +350,12 @@ namespace VeraCrypt
DirectoryPath OuterVolumeMountPoint;
};
InfoWizardPage *page = new InfoWizardPage (GetPageParent(), _("Open Outer Volume"),
InfoWizardPage *page = new InfoWizardPage (GetPageParent(), LangString["LINUX_OPEN_OUTER_VOL"],
shared_ptr <Functor> (new OpenOuterVolumeFunctor (MountedOuterVolume->MountPoint)));
page->SetPageTitle (LangString["HIDVOL_HOST_FILLING_TITLE"]);
page->SetPageText (StringFormatter (
_("Outer volume has been successfully created and mounted as '{0}'. To this volume you should now copy some sensitive-looking files that you actually do NOT want to hide. The files will be there for anyone forcing you to disclose your password. You will reveal only the password for this outer volume, not for the hidden one. The files that you really care about will be stored in the hidden volume, which will be created later on. When you finish copying, click Next. Do not dismount the volume.\n\nNote: After you click Next, the outer volume will be analyzed to determine the size of uninterrupted area of free space whose end is aligned with the end of the volume. This area will accommodate the hidden volume, so it will limit its maximum possible size. The procedure ensures no data on the outer volume are overwritten by the hidden volume."),
page->SetPageText (StringFormatter (LangString["LINUX_OUTER_VOL_IS_MOUNTED"],
wstring (MountedOuterVolume->MountPoint)));
return page;
@@ -645,7 +641,7 @@ namespace VeraCrypt
{
if (partition.MountPoint == "/")
{
Gui->ShowError (_("Error: You are trying to encrypt a system drive.\n\nVeraCrypt can encrypt a system drive only under Windows."));
Gui->ShowError (LangString["LINUX_ERROR_TRY_ENCRYPT_SYSTEM_DRIVE"]);
return GetCurrentStep();
}
}
@@ -680,11 +676,11 @@ namespace VeraCrypt
{
if (mountPoint == "/")
{
Gui->ShowError (_("Error: You are trying to encrypt a system partition.\n\nVeraCrypt can encrypt system partitions only under Windows."));
Gui->ShowError (LangString["LINUX_ERROR_TRY_ENCRYPT_SYSTEM_PARTITION"]);
return GetCurrentStep();
}
if (!Gui->AskYesNo (StringFormatter (_("WARNING: Formatting of the device will destroy all data on filesystem '{0}'.\n\nDo you want to continue?"), wstring (mountPoint)), false, true))
if (!Gui->AskYesNo (StringFormatter (LangString["LINUX_WARNING_FORMAT_DESTROY_FS"], wstring (mountPoint)), false, true))
return GetCurrentStep();
try
@@ -694,7 +690,7 @@ namespace VeraCrypt
catch (exception &e)
{
Gui->ShowError (e);
Gui->ShowError (StringFormatter (_("The filesystem of the selected device is currently mounted. Please dismount '{0}' before proceeding."), wstring (mountPoint)));
Gui->ShowError (StringFormatter (LangString["LINUX_MOUNTET_HINT"], wstring (mountPoint)));
return GetCurrentStep();
}
}
@@ -815,7 +811,7 @@ namespace VeraCrypt
//check if they have also the same PIM
if (OuterPim == Pim)
{
Gui->ShowError (_("The Hidden volume can't have the same password, PIM and keyfiles as the Outer volume"));
Gui->ShowError (LangString["LINUX_HIDDEN_PASS_NO_DIFF"]);
return GetCurrentStep();
}
}
@@ -866,7 +862,7 @@ namespace VeraCrypt
//check if they have also the same PIM
if (OuterPim == Pim)
{
Gui->ShowError (_("The Hidden volume can't have the same password, PIM and keyfiles as the Outer volume"));
Gui->ShowError (LangString["LINUX_HIDDEN_PASS_NO_DIFF"]);
return GetCurrentStep();
}
}
@@ -931,11 +927,7 @@ namespace VeraCrypt
{
if (page->GetFilesystemType() != VolumeCreationOptions::FilesystemType::FAT)
{
if (!Gui->AskYesNo (_("WARNING: You have selected a filesystem other than FAT for the outer volume.\n"
"Please Note that in this case VeraCrypt can't calculate the exact maximum allowed size for the hidden volume and it will use only an estimation that can be wrong.\n"
"Thus, it is your responsibility to use an adequate value for the size of the hidden volume so that it doesn\'t overlap the outer volume.\n\n"
"Do you want to continue using the selected filesystem for the outer volume?")
, false, true))
if (!Gui->AskYesNo (LangString["LINUX_CONFIRM_INNER_VOLUME_CALC"], false, true))
{
return GetCurrentStep();
}
@@ -966,7 +958,7 @@ namespace VeraCrypt
}
if (forward && CrossPlatformSupport)
Gui->ShowWarning (StringFormatter (_("Please note that the volume will not be formatted with a FAT filesystem and, therefore, you may be required to install additional filesystem drivers on platforms other than {0}, which will enable you to mount the volume."), SystemInfo::GetPlatformName()));
Gui->ShowWarning (StringFormatter (LangString["LINUX_NOT_FAT_HINT"], SystemInfo::GetPlatformName()));
return Step::CreationProgress;
}
@@ -984,15 +976,15 @@ namespace VeraCrypt
if (OuterVolume && VolumeSize > TC_MAX_FAT_SECTOR_COUNT * SectorSize)
{
uint64 limit = TC_MAX_FAT_SECTOR_COUNT * SectorSize / BYTES_PER_TB;
wstring err = StringFormatter (_("Error: The hidden volume to be created is larger than {0} TB ({1} GB).\n\nPossible solutions:\n- Create a container/partition smaller than {0} TB.\n"), limit, limit * 1024);
wstring err = StringFormatter (LangString["LINUX_ERROR_SIZE_HIDDEN_VOL"], limit, limit * 1024);
if (SectorSize < 4096)
{
err += _("- Use a drive with 4096-byte sectors to be able to create partition/device-hosted hidden volumes up to 16 TB in size");
err += LangString["LINUX_MAX_SIZE_HINT"];
#if defined (TC_LINUX)
err += _(".\n");
err += LangString["LINUX_DOT_LF"];
#else
err += _(" (not supported by components available on this platform).\n");
err += LangString["LINUX_NOT_SUPPORTED"];
#endif
}
@@ -1004,7 +996,7 @@ namespace VeraCrypt
{
wxString confirmMsg = LangString["OVERWRITEPROMPT_DEVICE"];
if (!Gui->AskYesNo (wxString::Format (confirmMsg, wxString (_("DEVICE")).c_str(), wstring (SelectedVolumePath).c_str(), L""), false, true))
if (!Gui->AskYesNo (wxString::Format (confirmMsg, wxString (LangString["DEVICE"]).c_str(), wstring (SelectedVolumePath).c_str(), L""), false, true))
return GetCurrentStep();
}
else if (FilesystemPath (wstring (SelectedVolumePath)).IsFile())

View File

@@ -20,9 +20,7 @@ namespace VeraCrypt
VolumeFormatOptionsWizardPage::VolumeFormatOptionsWizardPage (wxPanel* parent, uint64 filesystemSize, uint32 sectorSize, bool enableQuickFormatButton, bool disableNoneFilesystem, bool disable32bitFilesystems)
: VolumeFormatOptionsWizardPageBase (parent)
{
InfoStaticText->SetLabel (_(
"In order to enable your operating system to mount your new volume, it has to be formatted with a filesystem. Please select a filesystem type.\n\nIf your volume is going to be hosted on a device or partition, you can use 'Quick format' to skip encryption of free space of the volume."));
InfoStaticText->SetLabel ( LangString["QUICK_FORMAT_HELP"] );
if (!disableNoneFilesystem)
FilesystemTypeChoice->Append (LangString["NONE"], (void *) VolumeCreationOptions::FilesystemType::None);

View File

@@ -89,7 +89,7 @@ namespace VeraCrypt
Fit();
Center();
StdButtonsOK->SetDefault();
OKButton->SetDefault();
}
void VolumePropertiesDialog::AppendToList (const string &name, const wxString &value)

View File

@@ -52,13 +52,13 @@ namespace VeraCrypt
wxString drive = wxFileName (wstring (volumePath)).GetVolume();
if (!drive.empty())
{
FreeSpaceStaticText->SetLabel (StringFormatter (_("Free space on drive {0}: is {1}."),
FreeSpaceStaticText->SetLabel (StringFormatter (LangString["LINUX_FREE_SPACE_ON_DRIVE"],
drive, Gui->SizeToString (diskSpace.GetValue())));
}
else
#endif
{
FreeSpaceStaticText->SetLabel (StringFormatter (_("Free space available: {0}"),
FreeSpaceStaticText->SetLabel (StringFormatter (LangString["DISK_FREE"],
Gui->SizeToString (diskSpace.GetValue())));
}
}

View File

@@ -13,6 +13,7 @@
#include "Main/Main.h"
#include "Main/Application.h"
#include <wx/msgqueue.h>
#include <wx/msgdlg.h>
namespace VeraCrypt
{
@@ -165,7 +166,7 @@ namespace VeraCrypt
void OnAdminPasswordRequest(wxCommandEvent &)
{
wxPasswordEntryDialog dialog (this, _("Enter your user password or administrator password:"), _("Administrator privileges required"));
wxPasswordEntryDialog dialog (this, LangString["LINUX_ADMIN_PW_QUERY"], LangString["LINUX_ADMIN_PW_QUERY_TITLE"]);
if (dialog.ShowModal() != wxID_OK)
m_queue.Post(wxT(""));
else
@@ -196,8 +197,9 @@ namespace VeraCrypt
pParam->m_style |= wxSTAY_ON_TOP;
}
int iResult = wxMessageBox (pParam->m_message, pParam->m_caption, pParam->m_style, this);
wxMessageDialog cur(this, pParam->m_message, pParam->m_caption, pParam->m_style);
cur.SetYesNoLabels(LangString["UISTR_YES"], LangString["UISTR_NO"]);
int iResult = (cur.ShowModal() == wxID_YES ? wxYES : wxNO);
delete pParam;
m_queue.Post(wxString::Format(wxT("%d"), iResult));
}

View File

@@ -100,7 +100,7 @@ namespace VeraCrypt
void WizardFrame::SetCancelButtonText (const wxString &text)
{
CancelButton->SetLabel (text.empty() ? wxString (_("Cancel")) : text);
CancelButton->SetLabel (text.empty() ? wxString (LangString["IDC_ABORT_BUTTON"]) : text);
}
void WizardFrame::SetImage (const wxBitmap &bitmap)
@@ -167,7 +167,7 @@ namespace VeraCrypt
wxString nextButtonText = CurrentPage->GetNextButtonText();
if (nextButtonText.empty())
NextButton->SetLabel (_("&Next >"));
NextButton->SetLabel (_("NEXT"));
else
NextButton->SetLabel (nextButtonText);

View File

@@ -0,0 +1,6 @@
#ifdef TC_LINUX
#include "Main/LanguageStrings.h"
#undef _
#define _(key) LangString[key]
#endif

View File

@@ -58,7 +58,7 @@ namespace VeraCrypt
#ifdef TC_MACOSX
g_customIdCmdV = wxNewId();
g_customIdCmdA = wxNewId();
wxApp::s_macHelpMenuTitleName = _("&Help");
wxApp::s_macHelpMenuTitleName = LangString["MENU_HELP"];
#endif
}
@@ -466,7 +466,7 @@ namespace VeraCrypt
}
else
{
wxPasswordEntryDialog dialog (Gui->GetActiveWindow(), _("Enter your user password or administrator password:"), _("Administrator privileges required"));
wxPasswordEntryDialog dialog (Gui->GetActiveWindow(), LangString["LINUX_ADMIN_PW_QUERY"], LangString["LINUX_ADMIN_PW_QUERY_TITLE"]);
if (dialog.ShowModal() != wxID_OK)
throw UserAbort (SRC_POS);
sValue = dialog.GetValue();
@@ -885,7 +885,7 @@ namespace VeraCrypt
#ifdef TC_LINUX
if (volume && !Preferences.NonInteractive && !Preferences.DisableKernelEncryptionModeWarning
&& volume->EncryptionModeName != L"XTS"
&& !AskYesNo (LangString["ENCRYPTION_MODE_NOT_SUPPORTED_BY_KERNEL"] + _("\n\nDo you want to show this message next time you mount such a volume?"), true, true))
&& !AskYesNo (LangString["ENCRYPTION_MODE_NOT_SUPPORTED_BY_KERNEL"] + LangString["LINUX_MESSAGE_ON_MOUNT_AGAIN"], true, true))
{
UserPreferences prefs = GetPreferences();
prefs.DisableKernelEncryptionModeWarning = true;
@@ -986,7 +986,7 @@ namespace VeraCrypt
if (write (showFifo, buf, 1) == 1)
{
close (showFifo);
Gui->ShowInfo (_("VeraCrypt is already running."));
Gui->ShowInfo (LangString["LINUX_VC_RUNNING_ALREADY"]);
Application::SetExitCode (0);
return false;
}
@@ -1018,7 +1018,7 @@ namespace VeraCrypt
wxLog::FlushActive();
Application::SetExitCode (1);
Gui->ShowInfo (_("VeraCrypt is already running."));
Gui->ShowInfo (LangStrin["LINUX_VC_RUNNING_ALREADY"]);
return false;
#endif
}
@@ -1887,9 +1887,9 @@ namespace VeraCrypt
else
{
if (style & wxICON_EXCLAMATION)
caption = wxString (_("Warning")) + L':';
caption = wxString (LangString["LINUX_WARNING"]) + L':';
else if (style & wxICON_ERROR || style & wxICON_HAND)
caption = wxString (_("Error")) + L':';
caption = wxString (LangString["LINUX_ERROR"]) + L':';
else
caption.clear();
}
@@ -1907,8 +1907,9 @@ namespace VeraCrypt
style |= wxSTAY_ON_TOP;
}
return wxMessageBox (subMessage, caption, style, GetActiveWindow());
wxMessageDialog cur(GetActiveWindow(), subMessage, caption, style);
cur.SetYesNoLabels(LangString["UISTR_YES"], LangString["UISTR_NO"]);
return (cur.ShowModal() == wxID_YES ? wxYES : wxNO) ;
}
}
@@ -1923,7 +1924,7 @@ namespace VeraCrypt
void GraphicUserInterface::ThrowTextModeRequired () const
{
Gui->ShowError (_("This feature is currently supported only in text mode."));
Gui->ShowError (LangString["LINUX_ONLY_TEXTMODE"]);
throw UserAbort (SRC_POS);
}

View File

@@ -40,43 +40,28 @@ namespace VeraCrypt
void LanguageStrings::Init ()
{
#ifdef TC_LINUX
static byte LanguageXml[] =
{
# include "Common/Language.xml.h"
, 0
};
string def = string ((const char*) LanguageXml);
foreach (XmlNode node, XmlParser (def).GetNodes (L"entry"))
{
wxString text = node.InnerText;
text.Replace (L"\\n", L"\n");
text.Replace (L"%s", L"{0}");
Map[StringConverter::ToSingle (wstring (node.Attributes[L"key"]))] = text;
}
#endif
foreach (XmlNode node, XmlParser (Resources::GetLanguageXml()).GetNodes (L"entry"))
{
wxString text = node.InnerText;
text.Replace (L"\\n", L"\n");
text.Replace (L"%s", L"{0}");
Map[StringConverter::ToSingle (wstring (node.Attributes[L"key"]))] = text;
}
Map["EXCEPTION_OCCURRED"] = _("Exception occurred");
Map["MOUNT"] = _("Mount");
Map["MOUNT_POINT"] = _("Mount Directory");
Map["NO"] = _("No");
Map["NO_VOLUMES_MOUNTED"] = _("No volumes mounted.");
Map["OPEN_NEW_VOLUME"] = _("Specify a New VeraCrypt Volume");
Map["PARAMETER_INCORRECT"] = _("Parameter incorrect");
Map["SELECT_KEYFILES"] = _("Select Keyfiles");
Map["START_TC"] = _("Start VeraCrypt");
Map["VOLUME_ALREADY_MOUNTED"] = _("The volume \"{0}\" is already mounted.");
Map["UNKNOWN_OPTION"] = _("Unknown option");
Map["VOLUME_LOCATION"] = _("Volume Location");
Map["YES"] = _("Yes");
Map["VOLUME_HOST_IN_USE"] = _("WARNING: The host file/device \"{0}\" is already in use!\n\nIgnoring this can cause undesired results including system instability. All applications that might be using the host file/device should be closed before mounting the volume.\n\nContinue mounting?");
Map["VIRTUAL_DEVICE"] = _("Virtual Device");
Map["CONFIRM_BACKGROUND_TASK_DISABLED"] = _("WARNING: If the VeraCrypt Background Task is disabled, the following functions, depending on the platform, will be disabled whenever you exit VeraCrypt:\n\n1) Auto-dismount (e.g., upon logoff, time-out, etc.)\n2) Notifications (e.g., when damage to hidden volume is prevented)\n3) Tray icon\n\nNote: You may shut down the Background Task anytime by right-clicking the VeraCrypt tray icon and selecting 'Exit'.\n\nAre you sure you want to disable the VeraCrypt Background Task?");
Map["CONFIRM_EXIT"] = _("WARNING: If VeraCrypt exits now, the following functions, depending on the platform, will be disabled:\n\n1) Auto-dismount (e.g., upon logoff, time-out, etc.)\n2) Notifications (e.g., when damage to hidden volume is prevented)\n3) Tray icon\n\nNote: If you do not wish VeraCrypt to continue running in background after you close its window, disable the Background Task in the Preferences.\n\nAre you sure you want VeraCrypt to exit?");
Map["DAMAGE_TO_HIDDEN_VOLUME_PREVENTED"] = _("WARNING: Data were attempted to be saved to the hidden volume area of the volume \"{0}\"!\n\nVeraCrypt prevented these data from being saved in order to protect the hidden volume. This may have caused filesystem corruption on the outer volume and the operating system may have reported a write error (\"Delayed Write Failed\", \"The parameter is incorrect\", etc.). The entire volume (both the outer and the hidden part) will be write-protected until it is dismounted.\n\nWe strongly recommend that you restart the operating system now.");
Map["ENTER_PASSWORD"] = _("Enter password");
Map["ENTER_PASSWORD_FOR"] = _("Enter password for \"{0}\"");
Map["ENTER_TC_VOL_PASSWORD"] = _("Enter VeraCrypt Volume Password");
Map["SELECT_KEYFILE_PATH"] = _("Select Keyfile Search Path");
Map["MORE_INFO_ABOUT"] = _("More information on {0}");
Map["TWO_LAYER_CASCADE_HELP"] = _("Two ciphers in a cascade operating in XTS mode. Each block is first encrypted with {0} ({1}-bit key) and then with {2} ({3}-bit key). Each cipher uses its own key. All keys are mutually independent.");
Map["THREE_LAYER_CASCADE_HELP"] = _("Three ciphers in a cascade operating in XTS mode. Each block is first encrypted with {0} ({1}-bit key), then with {2} ({3}-bit key), and finally with {4} ({5}-bit key). Each cipher uses its own key. All keys are mutually independent.");
Map["CHECKING_FS"] = _("Checking the file system on the VeraCrypt volume mounted as {0}...");
Map["REPAIRING_FS"] = _("Attempting to repair the file system on the VeraCrypt volume mounted as {0}...");
Map["UNMOUNT_LOCK_FAILED"] = _("Volume \"{0}\" contains files or folders being used by applications or system.\n\nForce dismount?");
Map["VOLUME_SIZE_HELP"] = _("Please specify the size of the container to create. Note that the minimum possible size of a volume is 292 KiB.");
Map["ENCRYPTION_MODE_NOT_SUPPORTED_BY_KERNEL"] = _("The volume you have mounted uses a mode of operation that is not supported by the Linux kernel. You may experience slow performance when using this volume. To achieve full performance, you should move the data from this volume to a new volume created by VeraCrypt 5.0 or later.");
}
LanguageStrings LangString;

View File

@@ -250,6 +250,8 @@ prepare: $(APPNAME)
chmod +x $(BASE_DIR)/Setup/Linux/usr/bin/$(APPNAME)-uninstall.sh
cp $(BASE_DIR)/License.txt $(BASE_DIR)/Setup/Linux/usr/share/doc/$(APPNAME)/License.txt
cp $(BASE_DIR)/../doc/html/* "$(BASE_DIR)/Setup/Linux/usr/share/doc/$(APPNAME)/HTML"
mkdir -p $(BASE_DIR)/Setup/Linux/usr/share/veracrypt/languages
cp -r $(BASE_DIR)/../Translations/* $(BASE_DIR)/Setup/Linux/usr/share/veracrypt/languages/
ifndef TC_NO_GUI
mkdir -p $(BASE_DIR)/Setup/Linux/usr/share/applications

View File

@@ -14,6 +14,12 @@
#include "Platform/Platform.h"
#include "Resources.h"
#ifdef TC_LINUX
#include "Platform/File.h"
#include "Platform/StringConverter.h"
#include <stdio.h>
#endif
#ifdef TC_WINDOWS
#include "Main/resource.h"
#endif
@@ -48,6 +54,79 @@ namespace VeraCrypt
strBuf.Zero();
strBuf.CopyFrom (res);
return string (reinterpret_cast <char *> (strBuf.Ptr()));
#elif TC_LINUX
// get language from env LANG
// support: C,POSIX,
// support for e.g. german: de_DE.UTF-8, de.UTF8, de_DE, de
// not support e.g.: de@Euro
string defaultLang("en");
string filenamePrefix("/usr/share/veracrypt/languages/Language.");
string filenamePost(".xml");
string filename = filenamePrefix + defaultLang + filenamePost;
if(const char* env_p = std::getenv("LANG")){
string lang(env_p);
std::cout << lang << std::endl;
if ( lang.size() > 1 ){
int found = lang.find(".");
if ( found > 1 ){
string langTag = lang.substr (0,found);
string lowerLangTag(StringConverter::ToLower (langTag) );
int foundUnderscore = lowerLangTag.find("_");
if ( foundUnderscore > 0 ) {
lowerLangTag.replace(foundUnderscore,1,1,'-');
filename = filenamePrefix + lowerLangTag + filenamePost;
FilesystemPath xml(filename);
if (! xml.IsFile()){
string shortLangTag = lowerLangTag.substr(0,foundUnderscore);
filename = filenamePrefix + shortLangTag + filenamePost;
FilesystemPath xml(filename);
if (! xml.IsFile()){
filename = filenamePrefix + defaultLang + filenamePost;
}
}
}else{
filename = filenamePrefix + langTag + filenamePost;
FilesystemPath xml(filename);
if (! xml.IsFile()){
filename = filenamePrefix + defaultLang + filenamePost;
}
}
}else{
string lowerLang(StringConverter::ToLower (lang) );
filename = filenamePrefix + lowerLang + filenamePost;
FilesystemPath xml(filename);
if (! xml.IsFile()){
int foundUnderscore = lowerLang.find("_");
if ( foundUnderscore > 0 ) {
lowerLang.replace(foundUnderscore,1,1,'-');
filename = filenamePrefix + lowerLang + filenamePost;
FilesystemPath xml(filename);
if (! xml.IsFile()){
filename = filenamePrefix + defaultLang + filenamePost;
}
}
}
}
}
}
FilesystemPath xml(filename);
if ( xml.IsFile() ){
File file;
file.Open (xml, File::OpenRead, File::ShareRead);
vector <byte> keyfileData (file.Length());
BufferPtr keyfileDataBuf (&keyfileData.front(), keyfileData.size());
file.ReadCompleteBuffer (keyfileDataBuf);
file.Close();
string langxml(keyfileData.begin(), keyfileData.end());
return langxml;
}
static byte LanguageXml[] =
{
# include "Common/Language.xml.h"
, 0
};
return string ((const char*) LanguageXml);
#else
static byte LanguageXml[] =
{

View File

@@ -238,7 +238,7 @@ namespace VeraCrypt
while (true)
{
wxString s = AskString (StringFormatter (L"{0} (y={1}/n={2}) [{3}]: ",
message, LangString["YES"], LangString["NO"], LangString[defaultYes ? "YES" : "NO"]));
message, LangString["UISTR_YES"], LangString["UISTR_NO"], LangString[defaultYes ? "UISTR_YES" : "UISTR_NO"]));
if (s.IsSameAs (L'n', false) || s.IsSameAs (L"no", false) || (!defaultYes && s.empty()))
return false;

View File

@@ -54,7 +54,7 @@ namespace VeraCrypt
if (!Preferences.NonInteractive)
{
if (!SystemInfo::IsVersionAtLeast (2, 6, 24))
ShowWarning (_("Your system uses an old version of the Linux kernel.\n\nDue to a bug in the Linux kernel, your system may stop responding when writing data to a VeraCrypt volume. This problem can be solved by upgrading the kernel to version 2.6.24 or later."));
ShowWarning (LangString["LINUX_KERNEL_OLD"]);
}
#endif // TC_LINUX
}
@@ -212,7 +212,7 @@ namespace VeraCrypt
{
if (!message.IsEmpty())
message += L'\n';
message += StringFormatter (_("Volume \"{0}\" has been dismounted."), wstring (volume->Path));
message += StringFormatter (LangString["LINUX_VOL_DISMOUNTED"], wstring (volume->Path));
}
}
@@ -247,7 +247,7 @@ namespace VeraCrypt
foreach_ref (const VolumeInfo &volume, volumes)
{
prop << _("Slot") << L": " << StringConverter::FromNumber (volume.SlotNumber) << L'\n';
prop << LangString["TOKEN_SLOT_ID"] << L": " << StringConverter::FromNumber (volume.SlotNumber) << L'\n';
prop << LangString["VOLUME"] << L": " << wstring (volume.Path) << L'\n';
#ifndef TC_WINDOWS
prop << LangString["VIRTUAL_DEVICE"] << L": " << wstring (volume.VirtualDevice) << L'\n';
@@ -355,7 +355,7 @@ namespace VeraCrypt
// bad_alloc
const bad_alloc *outOfMemory = dynamic_cast <const bad_alloc *> (&ex);
if (outOfMemory)
return _("Out of memory.");
return LangString["LINUX_OOM"];
// Unresolved exceptions
string typeName (StringConverter::GetTypeName (typeid (ex)));
@@ -384,12 +384,12 @@ namespace VeraCrypt
// ElevationFailed
if (dynamic_cast <const ElevationFailed*> (&ex))
errOutput += wxString (_("Failed to obtain administrator privileges")) + (StringConverter::Trim (execEx->GetErrorOutput()).empty() ? L". " : L": ");
errOutput += wxString (LangString["LINUX_CANT_GET_ADMIN_PRIV"]) + (StringConverter::Trim (execEx->GetErrorOutput()).empty() ? L". " : L": ");
errOutput += StringConverter::ToWide (execEx->GetErrorOutput());
if (errOutput.empty())
return errOutput + StringFormatter (_("Command \"{0}\" returned error {1}."), execEx->GetCommand(), execEx->GetExitCode());
return errOutput + StringFormatter (LangString["LINUX_COMMAND_GET_ERROR"], execEx->GetCommand(), execEx->GetExitCode());
return wxString (errOutput).Trim (true);
}
@@ -406,7 +406,7 @@ namespace VeraCrypt
if (Keyfile::WasHiddenFilePresentInKeyfilePath())
{
#ifdef TC_UNIX
message += _("\n\nWarning: Hidden files are present in a keyfile path. If you need to use them as keyfiles, remove the leading dot from their filenames. Hidden files are visible only if enabled in system options.");
message += LangString["LINUX_HIDDEN_FILES_PRESENT_IN_KEYFILE_PATH"];
#else
message += LangString["HIDDEN_FILES_PRESENT_IN_KEYFILE_PATH"];
#endif
@@ -442,60 +442,61 @@ namespace VeraCrypt
wxString UserInterface::ExceptionTypeToString (const std::type_info &ex)
{
#define EX2MSG(exception, message) do { if (ex == typeid (exception)) return (message); } while (false)
EX2MSG (DriveLetterUnavailable, LangString["DRIVE_LETTER_UNAVAILABLE"]);
EX2MSG (DeviceSectorSizeMismatch, _("Storage device and VC volume sector size mismatch"));
EX2MSG (EncryptedSystemRequired, _("This operation must be performed only when the system hosted on the volume is running."));
EX2MSG (DeviceSectorSizeMismatch, LangString["LINUX_EX2MSG_DEVICESECTORSIZEMISMATCH"]);
EX2MSG (EncryptedSystemRequired, LangString["LINUX_EX2MSG_ENCRYPTEDSYSTEMREQUIRED"]);
EX2MSG (ExternalException, LangString["EXCEPTION_OCCURRED"]);
EX2MSG (InsufficientData, _("Not enough data available."));
EX2MSG (InsufficientData, LangString["LINUX_EX2MSG_INSUFFICIENTDATA"]);
EX2MSG (InvalidSecurityTokenKeyfilePath, LangString["INVALID_TOKEN_KEYFILE_PATH"]);
EX2MSG (HigherVersionRequired, LangString["NEW_VERSION_REQUIRED"]);
EX2MSG (KernelCryptoServiceTestFailed, _("Kernel cryptographic service test failed. The cryptographic service of your kernel most likely does not support volumes larger than 2 TB.\n\nPossible solutions:\n- Upgrade the Linux kernel to version 2.6.33 or later.\n- Disable use of the kernel cryptographic services (Settings > Preferences > System Integration) or use 'nokernelcrypto' mount option on the command line."));
EX2MSG (KernelCryptoServiceTestFailed, LangString["LINUX_EX2MSG_KERNELCRYPTOSERVICETESTFAILED"]);
EX2MSG (KeyfilePathEmpty, LangString["ERR_KEYFILE_PATH_EMPTY"]);
EX2MSG (LoopDeviceSetupFailed, _("Failed to set up a loop device."));
EX2MSG (MissingArgument, _("A required argument is missing."));
EX2MSG (MissingVolumeData, _("Volume data missing."));
EX2MSG (MountPointRequired, _("Mount point required."));
EX2MSG (MountPointUnavailable, _("Mount point is already in use."));
EX2MSG (LoopDeviceSetupFailed, LangString["LINUX_EX2MSG_LOOPDEVICESETUPFAILED"]);
EX2MSG (MissingArgument, LangString["LINUX_EX2MSG_MISSINGARGUMENT"]);
EX2MSG (MissingVolumeData, LangString["LINUX_EX2MSG_MISSINGVOLUMEDATA"]);
EX2MSG (MountPointRequired, LangString["LINUX_EX2MSG_MOUNTPOINTREQUIRED"]);
EX2MSG (MountPointUnavailable, LangString["LINUX_EX2MSG_MOUNTPOINTUNAVAILABLE"]);
EX2MSG (NoDriveLetterAvailable, LangString["NO_FREE_DRIVES"]);
EX2MSG (PasswordEmpty, _("No password or keyfile specified."));
EX2MSG (PasswordEmpty, LangString["LINUX_EX2MSG_PASSWORDEMPTY"]);
EX2MSG (PasswordIncorrect, LangString["PASSWORD_WRONG"]);
EX2MSG (PasswordKeyfilesIncorrect, LangString["PASSWORD_OR_KEYFILE_WRONG"]);
EX2MSG (PasswordOrKeyboardLayoutIncorrect, LangString["PASSWORD_OR_KEYFILE_WRONG"] + _("\n\nNote that pre-boot authentication passwords need to be typed in the pre-boot environment where non-US keyboard layouts are not available. Therefore, pre-boot authentication passwords must always be typed using the standard US keyboard layout (otherwise, the password will be typed incorrectly in most cases). However, note that you do NOT need a real US keyboard; you just need to change the keyboard layout in your operating system."));
EX2MSG (PasswordOrMountOptionsIncorrect, LangString["PASSWORD_OR_KEYFILE_OR_MODE_WRONG"] + _("\n\nNote: If you are attempting to mount a partition located on an encrypted system drive without pre-boot authentication or to mount the encrypted system partition of an operating system that is not running, you can do so by selecting 'Options >' > 'Mount partition using system encryption'."));
EX2MSG (PasswordTooLong, StringFormatter (_("Password is longer than {0} characters."), (int) VolumePassword::MaxSize));
EX2MSG (PasswordOrKeyboardLayoutIncorrect, LangString["PASSWORD_OR_KEYFILE_WRONG"] + LangString["LINUX_EX2MSG_PASSWORDORKEYBOARDLAYOUTINCORRECT"]);
EX2MSG (PasswordOrMountOptionsIncorrect, LangString["PASSWORD_OR_KEYFILE_OR_MODE_WRONG"] + LangString["LINUX_EX2MSG_PASSWORDORMOUNTOPTIONSINCORRECT"]);
EX2MSG (PasswordTooLong, StringFormatter (LangString["LINUX_EX2MSG_PASSWORDTOOLONG"], (int) VolumePassword::MaxSize));
EX2MSG (PasswordUTF8TooLong, LangString["PASSWORD_UTF8_TOO_LONG"]);
EX2MSG (PasswordLegacyUTF8TooLong, LangString["LEGACY_PASSWORD_UTF8_TOO_LONG"]);
EX2MSG (PasswordUTF8Invalid, LangString["PASSWORD_UTF8_INVALID"]);
EX2MSG (PartitionDeviceRequired, _("Partition device required."));
EX2MSG (ProtectionPasswordIncorrect, _("Incorrect password to the protected hidden volume or the hidden volume does not exist."));
EX2MSG (ProtectionPasswordKeyfilesIncorrect,_("Incorrect keyfile(s) and/or password to the protected hidden volume or the hidden volume does not exist."));
EX2MSG (PartitionDeviceRequired, LangString["LINUX_EX2MSG_PARTITIONDEVICEREQUIRED"]);
EX2MSG (ProtectionPasswordIncorrect, LangString["LINUX_EX2MSG_PROTECTIONPASSWORDINCORRECT"]);
EX2MSG (ProtectionPasswordKeyfilesIncorrect, LangString["LINUX_EX2MSG_PROTECTIONPASSWORDKEYFILESINCORRECT"]);
EX2MSG (RootDeviceUnavailable, LangString["NODRIVER"]);
EX2MSG (SecurityTokenKeyfileAlreadyExists, LangString["TOKEN_KEYFILE_ALREADY_EXISTS"]);
EX2MSG (SecurityTokenKeyfileNotFound, LangString["TOKEN_KEYFILE_NOT_FOUND"]);
EX2MSG (SecurityTokenLibraryNotInitialized, LangString["PKCS11_MODULE_INIT_FAILED"]);
EX2MSG (StringConversionFailed, _("Invalid characters encountered."));
EX2MSG (StringFormatterException, _("Error while parsing formatted string."));
EX2MSG (TemporaryDirectoryFailure, _("Failed to create a file or directory in a temporary directory.\n\nPlease make sure that the temporary directory exists, its security permissions allow you to access it, and there is sufficient disk space."));
EX2MSG (StringConversionFailed, LangString["LINUX_EX2MSG_STRINGCONVERSIONFAILED"]);
EX2MSG (StringFormatterException, LangString["LINUX_EX2MSG_STRINGFORMATTEREXCEPTION"]);
EX2MSG (TemporaryDirectoryFailure, LangString["LINUX_EX2MSG_TEMPORARYDIRECTORYFAILURE"]);
EX2MSG (UnportablePassword, LangString["UNSUPPORTED_CHARS_IN_PWD"]);
#if defined (TC_LINUX)
EX2MSG (UnsupportedSectorSize, LangString["SECTOR_SIZE_UNSUPPORTED"]);
EX2MSG (UnsupportedSectorSizeHiddenVolumeProtection, _("Error: The drive uses a sector size other than 512 bytes.\n\nDue to limitations of components available on your platform, outer volumes hosted on the drive cannot be mounted using hidden volume protection.\n\nPossible solutions:\n- Use a drive with 512-byte sectors.\n- Create a file-hosted volume (container) on the drive.\n- Backup the contents of the hidden volume and then update the outer volume."));
EX2MSG (UnsupportedSectorSizeNoKernelCrypto, _("Error: The drive uses a sector size other than 512 bytes.\n\nDue to limitations of components available on your platform, partition/device-hosted volumes on the drive can only be mounted using kernel cryptographic services.\n\nPossible solutions:\n- Enable use of the kernel cryptographic services (Preferences > System Integration).\n- Use a drive with 512-byte sectors.\n- Create a file-hosted volume (container) on the drive."));
EX2MSG (UnsupportedSectorSizeHiddenVolumeProtection, LangString["LINUX_EX2MSG_UNSUPPORTEDSECTORSIZEHIDDENVOLUMEPROTECTION"]);
EX2MSG (UnsupportedSectorSizeNoKernelCrypto, LangString["LINUX_EX2MSG_UNSUPPORTEDSECTORSIZENOKERNELCRYPTO"]);
#else
EX2MSG (UnsupportedSectorSize, _("Error: The drive uses a sector size other than 512 bytes.\n\nDue to limitations of components available on your platform, partition/device-hosted volumes cannot be created/used on the drive.\n\nPossible solutions:\n- Create a file-hosted volume (container) on the drive.\n- Use a drive with 512-byte sectors.\n- Use VeraCrypt on another platform."));
EX2MSG (UnsupportedSectorSize, LangString["LINUX_EX2MSG_UNSUPPORTEDSECTORSIZE"]);
#endif
EX2MSG (VolumeAlreadyMounted, LangString["VOL_ALREADY_MOUNTED"]);
EX2MSG (VolumeEncryptionNotCompleted, LangString["ERR_ENCRYPTION_NOT_COMPLETED"]);
EX2MSG (VolumeHostInUse, _("The host file/device is already in use."));
EX2MSG (VolumeSlotUnavailable, _("Volume slot unavailable."));
EX2MSG (VolumeHostInUse, LangString["LINUX_EX2MSG_VOLUMEHOSTINUSE"]);
EX2MSG (VolumeSlotUnavailable, LangString["LINUX_EX2MSG_VOLUMESLOTUNAVAILABLE"]);
EX2MSG (UnsupportedAlgoInTrueCryptMode, LangString["ALGO_NOT_SUPPORTED_FOR_TRUECRYPT_MODE"]);
EX2MSG (UnsupportedTrueCryptFormat, LangString["UNSUPPORTED_TRUECRYPT_FORMAT"]);
#ifdef TC_MACOSX
EX2MSG (HigherFuseVersionRequired, _("VeraCrypt requires OSXFUSE 2.5 or above."));
EX2MSG (HigherFuseVersionRequired, LangString["LINUX_EX2MSG_HIGHERFUSEVERSIONREQUIRED"]);
#endif
#undef EX2MSG
@@ -800,7 +801,7 @@ namespace VeraCrypt
}
catch (...)
{
ShowError (_("Unknown exception occurred."));
ShowError (LangString["LINUX_UNKNOWN_EXC_OCCURRED"]);
}
Yield();
@@ -1007,7 +1008,7 @@ namespace VeraCrypt
{
if (!message.IsEmpty())
message += L'\n';
message += StringFormatter (_("Volume \"{0}\" has been mounted."), wstring (volume.Path));
message += StringFormatter (LangString["LINUX_VOL_DISMOUNTED"], wstring (volume.Path));
}
ShowInfo (message);
}
@@ -1326,7 +1327,7 @@ namespace VeraCrypt
#ifndef TC_NO_GUI
if (Application::GetUserInterfaceType() == UserInterfaceType::Graphic)
{
wxDialog dialog (nullptr, wxID_ANY, _("VeraCrypt Command Line Help"), wxDefaultPosition);
wxDialog dialog (nullptr, wxID_ANY, LangString["LINUX_CMD_HELP"], wxDefaultPosition);
wxTextCtrl *textCtrl = new wxTextCtrl (&dialog, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY);
textCtrl->SetFont (wxFont (wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, L"Courier"));
@@ -1338,7 +1339,7 @@ namespace VeraCrypt
wxBoxSizer *sizer = new wxBoxSizer (wxVERTICAL);
sizer->Add (textCtrl, 1, wxALL | wxEXPAND, 5);
sizer->Add (new wxButton (&dialog, wxID_OK, _("OK")), 0, wxALL | wxALIGN_CENTER_HORIZONTAL, 5);
sizer->Add (new wxButton (&dialog, wxID_OK, LangString["IDOK"]), 0, wxALL | wxALIGN_CENTER_HORIZONTAL, 5);
dialog.SetSizer (sizer);
dialog.Layout();