From f8f9d0e56970f433a58e7ceda0c918daf2dbfeaf Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 11 Feb 2025 07:03:22 +0000 Subject: [PATCH 01/17] change param persist.global.language into persist.global.locale Signed-off-by: zhangcan42 --- services/etc/updater_normal.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/etc/updater_normal.cfg b/services/etc/updater_normal.cfg index 26ec19b7..5f08a0b0 100644 --- a/services/etc/updater_normal.cfg +++ b/services/etc/updater_normal.cfg @@ -1,8 +1,8 @@ { "jobs" : [ { - "name" : "param:persist.global.language=*", - "condition" : "persist.global.language=*", + "name" : "param:persist.global.locale=*", + "condition" : "persist.global.locale=*", "cmds" : [ "start write_updater" ] -- Gitee From daeddee319f8fb2c1a02b196594de3701e6ae1c7 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 11 Feb 2025 11:41:35 +0000 Subject: [PATCH 02/17] judge region to set language Signed-off-by: zhangcan42 --- services/ui/language/language_ui.cpp | 36 ++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/services/ui/language/language_ui.cpp b/services/ui/language/language_ui.cpp index b6c26359..0c07156d 100644 --- a/services/ui/language/language_ui.cpp +++ b/services/ui/language/language_ui.cpp @@ -170,11 +170,43 @@ bool LanguageUI::LoadLangRes(const JsonNode &node) return true; } +Language LanguageUI::ParseLangIfZh(std::string globalLang) +{ + constexpr const char *CN_REGION_UNDERLINE = "_CN"; + constexpr const char *CN_REGION_DASH = "-CN"; + const char *ptrChar = nullptr; + bool isSuffix = false; + if (globalLang == nullptr) { + LOG(ERROR) << "null error"; + return Language::CHINESE; + } + ptrChar = strstr(globalLang, "-") == nullptr ? strstr(globalLang, "_") : strstr(globalLang, "-"); + if (ptrChar == nullptr) { + LOG(ERROR) << "global param doesn't contain '-' or '_'"; + return Language::CHINESE; + } + if (strncmp(ptrChar, CN_REGION_DASH, strlen(CN_REGION_DASH)) == 0 || strncmp(ptrChar, CN_REGION_UNDERLINE, + strlen(CN_REGION_UNDERLINE)) == 0) { + LOG(INFO) << "check region type at prefix"; + return Language::CHINESE; + } + if (strlen(ptrChar) >= strlen(CN_REGION_DASH)) { + ptrChar = ptrChar + strlen(ptrChar) - strlen(CN_REGION_DASH); + isSuffix = true; + } + if (isSuffix && (strncmp(ptrChar, CN_REGION_DASH, strlen(CN_REGION_DASH)) == 0 || + strncmp(ptrChar, CN_REGION_UNDERLINE, strlen(CN_REGION_UNDERLINE)) == 0)) { + LOG(INFO) << "check region type at suffix"; + return Language::CHINESE; + } + return Language::ENGLISH; +} + Language LanguageUI::ParseLanguage() const { Language DEFAULT_LOCALE = defaultLanguage_; #ifndef UPDATER_UT - //read language type(en-Latn-US/zh-Hans) from misc + // read locale type(en-Latn-CN/zh-Hans-CN) from misc constexpr const char *CHINESE_LANGUAGE_PREFIX = "zh"; constexpr const char *SPANISH_LANGUAGE_PREFIX = "es"; struct UpdaterPara para {}; @@ -186,7 +218,7 @@ Language LanguageUI::ParseLanguage() const LOG(INFO) << "Language in misc is empty"; return Language::CHINESE; } else if (strncmp(para.language, CHINESE_LANGUAGE_PREFIX, strlen(CHINESE_LANGUAGE_PREFIX)) == 0) { - return Language::CHINESE; + return ParseLangIfZh(para.language); } else if (strncmp(para.language, SPANISH_LANGUAGE_PREFIX, strlen(SPANISH_LANGUAGE_PREFIX)) == 0) { return Language::SPANISH; } else { -- Gitee From 6a32e07144ac6003e1b889df8fc0fce0d0ab768f Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 11 Feb 2025 11:44:14 +0000 Subject: [PATCH 03/17] judge region to set language Signed-off-by: zhangcan42 --- services/ui/language/language_ui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/ui/language/language_ui.cpp b/services/ui/language/language_ui.cpp index 0c07156d..a8b12230 100644 --- a/services/ui/language/language_ui.cpp +++ b/services/ui/language/language_ui.cpp @@ -170,7 +170,7 @@ bool LanguageUI::LoadLangRes(const JsonNode &node) return true; } -Language LanguageUI::ParseLangIfZh(std::string globalLang) +Language LanguageUI::ParseLangIfZh(const char *globalLang) { constexpr const char *CN_REGION_UNDERLINE = "_CN"; constexpr const char *CN_REGION_DASH = "-CN"; -- Gitee From c58fa9b925786648dacfdcad06f8ef29029169a0 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 11 Feb 2025 12:07:19 +0000 Subject: [PATCH 04/17] add function ParseLangIfZh Signed-off-by: zhangcan42 --- services/ui/language/language_ui.h | 1 + 1 file changed, 1 insertion(+) diff --git a/services/ui/language/language_ui.h b/services/ui/language/language_ui.h index d134d38b..6b330234 100644 --- a/services/ui/language/language_ui.h +++ b/services/ui/language/language_ui.h @@ -42,6 +42,7 @@ public: Language ParseLanguage() const; Language GetCurLanguage() const; void SetDefaultLanguage(Language language); + Language ParseLangIfZh(const char *globalLang); private: ~LanguageUI() = default; LanguageUI(); -- Gitee From 64d4d951e5209ca06023125f8023085337b01360 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 11 Feb 2025 12:17:39 +0000 Subject: [PATCH 05/17] add UT for ParseLangIfZh Signed-off-by: zhangcan42 --- .../lang/ui_language_unittest.cpp | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp index 66f0f2c2..25495eb3 100644 --- a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp +++ b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp @@ -127,6 +127,34 @@ HWTEST_F(UpdaterUiLangUnitTest, testParseLanguage, TestSize.Level0) EXPECT_EQ(LanguageUI::GetInstance().ParseLanguage(), Language::ENGLISH); } +HWTEST_F(UpdaterUiLangUnitTest, testParseLangIfZh, TestSize.Level0) +{ + std::string globalLang {}; + + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(nullptr), Language::CHINESE)n + + globalLang = "zh"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + + globalLang = "zh-CN"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + + globalLang = "zh_CN"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + + globalLang = "zh-U"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); + + globalLang = "zh-Hans-CN"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + + globalLang = "zh-Hans_CN"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + + globalLang = "zh-Hans-US"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); +} + HWTEST_F(UpdaterUiLangUnitTest, testInit01, TestSize.Level0) { LangResource langRes {}; -- Gitee From 00e2fd1446c276259f563551271b88d0df23fc93 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 11 Feb 2025 12:19:04 +0000 Subject: [PATCH 06/17] add UT for ParseLangIfZh Signed-off-by: zhangcan42 --- test/unittest/updater_ui_test/lang/ui_language_unittest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp index 25495eb3..2e93cf30 100644 --- a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp +++ b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp @@ -131,7 +131,7 @@ HWTEST_F(UpdaterUiLangUnitTest, testParseLangIfZh, TestSize.Level0) { std::string globalLang {}; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(nullptr), Language::CHINESE)n + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(nullptr), Language::CHINESE); globalLang = "zh"; EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); -- Gitee From dd5edd99fc8a1350184e427474d670fa7fea850d Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 11 Feb 2025 12:23:25 +0000 Subject: [PATCH 07/17] read param persist.global.locale Signed-off-by: zhangcan42 --- utils/write_updater.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/write_updater.cpp b/utils/write_updater.cpp index df45b8ea..444d66d7 100644 --- a/utils/write_updater.cpp +++ b/utils/write_updater.cpp @@ -61,7 +61,7 @@ static int WriteUpdaterPara(int argc, UpdaterPara ¶) cout << "please input correct updater command!" << endl; return -1; } - int res = GetParameter("persist.global.language", "", para.language, MAX_PARA_SIZE); + int res = GetParameter("persist.global.locale", "", para.language, MAX_PARA_SIZE); if (res <= 0) { cout << "Get language parameter failed" << endl; return -1; -- Gitee From e288d952bdfa8caa9d20209e7129b79f1e8acda0 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 11 Feb 2025 12:39:48 +0000 Subject: [PATCH 08/17] judge region to set language Signed-off-by: zhangcan42 --- services/ui/language/language_ui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/ui/language/language_ui.cpp b/services/ui/language/language_ui.cpp index a8b12230..6e117fa9 100644 --- a/services/ui/language/language_ui.cpp +++ b/services/ui/language/language_ui.cpp @@ -170,7 +170,7 @@ bool LanguageUI::LoadLangRes(const JsonNode &node) return true; } -Language LanguageUI::ParseLangIfZh(const char *globalLang) +Language LanguageUI::ParseLangIfZh(const char *globalLang) const { constexpr const char *CN_REGION_UNDERLINE = "_CN"; constexpr const char *CN_REGION_DASH = "-CN"; -- Gitee From bfe070f81ba96bcab822bbdff1bb24185fa0a577 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Tue, 11 Feb 2025 12:41:01 +0000 Subject: [PATCH 09/17] add function ParseLangIfZh Signed-off-by: zhangcan42 --- services/ui/language/language_ui.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/ui/language/language_ui.h b/services/ui/language/language_ui.h index 6b330234..53016e0e 100644 --- a/services/ui/language/language_ui.h +++ b/services/ui/language/language_ui.h @@ -42,7 +42,7 @@ public: Language ParseLanguage() const; Language GetCurLanguage() const; void SetDefaultLanguage(Language language); - Language ParseLangIfZh(const char *globalLang); + Language ParseLangIfZh(const char *globalLang) const; private: ~LanguageUI() = default; LanguageUI(); -- Gitee From 981cfa5cc3bbbdef307fc636ea393689ded7cdff Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Wed, 12 Feb 2025 01:34:51 +0000 Subject: [PATCH 10/17] judge region to set language Signed-off-by: zhangcan42 --- services/ui/language/language_ui.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/ui/language/language_ui.cpp b/services/ui/language/language_ui.cpp index 6e117fa9..11c600a2 100644 --- a/services/ui/language/language_ui.cpp +++ b/services/ui/language/language_ui.cpp @@ -176,8 +176,8 @@ Language LanguageUI::ParseLangIfZh(const char *globalLang) const constexpr const char *CN_REGION_DASH = "-CN"; const char *ptrChar = nullptr; bool isSuffix = false; - if (globalLang == nullptr) { - LOG(ERROR) << "null error"; + if (globalLang == nullptr || *globalLang == '\0') { + LOG(ERROR) << "globalLang null error"; return Language::CHINESE; } ptrChar = strstr(globalLang, "-") == nullptr ? strstr(globalLang, "_") : strstr(globalLang, "-"); -- Gitee From 4728d89f3c3d041f792efb327285ed036df962e7 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Wed, 12 Feb 2025 01:37:51 +0000 Subject: [PATCH 11/17] add UT for ParseLangIfZh Signed-off-by: zhangcan42 --- test/unittest/updater_ui_test/lang/ui_language_unittest.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp index 2e93cf30..eec3c6bd 100644 --- a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp +++ b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp @@ -133,6 +133,9 @@ HWTEST_F(UpdaterUiLangUnitTest, testParseLangIfZh, TestSize.Level0) EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(nullptr), Language::CHINESE); + globalLang = ""; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + globalLang = "zh"; EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); -- Gitee From c42cc418036afc5e8aac33f537b2240fee4c8b84 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Thu, 13 Feb 2025 08:59:03 +0000 Subject: [PATCH 12/17] judge region to set language Signed-off-by: zhangcan42 --- services/ui/language/language_ui.cpp | 36 +++++++++++++--------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/services/ui/language/language_ui.cpp b/services/ui/language/language_ui.cpp index 11c600a2..0649fbc4 100644 --- a/services/ui/language/language_ui.cpp +++ b/services/ui/language/language_ui.cpp @@ -170,33 +170,29 @@ bool LanguageUI::LoadLangRes(const JsonNode &node) return true; } -Language LanguageUI::ParseLangIfZh(const char *globalLang) const +Language LanguageUI::ParseLangIfZh(const std::string &globalLang) const { - constexpr const char *CN_REGION_UNDERLINE = "_CN"; - constexpr const char *CN_REGION_DASH = "-CN"; - const char *ptrChar = nullptr; - bool isSuffix = false; - if (globalLang == nullptr || *globalLang == '\0') { - LOG(ERROR) << "globalLang null error"; + const std::string ZH_CN_REGION_UNDERLINE_PREFIX = "zh_CN"; + const std::string ZH_CN_REGION_DASH_PREFIX = "zh-CN"; + const std::string CN_REGION_UNDERLINE_SUFFIX = "_CN"; + const std::string CN_REGION_DASH_SUFFIX = "-CN"; + + if (globalLang.empty()) { + LOG(ERROR) << "globalLang is empty"; return Language::CHINESE; } - ptrChar = strstr(globalLang, "-") == nullptr ? strstr(globalLang, "_") : strstr(globalLang, "-"); - if (ptrChar == nullptr) { - LOG(ERROR) << "global param doesn't contain '-' or '_'"; + if (globalLang.find("-") == std::string::npos && globalLang.find("_") == std::string::npos) { + LOG(ERROR) << "globalLang doesn't contain '-' or '_'"; return Language::CHINESE; } - if (strncmp(ptrChar, CN_REGION_DASH, strlen(CN_REGION_DASH)) == 0 || strncmp(ptrChar, CN_REGION_UNDERLINE, - strlen(CN_REGION_UNDERLINE)) == 0) { - LOG(INFO) << "check region type at prefix"; + if (globalLang.find(ZH_CN_REGION_UNDERLINE_PREFIX) == 0 || globalLang.find(ZH_CN_REGION_DASH_PREFIX) == 0) { + LOG(INFO) << "starts with zh_CN or zh-CN"; return Language::CHINESE; } - if (strlen(ptrChar) >= strlen(CN_REGION_DASH)) { - ptrChar = ptrChar + strlen(ptrChar) - strlen(CN_REGION_DASH); - isSuffix = true; - } - if (isSuffix && (strncmp(ptrChar, CN_REGION_DASH, strlen(CN_REGION_DASH)) == 0 || - strncmp(ptrChar, CN_REGION_UNDERLINE, strlen(CN_REGION_UNDERLINE)) == 0)) { - LOG(INFO) << "check region type at suffix"; + if ((globalLang.size() >= CN_REGION_DASH_SUFFIX.size()) && (std::equal(CN_REGION_DASH_SUFFIX.rbegin(), + CN_REGION_DASH_SUFFIX.rend(), globalLang.rbegin()) || std::equal(CN_REGION_UNDERLINE_SUFFIX.rbegin(), + CN_REGION_UNDERLINE_SUFFIX.rend(), globalLang.rbegin()))) { + LOG(INFO) << "ends with _CN or -CN"; return Language::CHINESE; } return Language::ENGLISH; -- Gitee From 0a1d1bab1646bec56bd046e942d747d84dfa0ffb Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Thu, 13 Feb 2025 09:02:49 +0000 Subject: [PATCH 13/17] add function ParseLangIfZh Signed-off-by: zhangcan42 --- services/ui/language/language_ui.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/ui/language/language_ui.h b/services/ui/language/language_ui.h index 53016e0e..8abfb748 100644 --- a/services/ui/language/language_ui.h +++ b/services/ui/language/language_ui.h @@ -42,7 +42,7 @@ public: Language ParseLanguage() const; Language GetCurLanguage() const; void SetDefaultLanguage(Language language); - Language ParseLangIfZh(const char *globalLang) const; + Language ParseLangIfZh(const std::string &globalLang) const; private: ~LanguageUI() = default; LanguageUI(); -- Gitee From ea5343d3b628a65c875055972fa11666ce987d04 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Thu, 13 Feb 2025 09:12:24 +0000 Subject: [PATCH 14/17] add UT for ParseLangIfZh Signed-off-by: zhangcan42 --- .../lang/ui_language_unittest.cpp | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp index eec3c6bd..1947556a 100644 --- a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp +++ b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp @@ -131,11 +131,6 @@ HWTEST_F(UpdaterUiLangUnitTest, testParseLangIfZh, TestSize.Level0) { std::string globalLang {}; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(nullptr), Language::CHINESE); - - globalLang = ""; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); - globalLang = "zh"; EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); @@ -145,7 +140,7 @@ HWTEST_F(UpdaterUiLangUnitTest, testParseLangIfZh, TestSize.Level0) globalLang = "zh_CN"; EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); - globalLang = "zh-U"; + globalLang = "zh-US"; EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); globalLang = "zh-Hans-CN"; @@ -156,6 +151,34 @@ HWTEST_F(UpdaterUiLangUnitTest, testParseLangIfZh, TestSize.Level0) globalLang = "zh-Hans-US"; EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); + + globalLang = "zh-Hans"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); + + globalLang = "zh-CN-Hans"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + + // abnormal situations, globalLang doesn't starts with "zh" + globalLang = ""; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + + globalLang = "z"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + + globalLang = "en"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + + globalLang = "-CN"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + + globalLang = "-U"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); + + globalLang = "en-Latn-US"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); + + globalLang = "en-Latn-CN"; + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); } HWTEST_F(UpdaterUiLangUnitTest, testInit01, TestSize.Level0) -- Gitee From 4943aa69bd51175872519b40a0065ae9bce0b4ab Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Thu, 13 Feb 2025 09:19:32 +0000 Subject: [PATCH 15/17] add UT for ParseLangIfZh Signed-off-by: zhangcan42 --- .../lang/ui_language_unittest.cpp | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp index 1947556a..287ecadc 100644 --- a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp +++ b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp @@ -132,53 +132,53 @@ HWTEST_F(UpdaterUiLangUnitTest, testParseLangIfZh, TestSize.Level0) std::string globalLang {}; globalLang = "zh"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); globalLang = "zh-CN"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); globalLang = "zh_CN"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); globalLang = "zh-US"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::ENGLISH); globalLang = "zh-Hans-CN"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); globalLang = "zh-Hans_CN"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); globalLang = "zh-Hans-US"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::ENGLISH); globalLang = "zh-Hans"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::ENGLISH); globalLang = "zh-CN-Hans"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); // abnormal situations, globalLang doesn't starts with "zh" globalLang = ""; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); globalLang = "z"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); globalLang = "en"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); globalLang = "-CN"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); globalLang = "-U"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::ENGLISH); globalLang = "en-Latn-US"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::ENGLISH); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::ENGLISH); globalLang = "en-Latn-CN"; - EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang.c_str()), Language::CHINESE); + EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); } HWTEST_F(UpdaterUiLangUnitTest, testInit01, TestSize.Level0) -- Gitee From 14c98616081fa7c85d25d7e421a3d7ef28901893 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Thu, 13 Feb 2025 09:25:15 +0000 Subject: [PATCH 16/17] add UT for ParseLangIfZh Signed-off-by: zhangcan42 --- test/unittest/updater_ui_test/lang/ui_language_unittest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp index 287ecadc..c3542c79 100644 --- a/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp +++ b/test/unittest/updater_ui_test/lang/ui_language_unittest.cpp @@ -158,7 +158,7 @@ HWTEST_F(UpdaterUiLangUnitTest, testParseLangIfZh, TestSize.Level0) globalLang = "zh-CN-Hans"; EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); - // abnormal situations, globalLang doesn't starts with "zh" + // abnormal situations, globalLang doesn't start with "zh" globalLang = ""; EXPECT_EQ(LanguageUI::GetInstance().ParseLangIfZh(globalLang), Language::CHINESE); -- Gitee From a82f9854e99f8155a2b71a8c0af0b2b2306af270 Mon Sep 17 00:00:00 2001 From: zhangcan42 Date: Fri, 14 Feb 2025 02:52:32 +0000 Subject: [PATCH 17/17] judge region to set language Signed-off-by: zhangcan42 --- services/ui/language/language_ui.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/services/ui/language/language_ui.cpp b/services/ui/language/language_ui.cpp index 0649fbc4..1059c903 100644 --- a/services/ui/language/language_ui.cpp +++ b/services/ui/language/language_ui.cpp @@ -189,9 +189,9 @@ Language LanguageUI::ParseLangIfZh(const std::string &globalLang) const LOG(INFO) << "starts with zh_CN or zh-CN"; return Language::CHINESE; } - if ((globalLang.size() >= CN_REGION_DASH_SUFFIX.size()) && (std::equal(CN_REGION_DASH_SUFFIX.rbegin(), - CN_REGION_DASH_SUFFIX.rend(), globalLang.rbegin()) || std::equal(CN_REGION_UNDERLINE_SUFFIX.rbegin(), - CN_REGION_UNDERLINE_SUFFIX.rend(), globalLang.rbegin()))) { + if ((globalLang.size() >= CN_REGION_DASH_SUFFIX.size()) && + (globalLang.rfind(CN_REGION_DASH_SUFFIX) == globalLang.size() - CN_REGION_DASH_SUFFIX.size() || + globalLang.rfind(CN_REGION_UNDERLINE_SUFFIX) == globalLang.size() - CN_REGION_UNDERLINE_SUFFIX.size())) { LOG(INFO) << "ends with _CN or -CN"; return Language::CHINESE; } @@ -214,10 +214,13 @@ Language LanguageUI::ParseLanguage() const LOG(INFO) << "Language in misc is empty"; return Language::CHINESE; } else if (strncmp(para.language, CHINESE_LANGUAGE_PREFIX, strlen(CHINESE_LANGUAGE_PREFIX)) == 0) { + LOG(INFO) << "para language starts with zh"; return ParseLangIfZh(para.language); } else if (strncmp(para.language, SPANISH_LANGUAGE_PREFIX, strlen(SPANISH_LANGUAGE_PREFIX)) == 0) { + LOG(INFO) << "parsed language is Spanish"; return Language::SPANISH; } else { + LOG(INFO) << "parsed language is English"; return Language::ENGLISH; } #endif -- Gitee