1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2026-07-06 13:08:00 -05: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
+79
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[] =
{