diff options
author | ygorshenin <mipt.vi002@gmail.com> | 2016-10-10 18:43:30 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-10 18:43:30 +0300 |
commit | 0449cb90b04e9816d6c7df91b02b3bbdac4f0bc1 (patch) | |
tree | 249c01296fc0a7153cca8e53c9402b23080b6d89 /platform | |
parent | ecc59be84ff4b13c768f41422964d69a90c3fa2c (diff) | |
parent | aa1dd61dcdb109eef16111962c9c0edb48a4938c (diff) |
Merge pull request #4444 from Zverik/feature_list
Feature list tool
Diffstat (limited to 'platform')
-rw-r--r-- | platform/preferred_languages.cpp | 57 |
1 files changed, 29 insertions, 28 deletions
diff --git a/platform/preferred_languages.cpp b/platform/preferred_languages.cpp index b2dba2ad0f..77712b8e9d 100644 --- a/platform/preferred_languages.cpp +++ b/platform/preferred_languages.cpp @@ -47,17 +47,38 @@ namespace languages void GetSystemPreferred(vector<string> & languages) { +#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE) || defined(OMIM_OS_LINUX) + // check environment variables + char const * p = getenv("LANGUAGE"); + if (p && strlen(p)) // LANGUAGE can contain several values divided by ':' + { + string const str(p); + strings::SimpleTokenizer iter(str, ":"); + for (; iter; ++iter) + languages.push_back(*iter); + } + else if ((p = getenv("LC_ALL"))) + languages.push_back(p); + else if ((p = getenv("LC_MESSAGES"))) + languages.push_back(p); + else if ((p = getenv("LANG"))) + languages.push_back(p); + #if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE) - // Mac and iOS implementation - CFArrayRef langs = CFLocaleCopyPreferredLanguages(); - char buf[30]; - for (CFIndex i = 0; i < CFArrayGetCount(langs); ++i) + else { - CFStringRef strRef = (CFStringRef)CFArrayGetValueAtIndex(langs, i); - CFStringGetCString(strRef, buf, 30, kCFStringEncodingUTF8); - languages.push_back(buf); + // Mac and iOS implementation + CFArrayRef langs = CFLocaleCopyPreferredLanguages(); + char buf[30]; + for (CFIndex i = 0; i < CFArrayGetCount(langs); ++i) + { + CFStringRef strRef = (CFStringRef)CFArrayGetValueAtIndex(langs, i); + CFStringGetCString(strRef, buf, 30, kCFStringEncodingUTF8); + languages.push_back(buf); + } + CFRelease(langs); } - CFRelease(langs); +#endif #elif defined(OMIM_OS_WINDOWS) // if we're on Vista or above, take list of preferred languages @@ -100,26 +121,6 @@ void GetSystemPreferred(vector<string> & languages) } } -#elif defined(OMIM_OS_LINUX) - // check environment variables - char const * p = getenv("LANGUAGE"); - if (p && strlen(p)) // LANGUAGE can contain several values divided by ':' - { - string const str(p); - strings::SimpleTokenizer iter(str, ":"); - while (iter) - { - languages.push_back(*iter); - ++iter; - } - } - else if ((p = getenv("LC_ALL"))) - languages.push_back(p); - else if ((p = getenv("LC_MESSAGES"))) - languages.push_back(p); - else if ((p = getenv("LANG"))) - languages.push_back(p); - #elif defined(OMIM_OS_ANDROID) languages.push_back(GetAndroidSystemLanguage()); |