Skip to content

Commit 74daac0

Browse files
Dimon4egminggo
authored andcommitted
Support Belarusian language (cocos2d#18658)
* Support Belarusian language * Fixed code duplication - moved language convertion code to ccUtils * added Belarusian language for all platforms * Fix ios/mac build errors
1 parent 7e0a043 commit 74daac0

File tree

12 files changed

+122
-341
lines changed

12 files changed

+122
-341
lines changed

cocos/base/ccUtils.cpp

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,91 @@ std::string getDataMD5Hash(const Data &data)
441441
return hexOutput;
442442
}
443443

444+
LanguageType getLanguageTypeByISO2(const char* code)
445+
{
446+
// this function is used by all platforms to get system language
447+
// except windows: cocos/platform/win32/CCApplication-win32.cpp
448+
LanguageType ret = LanguageType::ENGLISH;
449+
450+
if (strncmp(code, "zh", 2) == 0)
451+
{
452+
ret = LanguageType::CHINESE;
453+
}
454+
else if (strncmp(code, "ja", 2) == 0)
455+
{
456+
ret = LanguageType::JAPANESE;
457+
}
458+
else if (strncmp(code, "fr", 2) == 0)
459+
{
460+
ret = LanguageType::FRENCH;
461+
}
462+
else if (strncmp(code, "it", 2) == 0)
463+
{
464+
ret = LanguageType::ITALIAN;
465+
}
466+
else if (strncmp(code, "de", 2) == 0)
467+
{
468+
ret = LanguageType::GERMAN;
469+
}
470+
else if (strncmp(code, "es", 2) == 0)
471+
{
472+
ret = LanguageType::SPANISH;
473+
}
474+
else if (strncmp(code, "nl", 2) == 0)
475+
{
476+
ret = LanguageType::DUTCH;
477+
}
478+
else if (strncmp(code, "ru", 2) == 0)
479+
{
480+
ret = LanguageType::RUSSIAN;
481+
}
482+
else if (strncmp(code, "hu", 2) == 0)
483+
{
484+
ret = LanguageType::HUNGARIAN;
485+
}
486+
else if (strncmp(code, "pt", 2) == 0)
487+
{
488+
ret = LanguageType::PORTUGUESE;
489+
}
490+
else if (strncmp(code, "ko", 2) == 0)
491+
{
492+
ret = LanguageType::KOREAN;
493+
}
494+
else if (strncmp(code, "ar", 2) == 0)
495+
{
496+
ret = LanguageType::ARABIC;
497+
}
498+
else if (strncmp(code, "nb", 2) == 0)
499+
{
500+
ret = LanguageType::NORWEGIAN;
501+
}
502+
else if (strncmp(code, "pl", 2) == 0)
503+
{
504+
ret = LanguageType::POLISH;
505+
}
506+
else if (strncmp(code, "tr", 2) == 0)
507+
{
508+
ret = LanguageType::TURKISH;
509+
}
510+
else if (strncmp(code, "uk", 2) == 0)
511+
{
512+
ret = LanguageType::UKRAINIAN;
513+
}
514+
else if (strncmp(code, "ro", 2) == 0)
515+
{
516+
ret = LanguageType::ROMANIAN;
517+
}
518+
else if (strncmp(code, "bg", 2) == 0)
519+
{
520+
ret = LanguageType::BULGARIAN;
521+
}
522+
else if (strncmp(code, "be", 2) == 0)
523+
{
524+
ret = LanguageType::BELARUSIAN;
525+
}
526+
return ret;
527+
}
528+
444529
}
445530

446531
NS_CC_END

cocos/base/ccUtils.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,14 @@ namespace utils
180180
* @return The md5 hash for the data
181181
*/
182182
CC_DLL std::string getDataMD5Hash(const Data &data);
183+
184+
/**
185+
@brief Converts language iso 639-1 code to LanguageType enum.
186+
@return LanguageType enum.
187+
* @js NA
188+
* @lua NA
189+
*/
190+
CC_DLL LanguageType getLanguageTypeByISO2(const char* code);
183191
}
184192

185193
NS_CC_END

cocos/platform/CCCommon.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ enum class LanguageType
7070
TURKISH,
7171
UKRAINIAN,
7272
ROMANIAN,
73-
BULGARIAN
73+
BULGARIAN,
74+
BELARUSIAN
7475
};
7576

7677
// END of platform group

cocos/platform/android/CCApplication-android.cpp

Lines changed: 3 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ THE SOFTWARE.
3131
#include "platform/android/jni/JniHelper.h"
3232
#include "platform/CCApplication.h"
3333
#include "base/CCDirector.h"
34+
#include "base/ccUtils.h"
3435
#include <android/log.h>
3536
#include <jni.h>
3637
#include <cstring>
@@ -112,87 +113,9 @@ const char * Application::getCurrentLanguageCode()
112113

113114
LanguageType Application::getCurrentLanguage()
114115
{
115-
std::string languageName = JniHelper::callStaticStringMethod(helperClassName, "getCurrentLanguage");
116-
const char* pLanguageName = languageName.c_str();
117-
LanguageType ret = LanguageType::ENGLISH;
116+
const char* code = getCurrentLanguageCode();
118117

119-
if (0 == strcmp("zh", pLanguageName))
120-
{
121-
ret = LanguageType::CHINESE;
122-
}
123-
else if (0 == strcmp("en", pLanguageName))
124-
{
125-
ret = LanguageType::ENGLISH;
126-
}
127-
else if (0 == strcmp("fr", pLanguageName))
128-
{
129-
ret = LanguageType::FRENCH;
130-
}
131-
else if (0 == strcmp("it", pLanguageName))
132-
{
133-
ret = LanguageType::ITALIAN;
134-
}
135-
else if (0 == strcmp("de", pLanguageName))
136-
{
137-
ret = LanguageType::GERMAN;
138-
}
139-
else if (0 == strcmp("es", pLanguageName))
140-
{
141-
ret = LanguageType::SPANISH;
142-
}
143-
else if (0 == strcmp("ru", pLanguageName))
144-
{
145-
ret = LanguageType::RUSSIAN;
146-
}
147-
else if (0 == strcmp("nl", pLanguageName))
148-
{
149-
ret = LanguageType::DUTCH;
150-
}
151-
else if (0 == strcmp("ko", pLanguageName))
152-
{
153-
ret = LanguageType::KOREAN;
154-
}
155-
else if (0 == strcmp("ja", pLanguageName))
156-
{
157-
ret = LanguageType::JAPANESE;
158-
}
159-
else if (0 == strcmp("hu", pLanguageName))
160-
{
161-
ret = LanguageType::HUNGARIAN;
162-
}
163-
else if (0 == strcmp("pt", pLanguageName))
164-
{
165-
ret = LanguageType::PORTUGUESE;
166-
}
167-
else if (0 == strcmp("ar", pLanguageName))
168-
{
169-
ret = LanguageType::ARABIC;
170-
}
171-
else if (0 == strcmp("nb", pLanguageName))
172-
{
173-
ret = LanguageType::NORWEGIAN;
174-
}
175-
else if (0 == strcmp("pl", pLanguageName))
176-
{
177-
ret = LanguageType::POLISH;
178-
}
179-
else if (0 == strcmp("tr", pLanguageName))
180-
{
181-
ret = LanguageType::TURKISH;
182-
}
183-
else if (0 == strcmp("uk", pLanguageName))
184-
{
185-
ret = LanguageType::UKRAINIAN;
186-
}
187-
else if (0 == strcmp("ro", pLanguageName))
188-
{
189-
ret = LanguageType::ROMANIAN;
190-
}
191-
else if (0 == strcmp("bg", pLanguageName))
192-
{
193-
ret = LanguageType::BULGARIAN;
194-
}
195-
return ret;
118+
return utils::getLanguageTypeByISO2(code);
196119
}
197120

198121
Application::Platform Application::getTargetPlatform()

cocos/platform/ios/CCApplication-ios.mm

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ of this software and associated documentation files (the "Software"), to deal
3232

3333
#import "math/CCGeometry.h"
3434
#import "platform/ios/CCDirectorCaller-ios.h"
35+
#import "base/ccUtils.h"
3536

3637
NS_CC_BEGIN
3738

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

113-
if ([languageCode isEqualToString:@"zh"]) return LanguageType::CHINESE;
114-
if ([languageCode isEqualToString:@"en"]) return LanguageType::ENGLISH;
115-
if ([languageCode isEqualToString:@"fr"]) return LanguageType::FRENCH;
116-
if ([languageCode isEqualToString:@"it"]) return LanguageType::ITALIAN;
117-
if ([languageCode isEqualToString:@"de"]) return LanguageType::GERMAN;
118-
if ([languageCode isEqualToString:@"es"]) return LanguageType::SPANISH;
119-
if ([languageCode isEqualToString:@"nl"]) return LanguageType::DUTCH;
120-
if ([languageCode isEqualToString:@"ru"]) return LanguageType::RUSSIAN;
121-
if ([languageCode isEqualToString:@"ko"]) return LanguageType::KOREAN;
122-
if ([languageCode isEqualToString:@"ja"]) return LanguageType::JAPANESE;
123-
if ([languageCode isEqualToString:@"hu"]) return LanguageType::HUNGARIAN;
124-
if ([languageCode isEqualToString:@"pt"]) return LanguageType::PORTUGUESE;
125-
if ([languageCode isEqualToString:@"ar"]) return LanguageType::ARABIC;
126-
if ([languageCode isEqualToString:@"nb"]) return LanguageType::NORWEGIAN;
127-
if ([languageCode isEqualToString:@"pl"]) return LanguageType::POLISH;
128-
if ([languageCode isEqualToString:@"tr"]) return LanguageType::TURKISH;
129-
if ([languageCode isEqualToString:@"uk"]) return LanguageType::UKRAINIAN;
130-
if ([languageCode isEqualToString:@"ro"]) return LanguageType::ROMANIAN;
131-
if ([languageCode isEqualToString:@"bg"]) return LanguageType::BULGARIAN;
132-
return LanguageType::ENGLISH;
114+
return utils::getLanguageTypeByISO2([languageCode UTF8String]);
133115

134116
}
135117

cocos/platform/linux/CCApplication-linux.cpp

Lines changed: 2 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ THE SOFTWARE.
3232
#include <sys/time.h>
3333
#include <string>
3434
#include "base/CCDirector.h"
35+
#include "base/ccUtils.h"
3536
#include "platform/CCFileUtils.h"
3637

3738
NS_CC_BEGIN
@@ -185,7 +186,6 @@ const char * Application::getCurrentLanguageCode()
185186
LanguageType Application::getCurrentLanguage()
186187
{
187188
char *pLanguageName = getenv("LANG");
188-
LanguageType ret = LanguageType::ENGLISH;
189189
if (!pLanguageName)
190190
{
191191
return LanguageType::ENGLISH;
@@ -196,84 +196,7 @@ LanguageType Application::getCurrentLanguage()
196196
return LanguageType::ENGLISH;
197197
}
198198

199-
if (0 == strcmp("zh", pLanguageName))
200-
{
201-
ret = LanguageType::CHINESE;
202-
}
203-
else if (0 == strcmp("en", pLanguageName))
204-
{
205-
ret = LanguageType::ENGLISH;
206-
}
207-
else if (0 == strcmp("fr", pLanguageName))
208-
{
209-
ret = LanguageType::FRENCH;
210-
}
211-
else if (0 == strcmp("it", pLanguageName))
212-
{
213-
ret = LanguageType::ITALIAN;
214-
}
215-
else if (0 == strcmp("de", pLanguageName))
216-
{
217-
ret = LanguageType::GERMAN;
218-
}
219-
else if (0 == strcmp("es", pLanguageName))
220-
{
221-
ret = LanguageType::SPANISH;
222-
}
223-
else if (0 == strcmp("nl", pLanguageName))
224-
{
225-
ret = LanguageType::DUTCH;
226-
}
227-
else if (0 == strcmp("ru", pLanguageName))
228-
{
229-
ret = LanguageType::RUSSIAN;
230-
}
231-
else if (0 == strcmp("ko", pLanguageName))
232-
{
233-
ret = LanguageType::KOREAN;
234-
}
235-
else if (0 == strcmp("ja", pLanguageName))
236-
{
237-
ret = LanguageType::JAPANESE;
238-
}
239-
else if (0 == strcmp("hu", pLanguageName))
240-
{
241-
ret = LanguageType::HUNGARIAN;
242-
}
243-
else if (0 == strcmp("pt", pLanguageName))
244-
{
245-
ret = LanguageType::PORTUGUESE;
246-
}
247-
else if (0 == strcmp("ar", pLanguageName))
248-
{
249-
ret = LanguageType::ARABIC;
250-
}
251-
else if (0 == strcmp("nb", pLanguageName))
252-
{
253-
ret = LanguageType::NORWEGIAN;
254-
}
255-
else if (0 == strcmp("pl", pLanguageName))
256-
{
257-
ret = LanguageType::POLISH;
258-
}
259-
else if (0 == strcmp("tr", pLanguageName))
260-
{
261-
ret = LanguageType::TURKISH;
262-
}
263-
else if (0 == strcmp("uk", pLanguageName))
264-
{
265-
ret = LanguageType::UKRAINIAN;
266-
}
267-
else if (0 == strcmp("ro", pLanguageName))
268-
{
269-
ret = LanguageType::ROMANIAN;
270-
}
271-
else if (0 == strcmp("bg", pLanguageName))
272-
{
273-
ret = LanguageType::BULGARIAN;
274-
}
275-
276-
return ret;
199+
return utils::getLanguageTypeByISO2(pLanguageName);
277200
}
278201

279202
NS_CC_END

cocos/platform/mac/CCApplication-mac.mm

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@ of this software and associated documentation files (the "Software"), to deal
3030
#import <Cocoa/Cocoa.h>
3131
#include <algorithm>
3232

33-
#import "platform/CCApplication.h"
33+
#include "platform/CCApplication.h"
3434
#include "platform/CCFileUtils.h"
3535
#include "math/CCGeometry.h"
3636
#include "base/CCDirector.h"
37+
#include "base/ccUtils.h"
3738

3839
NS_CC_BEGIN
3940

@@ -174,27 +175,7 @@ static long getCurrentMillSecond()
174175
NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage];
175176
NSString * languageCode = [temp objectForKey:NSLocaleLanguageCode];
176177

177-
if ([languageCode isEqualToString:@"zh"]) return LanguageType::CHINESE;
178-
if ([languageCode isEqualToString:@"en"]) return LanguageType::ENGLISH;
179-
if ([languageCode isEqualToString:@"fr"]) return LanguageType::FRENCH;
180-
if ([languageCode isEqualToString:@"it"]) return LanguageType::ITALIAN;
181-
if ([languageCode isEqualToString:@"de"]) return LanguageType::GERMAN;
182-
if ([languageCode isEqualToString:@"es"]) return LanguageType::SPANISH;
183-
if ([languageCode isEqualToString:@"nl"]) return LanguageType::DUTCH;
184-
if ([languageCode isEqualToString:@"ru"]) return LanguageType::RUSSIAN;
185-
if ([languageCode isEqualToString:@"ko"]) return LanguageType::KOREAN;
186-
if ([languageCode isEqualToString:@"ja"]) return LanguageType::JAPANESE;
187-
if ([languageCode isEqualToString:@"hu"]) return LanguageType::HUNGARIAN;
188-
if ([languageCode isEqualToString:@"pt"]) return LanguageType::PORTUGUESE;
189-
if ([languageCode isEqualToString:@"ar"]) return LanguageType::ARABIC;
190-
if ([languageCode isEqualToString:@"nb"]) return LanguageType::NORWEGIAN;
191-
if ([languageCode isEqualToString:@"pl"]) return LanguageType::POLISH;
192-
if ([languageCode isEqualToString:@"tr"]) return LanguageType::TURKISH;
193-
if ([languageCode isEqualToString:@"uk"]) return LanguageType::UKRAINIAN;
194-
if ([languageCode isEqualToString:@"ro"]) return LanguageType::ROMANIAN;
195-
if ([languageCode isEqualToString:@"bg"]) return LanguageType::BULGARIAN;
196-
return LanguageType::ENGLISH;
197-
178+
return utils::getLanguageTypeByISO2([languageCode UTF8String]);
198179
}
199180

200181
bool Application::openURL(const std::string &url)

0 commit comments

Comments
 (0)