Skip to content

Support Belarusian language #18658

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Feb 11, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions cocos/base/ccUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,91 @@ std::string getDataMD5Hash(const Data &data)
return hexOutput;
}

LanguageType getLanguageTypeByISO2(const char* code)
{
// this function is used by all platforms to get system language
// except windows: cocos/platform/win32/CCApplication-win32.cpp
LanguageType ret = LanguageType::ENGLISH;

if (strncmp(code, "zh", 2) == 0)
{
ret = LanguageType::CHINESE;
}
else if (strncmp(code, "ja", 2) == 0)
{
ret = LanguageType::JAPANESE;
}
else if (strncmp(code, "fr", 2) == 0)
{
ret = LanguageType::FRENCH;
}
else if (strncmp(code, "it", 2) == 0)
{
ret = LanguageType::ITALIAN;
}
else if (strncmp(code, "de", 2) == 0)
{
ret = LanguageType::GERMAN;
}
else if (strncmp(code, "es", 2) == 0)
{
ret = LanguageType::SPANISH;
}
else if (strncmp(code, "nl", 2) == 0)
{
ret = LanguageType::DUTCH;
}
else if (strncmp(code, "ru", 2) == 0)
{
ret = LanguageType::RUSSIAN;
}
else if (strncmp(code, "hu", 2) == 0)
{
ret = LanguageType::HUNGARIAN;
}
else if (strncmp(code, "pt", 2) == 0)
{
ret = LanguageType::PORTUGUESE;
}
else if (strncmp(code, "ko", 2) == 0)
{
ret = LanguageType::KOREAN;
}
else if (strncmp(code, "ar", 2) == 0)
{
ret = LanguageType::ARABIC;
}
else if (strncmp(code, "nb", 2) == 0)
{
ret = LanguageType::NORWEGIAN;
}
else if (strncmp(code, "pl", 2) == 0)
{
ret = LanguageType::POLISH;
}
else if (strncmp(code, "tr", 2) == 0)
{
ret = LanguageType::TURKISH;
}
else if (strncmp(code, "uk", 2) == 0)
{
ret = LanguageType::UKRAINIAN;
}
else if (strncmp(code, "ro", 2) == 0)
{
ret = LanguageType::ROMANIAN;
}
else if (strncmp(code, "bg", 2) == 0)
{
ret = LanguageType::BULGARIAN;
}
else if (strncmp(code, "be", 2) == 0)
{
ret = LanguageType::BELARUSIAN;
}
return ret;
}

}

NS_CC_END
8 changes: 8 additions & 0 deletions cocos/base/ccUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,14 @@ namespace utils
* @return The md5 hash for the data
*/
CC_DLL std::string getDataMD5Hash(const Data &data);

/**
@brief Converts language iso 639-1 code to LanguageType enum.
@return LanguageType enum.
* @js NA
* @lua NA
*/
CC_DLL LanguageType getLanguageTypeByISO2(const char* code);
}

NS_CC_END
Expand Down
3 changes: 2 additions & 1 deletion cocos/platform/CCCommon.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ enum class LanguageType
TURKISH,
UKRAINIAN,
ROMANIAN,
BULGARIAN
BULGARIAN,
BELARUSIAN
};

// END of platform group
Expand Down
83 changes: 3 additions & 80 deletions cocos/platform/android/CCApplication-android.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ THE SOFTWARE.
#include "platform/android/jni/JniHelper.h"
#include "platform/CCApplication.h"
#include "base/CCDirector.h"
#include "base/ccUtils.h"
#include <android/log.h>
#include <jni.h>
#include <cstring>
Expand Down Expand Up @@ -111,87 +112,9 @@ const char * Application::getCurrentLanguageCode()

LanguageType Application::getCurrentLanguage()
{
std::string languageName = JniHelper::callStaticStringMethod(helperClassName, "getCurrentLanguage");
const char* pLanguageName = languageName.c_str();
LanguageType ret = LanguageType::ENGLISH;
const char* code = getCurrentLanguageCode();

if (0 == strcmp("zh", pLanguageName))
{
ret = LanguageType::CHINESE;
}
else if (0 == strcmp("en", pLanguageName))
{
ret = LanguageType::ENGLISH;
}
else if (0 == strcmp("fr", pLanguageName))
{
ret = LanguageType::FRENCH;
}
else if (0 == strcmp("it", pLanguageName))
{
ret = LanguageType::ITALIAN;
}
else if (0 == strcmp("de", pLanguageName))
{
ret = LanguageType::GERMAN;
}
else if (0 == strcmp("es", pLanguageName))
{
ret = LanguageType::SPANISH;
}
else if (0 == strcmp("ru", pLanguageName))
{
ret = LanguageType::RUSSIAN;
}
else if (0 == strcmp("nl", pLanguageName))
{
ret = LanguageType::DUTCH;
}
else if (0 == strcmp("ko", pLanguageName))
{
ret = LanguageType::KOREAN;
}
else if (0 == strcmp("ja", pLanguageName))
{
ret = LanguageType::JAPANESE;
}
else if (0 == strcmp("hu", pLanguageName))
{
ret = LanguageType::HUNGARIAN;
}
else if (0 == strcmp("pt", pLanguageName))
{
ret = LanguageType::PORTUGUESE;
}
else if (0 == strcmp("ar", pLanguageName))
{
ret = LanguageType::ARABIC;
}
else if (0 == strcmp("nb", pLanguageName))
{
ret = LanguageType::NORWEGIAN;
}
else if (0 == strcmp("pl", pLanguageName))
{
ret = LanguageType::POLISH;
}
else if (0 == strcmp("tr", pLanguageName))
{
ret = LanguageType::TURKISH;
}
else if (0 == strcmp("uk", pLanguageName))
{
ret = LanguageType::UKRAINIAN;
}
else if (0 == strcmp("ro", pLanguageName))
{
ret = LanguageType::ROMANIAN;
}
else if (0 == strcmp("bg", pLanguageName))
{
ret = LanguageType::BULGARIAN;
}
return ret;
return utils::getLanguageTypeByISO2(code);
}

Application::Platform Application::getTargetPlatform()
Expand Down
22 changes: 2 additions & 20 deletions cocos/platform/ios/CCApplication-ios.mm
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ of this software and associated documentation files (the "Software"), to deal

#import "math/CCGeometry.h"
#import "platform/ios/CCDirectorCaller-ios.h"
#import "base/ccUtils.h"

NS_CC_BEGIN

Expand Down Expand Up @@ -109,26 +110,7 @@ of this software and associated documentation files (the "Software"), to deal
NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage];
NSString * languageCode = [temp objectForKey:NSLocaleLanguageCode];

if ([languageCode isEqualToString:@"zh"]) return LanguageType::CHINESE;
if ([languageCode isEqualToString:@"en"]) return LanguageType::ENGLISH;
if ([languageCode isEqualToString:@"fr"]) return LanguageType::FRENCH;
if ([languageCode isEqualToString:@"it"]) return LanguageType::ITALIAN;
if ([languageCode isEqualToString:@"de"]) return LanguageType::GERMAN;
if ([languageCode isEqualToString:@"es"]) return LanguageType::SPANISH;
if ([languageCode isEqualToString:@"nl"]) return LanguageType::DUTCH;
if ([languageCode isEqualToString:@"ru"]) return LanguageType::RUSSIAN;
if ([languageCode isEqualToString:@"ko"]) return LanguageType::KOREAN;
if ([languageCode isEqualToString:@"ja"]) return LanguageType::JAPANESE;
if ([languageCode isEqualToString:@"hu"]) return LanguageType::HUNGARIAN;
if ([languageCode isEqualToString:@"pt"]) return LanguageType::PORTUGUESE;
if ([languageCode isEqualToString:@"ar"]) return LanguageType::ARABIC;
if ([languageCode isEqualToString:@"nb"]) return LanguageType::NORWEGIAN;
if ([languageCode isEqualToString:@"pl"]) return LanguageType::POLISH;
if ([languageCode isEqualToString:@"tr"]) return LanguageType::TURKISH;
if ([languageCode isEqualToString:@"uk"]) return LanguageType::UKRAINIAN;
if ([languageCode isEqualToString:@"ro"]) return LanguageType::ROMANIAN;
if ([languageCode isEqualToString:@"bg"]) return LanguageType::BULGARIAN;
return LanguageType::ENGLISH;
return utils::getLanguageTypeByISO2([languageCode UTF8String]);

}

Expand Down
81 changes: 2 additions & 79 deletions cocos/platform/linux/CCApplication-linux.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ THE SOFTWARE.
#include <sys/time.h>
#include <string>
#include "base/CCDirector.h"
#include "base/ccUtils.h"
#include "platform/CCFileUtils.h"

NS_CC_BEGIN
Expand Down Expand Up @@ -184,7 +185,6 @@ const char * Application::getCurrentLanguageCode()
LanguageType Application::getCurrentLanguage()
{
char *pLanguageName = getenv("LANG");
LanguageType ret = LanguageType::ENGLISH;
if (!pLanguageName)
{
return LanguageType::ENGLISH;
Expand All @@ -195,84 +195,7 @@ LanguageType Application::getCurrentLanguage()
return LanguageType::ENGLISH;
}

if (0 == strcmp("zh", pLanguageName))
{
ret = LanguageType::CHINESE;
}
else if (0 == strcmp("en", pLanguageName))
{
ret = LanguageType::ENGLISH;
}
else if (0 == strcmp("fr", pLanguageName))
{
ret = LanguageType::FRENCH;
}
else if (0 == strcmp("it", pLanguageName))
{
ret = LanguageType::ITALIAN;
}
else if (0 == strcmp("de", pLanguageName))
{
ret = LanguageType::GERMAN;
}
else if (0 == strcmp("es", pLanguageName))
{
ret = LanguageType::SPANISH;
}
else if (0 == strcmp("nl", pLanguageName))
{
ret = LanguageType::DUTCH;
}
else if (0 == strcmp("ru", pLanguageName))
{
ret = LanguageType::RUSSIAN;
}
else if (0 == strcmp("ko", pLanguageName))
{
ret = LanguageType::KOREAN;
}
else if (0 == strcmp("ja", pLanguageName))
{
ret = LanguageType::JAPANESE;
}
else if (0 == strcmp("hu", pLanguageName))
{
ret = LanguageType::HUNGARIAN;
}
else if (0 == strcmp("pt", pLanguageName))
{
ret = LanguageType::PORTUGUESE;
}
else if (0 == strcmp("ar", pLanguageName))
{
ret = LanguageType::ARABIC;
}
else if (0 == strcmp("nb", pLanguageName))
{
ret = LanguageType::NORWEGIAN;
}
else if (0 == strcmp("pl", pLanguageName))
{
ret = LanguageType::POLISH;
}
else if (0 == strcmp("tr", pLanguageName))
{
ret = LanguageType::TURKISH;
}
else if (0 == strcmp("uk", pLanguageName))
{
ret = LanguageType::UKRAINIAN;
}
else if (0 == strcmp("ro", pLanguageName))
{
ret = LanguageType::ROMANIAN;
}
else if (0 == strcmp("bg", pLanguageName))
{
ret = LanguageType::BULGARIAN;
}

return ret;
return utils::getLanguageTypeByISO2(pLanguageName);
}

NS_CC_END
Expand Down
25 changes: 3 additions & 22 deletions cocos/platform/mac/CCApplication-mac.mm
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,11 @@ of this software and associated documentation files (the "Software"), to deal
#import <Cocoa/Cocoa.h>
#include <algorithm>

#import "platform/CCApplication.h"
#include "platform/CCApplication.h"
#include "platform/CCFileUtils.h"
#include "math/CCGeometry.h"
#include "base/CCDirector.h"
#include "base/ccUtils.h"

NS_CC_BEGIN

Expand Down Expand Up @@ -173,27 +174,7 @@ static long getCurrentMillSecond()
NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage];
NSString * languageCode = [temp objectForKey:NSLocaleLanguageCode];

if ([languageCode isEqualToString:@"zh"]) return LanguageType::CHINESE;
if ([languageCode isEqualToString:@"en"]) return LanguageType::ENGLISH;
if ([languageCode isEqualToString:@"fr"]) return LanguageType::FRENCH;
if ([languageCode isEqualToString:@"it"]) return LanguageType::ITALIAN;
if ([languageCode isEqualToString:@"de"]) return LanguageType::GERMAN;
if ([languageCode isEqualToString:@"es"]) return LanguageType::SPANISH;
if ([languageCode isEqualToString:@"nl"]) return LanguageType::DUTCH;
if ([languageCode isEqualToString:@"ru"]) return LanguageType::RUSSIAN;
if ([languageCode isEqualToString:@"ko"]) return LanguageType::KOREAN;
if ([languageCode isEqualToString:@"ja"]) return LanguageType::JAPANESE;
if ([languageCode isEqualToString:@"hu"]) return LanguageType::HUNGARIAN;
if ([languageCode isEqualToString:@"pt"]) return LanguageType::PORTUGUESE;
if ([languageCode isEqualToString:@"ar"]) return LanguageType::ARABIC;
if ([languageCode isEqualToString:@"nb"]) return LanguageType::NORWEGIAN;
if ([languageCode isEqualToString:@"pl"]) return LanguageType::POLISH;
if ([languageCode isEqualToString:@"tr"]) return LanguageType::TURKISH;
if ([languageCode isEqualToString:@"uk"]) return LanguageType::UKRAINIAN;
if ([languageCode isEqualToString:@"ro"]) return LanguageType::ROMANIAN;
if ([languageCode isEqualToString:@"bg"]) return LanguageType::BULGARIAN;
return LanguageType::ENGLISH;

return utils::getLanguageTypeByISO2([languageCode UTF8String]);
}

bool Application::openURL(const std::string &url)
Expand Down
Loading