Get system language for iOS

This commit is contained in:
Benau 2019-07-24 01:36:21 +08:00
parent ef68f8377a
commit 857232fb52
3 changed files with 18 additions and 1 deletions

View File

@ -16,6 +16,7 @@
#include "IImagePresenter.h"
#include <map>
#include <set>
#include <string>
namespace irr
{
@ -112,6 +113,7 @@ namespace irr
m_touch_id_map.clear();
}
void setUpsideDown(bool val) { m_upside_down = val; }
static std::string getSystemLanguageCode();
private:
void createWindow();
void createViewAndDriver();

View File

@ -858,6 +858,11 @@ namespace irr
{
[static_cast<SIrrDeviceiOSDataStorage*>(DataStorage)->View display];
}
std::string CIrrDeviceiOS::getSystemLanguageCode()
{
NSString* language = [[NSLocale preferredLanguages] firstObject];
return std::string([language UTF8String]);
}
}
#ifdef _IRR_COMPILE_WITH_IOS_BUILTIN_MAIN_

View File

@ -49,6 +49,9 @@
#include "main_android.hpp"
#endif
#ifdef IOS_STK
#include "../../lib/irrlicht/source/Irrlicht/CIrrDeviceiOS.h"
#endif
// set to 1 to debug i18n
#define TRANSLATE_VERBOSE 0
@ -322,7 +325,14 @@ Translations::Translations() //: m_dictionary_manager("UTF-16")
language = p_lang;
else
{
#ifdef WIN32
#ifdef IOS_STK
language = irr::CIrrDeviceiOS::getSystemLanguageCode();
if (language.find("zh-Hans") != std::string::npos)
language = "zh_CN";
else if (language.find("zh-Hant") != std::string::npos)
language = "zh_TW";
language = StringUtils::findAndReplace(language, "-", "_");
#elif defined(WIN32)
// Thanks to the frogatto developer for this code snippet:
char c[1024];
GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_SISO639LANGNAME,