Merge branch 'master' of https://bitbucket.org/Souryo/mesen into russian

This commit is contained in:
Matich 2016-07-20 12:53:37 +03:00
commit 94499a94a1
5 changed files with 32 additions and 24 deletions

View file

@ -198,7 +198,8 @@ enum class Language
SystemDefault = 0,
English = 1,
French = 2,
Japanese = 3
Japanese = 3,
Russian = 4
};
enum class StereoFilter

View file

@ -204,42 +204,37 @@ string MessageManager::Localize(string key)
case Language::English: resources = &_enResources; break;
case Language::French: resources = &_frResources; break;
case Language::Japanese: resources = &_jaResources; break;
case Language::Russian: resources = &_enResources; break;
}
if(resources) {
if(resources->find(key) != resources->end()) {
return (*resources)[key];
} else if(EmulationSettings::GetDisplayLanguage() != Language::English) {
//Fallback on English if resource key is missing another language
resources = &_enResources;
if(resources->find(key) != resources->end()) {
return (*resources)[key];
}
}
}
return "";
return key;
}
void MessageManager::DisplayMessage(string title, string message, string param1, string param2)
{
if(MessageManager::_messageManager) {
std::unordered_map<string, string> *resources = nullptr;
switch(EmulationSettings::GetDisplayLanguage()) {
case Language::English: resources = &_enResources; break;
case Language::French: resources = &_frResources; break;
case Language::Japanese: resources = &_jaResources; break;
title = Localize(title);
message = Localize(message);
size_t startPos = message.find(u8"%1");
if(startPos != std::string::npos) {
message.replace(startPos, 2, param1);
}
if(resources) {
if(resources->find(title) != resources->end()) {
title = (*resources)[title];
}
if(resources->find(message) != resources->end()) {
message = (*resources)[message];
size_t startPos = message.find(u8"%1");
if(startPos != std::string::npos) {
message.replace(startPos, 2, param1);
}
startPos = message.find(u8"%2");
if(startPos != std::string::npos) {
message.replace(startPos, 2, param2);
}
}
startPos = message.find(u8"%2");
if(startPos != std::string::npos) {
message.replace(startPos, 2, param2);
}
MessageManager::_messageManager->DisplayMessage(title, message);
}

View file

@ -15,6 +15,8 @@ namespace Mesen.GUI.Config
{
private static Configuration _config;
private static Configuration _dirtyConfig;
private static bool? _portableMode = null;
private static string _portablePath = null;
private static void LoadConfig()
{
@ -42,7 +44,16 @@ namespace Mesen.GUI.Config
{
get
{
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments, Environment.SpecialFolderOption.Create), "Mesen");
if(_portableMode == null) {
_portableMode = System.Reflection.Assembly.GetEntryAssembly().Location.EndsWith("_P.exe", StringComparison.InvariantCultureIgnoreCase);
_portablePath = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
}
if(_portableMode.Value) {
return Path.Combine(_portablePath, "Mesen");
} else {
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments, Environment.SpecialFolderOption.Create), "Mesen");
}
}
}

View file

@ -1350,6 +1350,7 @@ namespace Mesen.GUI.Forms
case Language.English: langCode = "en"; break;
case Language.French: langCode = "fr"; break;
case Language.Japanese: langCode = "ja"; break;
case Language.Russian: langCode = "ru"; break;
}
xmlDoc.LoadXml(client.DownloadString("http://www.mesen.ca/Services/GetLatestVersion.php?v=" + InteropEmu.GetMesenVersion() + "&p=win&l=" + langCode));
Version currentVersion = new Version(InteropEmu.GetMesenVersion());