多国语言修改
authorCaisking <3449750381@qq.com>
Mon, 18 Nov 2024 08:55:39 +0000 (16:55 +0800)
committerCaisking <3449750381@qq.com>
Mon, 18 Nov 2024 08:55:39 +0000 (16:55 +0800)
50 files changed:
code/sdk/application/wearable/fd230app/nativelauncher/include/ui_resource_string.h
code/sdk/application/wearable/fd230app/nativeui/add_card/src/AddCardView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmConfigView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/MainAlarmView.cpp
code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantAnswerView.cpp
code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantHfpView.cpp
code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantStartFailedView.cpp
code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantView.cpp
code/sdk/application/wearable/fd230app/nativeui/calculator/src/CalculatorView.cpp
code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp
code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogView.cpp
code/sdk/application/wearable/fd230app/nativeui/classicbluetooth/src/ClassicBlueToothView.cpp
code/sdk/application/wearable/fd230app/nativeui/goal/src/goalhint.cpp
code/sdk/application/wearable/fd230app/nativeui/goal/src/goalother.cpp
code/sdk/application/wearable/fd230app/nativeui/goal/src/goalview.cpp
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartChartView.cpp
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp
code/sdk/application/wearable/fd230app/nativeui/makephone/src/CallerDisplayView.cpp
code/sdk/application/wearable/fd230app/nativeui/makephone/src/WaitingHintsView.cpp
code/sdk/application/wearable/fd230app/nativeui/phone/src/PhoneDirView.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/MusicPlayerTipView.cpp
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingNumLimitView.cpp
code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatView.cpp
code/sdk/application/wearable/fd230app/nativeui/secondaryfunction/src/FastTrainingView.cpp
code/sdk/application/wearable/fd230app/nativeui/set_card/src/SetCardDeleteView.cpp
code/sdk/application/wearable/fd230app/nativeui/set_card/src/SetCardNoCardView.cpp
code/sdk/application/wearable/fd230app/nativeui/set_time_format/src/SetTimeFormatView.cpp
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepNapView.cpp
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemView.cpp
code/sdk/application/wearable/fd230app/nativeui/takephotos/include/TakephotosView.h
code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosView.cpp
code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardView.cpp
code/sdk/application/wearable/service/msg_center/src/notify/charge_notification.cpp
code/sdk/application/wearable/service/msg_center/src/notify/goal_notification.cpp
code/sdk/application/wearable/service/msg_center/src/notify/sleep_notification.cpp
code/sdk/application/wearable/service/msg_center/src/notify/transmitting.cpp
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/en.lang
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/ui_resource_string.h
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/zh.lang
tools/language_tool/Language_xml/input_list_en.txt
tools/language_tool/Language_xml/input_list_zh.txt
tools/language_tool/Language_xml/language_custom.xlsx
tools/language_tool/Language_xml/language_en.xml
tools/language_tool/Language_xml/language_zh.xml
tools/language_tool/font/en.lang
tools/language_tool/font/ui_resource_string.h
tools/language_tool/font/zh.lang

index 8dfb7f5..8c60a07 100644 (file)
@@ -611,7 +611,46 @@ enum UIResourceTextId : uint16_t {
     STR_DIAL_FAIL_LABEL = 598,\r
     STR_MP3_FAIL_TITL = 599,\r
     STR_MP3_FAIL_LABEL = 600,\r
-    STR_MAX_ID = 601,\r
+    STR_CALLSOMEONE = 601,\r
+    STR_BLUENOTE = 602,\r
+    STR_VOICE_FAIL = 603,\r
+    STR_WAKE_VOIVE = 604,\r
+    STR_TIME_SET = 605,\r
+    STR_FORMAT = 606,\r
+    STR_FORMAT_NOTE = 607,\r
+    STR_SLEEP_UPDATE = 608,\r
+    STR_CAMERA = 609,\r
+    STR_GOAL_TITLE = 610,\r
+    STR_HEART_HIAGER = 611,\r
+    STR_CHARG_DOWN = 612,\r
+    STR_CHAEGING = 613,\r
+    STR_GOAL_DOWN = 614,\r
+    STR_OPERAT_FAIL = 615,\r
+    STR_DIAL_NOTE = 616,\r
+    STR_HEART_UNKOWN = 617,\r
+    STR_HEART_AVAILABLE = 618,\r
+    STR_HEART_JUST = 619,\r
+    STR_HEART_MIN_AGO = 620,\r
+    STR_HEART_HOUR_AGO = 621,\r
+    STR_RECORDS_20 = 622,\r
+    STR_RECORDS_NOTE = 623,\r
+    STR_RECORDS_DELETE = 624,\r
+    STR_NEW_INCOM = 625,\r
+    STR_NET_ERROR = 626,\r
+    STR_LANGUAGE_SELECTION_NOTE = 627,\r
+    STR_AUTO_OFF_BLUETOOTH_NOTE2 = 628,\r
+    STR_PHONE_MUSCI_NOTE = 629,\r
+    STR_TIME_FORMAT_SET = 630,\r
+    STR_DIAL_PLATE = 631,\r
+    STR_SLEEP_NOTIFY = 632,\r
+    STR_SLEEP_NOTE = 633,\r
+    STR_MAX_CARD = 634,\r
+    STR_NUM_LENGTH = 635,\r
+    STR_CALL_LIST = 636,\r
+    STR_DELETE_ALL = 637,\r
+    STR_FRE_CONTACT = 638,\r
+    STR_RECORD_MAX = 639,\r
+    STR_MAX_ID = 640,\r
 }; // UIResourceTextId\r
 
 enum FontLanguageId : uint8_t {
index 2cc743c..69feca9 100644 (file)
@@ -127,7 +127,7 @@ namespace OHOS
         toastLabel_.SetPosition(77, 220);
         toastLabel_.Resize(454, 60);
         toastLabel_.SetViewId("toast");
-        toastLabel_.SetText("卡片数量已经到达上限");
+        // toastLabel_.SetTextId(STR_MAX_CARD);//可以不增加多国语言。目前没有该需求
         toastLabel_.SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full);
         toastLabel_.SetStyle(STYLE_BACKGROUND_OPA, 255);
         toastLabel_.SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
index 4c7f8c2..78927fb 100644 (file)
@@ -13,6 +13,7 @@
 #include "color.h"\r
 #include "ConfigModel.h"\r
 #include "ui_resource_string.h"\r
+#include "languagecode/LanguageInit.h"\r
 namespace OHOS\r
 {\r
 #define SET_ALARM "编辑闹钟"\r
@@ -401,7 +402,7 @@ namespace OHOS
         sprintf(showtime, "%02d:%02d", hour, min);\r
         // labelTime->SetTime24Hour(hour, min, 0);\r
         labelTime->SetText(showtime);\r
-        if (ConfigModel::GetInstance()->GetLanguage() == 0)\r
+        if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN)\r
             labelDay->SetText(weekStr.c_str());\r
         else\r
             labelDay->SetText(weekStr_en.c_str());\r
index 81dc01e..c53c176 100644 (file)
@@ -11,6 +11,7 @@
 #include "PhoneService.h"
 #include "ui_resource_string.h"
 #include "ConfigModel.h"
+#include "languagecode/LanguageInit.h"
 
 namespace OHOS {
 static MainAlarmView *g_MainAlarmView = nullptr;
@@ -424,7 +425,7 @@ void MainAlarmView::LabelGetWeek(uint8_t week, int16_t alarmNum)
             weekStr_en += SUN_DAY_EN;
         }
     }
-    if(ConfigModel::GetInstance()->GetLanguage() == 0)
+    if(ConfigModel::GetInstance()->GetLanguage() == ZH_CN)
         dLabel[alarmNum]->SetText(weekStr.c_str());
     else
         dLabel[alarmNum]->SetText(weekStr_en.c_str());
index 6a48af9..4c10069 100644 (file)
@@ -287,7 +287,7 @@ void AssistantAnswerView::InitNoteLabel() {
   notelabel->SetViewId("notelabel");
   notelabel->SetStyle(STYLE_TEXT_FONT, 30);
   //TODO:多国语言
-  notelabel->SetText("试试对我说“打电话给某人”");
+  notelabel->SetTextId(STR_CALLSOMEONE);
   notelabel->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
   notelabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
   notelabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
index 96c99d9..3fdd707 100644 (file)
@@ -111,9 +111,7 @@ bool AssistantHfpView::CreateAssistantHfpViewLabel(void) {
   // }
 
   // TODO:多国语言
-  InitLabel(noteLabel, 53, 230, 360, 105, "label",
-            "请打开通话蓝牙开关后使用语音助手功能", DEFAULT_VECTOR_FONT_FILENAME_EN,
-            30);
+  InitLabelExt(noteLabel, 53, 230, 360, 105, "label", STR_BLUENOTE, DEFAULT_VECTOR_FONT_FILENAME_EN, 30);
   noteLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
   noteLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
   noteLabel->SetRollSpeed(70);
index bf2b3ce..b06321a 100644 (file)
@@ -81,7 +81,7 @@ UIScrollView *AssistantStartFailedView::CreateAssistantStartFailedView(void) {
     Label->SetPosition(53, 250, 360, 35);
     Label->SetStyle(STYLE_TEXT_FONT, 30);
     Label->SetStyle(STYLE_LINE_HEIGHT, 35);
-    Label->SetText("启用语音助手失败"); //启用语音助手失败 TODO::多国语言
+    Label->SetTextId(STR_VOICE_FAIL); //启用语音助手失败 TODO::多国语言
     Label->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
     Label->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
     Label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
index f91c6f5..0eb1685 100644 (file)
@@ -87,7 +87,7 @@ void AssistantView::InitView() {
     AssistantScrollView[ASSISTANT_MAIN_VIEW]->SetStyle(STYLE_BACKGROUND_COLOR,
                                                        Color::Black().full);
     //初始化label TODO::多国语言
-    InitLabel(noteLabel, 53, 339, 360, 35, "label", "点击唤醒语音助手", DEFAULT_VECTOR_FONT_FILENAME_EN, 30);
+    InitLabelExt(noteLabel, 53, 339, 360, 35, "label",STR_WAKE_VOIVE, DEFAULT_VECTOR_FONT_FILENAME_EN, 30);
     //初始化button
     InitButton(wakeButton, 128, 91, 210, 210, WAKE_ASSISTANT);
     wakeButton->SetImageSrc(WAKE_IMAGE, WAKE_IMAGE);
index 7f58806..e416bd2 100644 (file)
@@ -604,7 +604,7 @@ bool CalculatorView::Label_init()
     hint->SetStyle(STYLE_LINE_HEIGHT, 20);
 
     // Set additional property
-    hint->SetText("超过数字长度范围");
+    hint->SetTextId(STR_NUM_LENGTH);
     hint->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
     hint->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
     hint->SetRollSpeed(0);
index a10b13b..113caff 100644 (file)
@@ -528,7 +528,7 @@ bool MulitplePhoneTextReplaces()
         return false;
     }
 
-    CallingView::GetInstance()->GetCallingDisplayLabel()->SetText("正在通话");
+    // CallingView::GetInstance()->GetCallingDisplayLabel()->SetTextId(STR_CALLING);
     CallingView::GetInstance()->GetCallingDurationLabel()->SetText("");
     return true;
 }
index 8d44525..6af814c 100644 (file)
@@ -147,7 +147,7 @@ void CallerLogView::ChangeLabelsStytleLog()
     groupFirst->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
 \r
     labelLog.SetPosition(0, APP_ITEM_FONT_SIZE, HORIZONTAL_RESOLUTION, ICON_X + NUM_20);\r
-    labelLog.SetText("通话记录");\r
+    // labelLog.SetTextId(STR_CALL_LIST);\r
     labelLog.SetTextColor(Color::White());\r
     labelLog.SetFont(DEFAULT_VECTOR_FONT_FILENAME, HEAD_END_FONT_SIZE);\r
     labelLog.SetAlign(TEXT_ALIGNMENT_CENTER);\r
@@ -169,7 +169,7 @@ void CallerLogView::ChangeLabelsStytleClear(int32 groupFinaly, int32 Index)
     groupFinal->SetOnClickListener(clickLeftListener);\r
 \r
     labelClear.SetPosition(0, NUM_20, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);\r
-    labelClear.SetText("全部清除");\r
+    // labelClear.SetTextId(STR_DELETE_ALL);\r
     labelClear.SetTextColor(Color::White());\r
     labelClear.SetFont(DEFAULT_VECTOR_FONT_FILENAME, HEAD_END_FONT_SIZE);\r
     labelClear.SetAlign(TEXT_ALIGNMENT_CENTER);\r
index 77a5e40..54cb4eb 100644 (file)
@@ -193,7 +193,7 @@ namespace OHOS
         //.text = "注:开启后10分钟没连接成功会自动关闭,因为传统蓝牙长时间打开会增加电耗,建议在有需要的时候使用(该功能主要用于电话拨打/通知、音乐控制/传输等)",\r
         // AttentionLabel->SetTextId(STR_AUTO_OFF_BLUETOOTH_NOTE);\r
         //TODO:多国语言\r
-        AttentionLabel->SetText("注:开启后10分钟没连接成功会自动关闭,因为传统蓝牙长时间打开会增加耗电,建议在有需要的时候使用(该功能主要用于电话拨打/通知、音乐控制/传输等)");\r
+        AttentionLabel->SetTextId(STR_AUTO_OFF_BLUETOOTH_NOTE2);\r
         AttentionLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
         AttentionLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
         AttentionLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); // 断行模式。\r
index d695a87..f13a0ef 100644 (file)
@@ -76,7 +76,7 @@ namespace OHOS
         goalhintlabel->SetStyle(STYLE_TEXT_FONT, 30);
 
         // Set additional property
-        goalhintlabel->SetText("目标设置及更多数据请前往手机APP查看");
+        // goalhintlabel->SetText("目标设置及更多数据请前往手机APP查看");
         goalhintlabel->SetTextId(STR_GOAL_HINT);
         goalhintlabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
         goalhintlabel->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));
index f17ad65..f83204f 100644 (file)
@@ -234,7 +234,7 @@ namespace OHOS
         mileagegoalTitle->SetStyle(STYLE_TEXT_FONT, 30);
 
         // Set additional property
-        mileagegoalTitle->SetText("里程(KM)");
+        // mileagegoalTitle->SetText("里程(KM)");
         mileagegoalTitle->SetTextId(STR_MILEAGE);
         mileagegoalTitle->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
         mileagegoalTitle->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
@@ -251,7 +251,7 @@ namespace OHOS
         fatburninggoalTitle->SetStyle(STYLE_TEXT_FONT, 30);
 
         // Set additional property
-        fatburninggoalTitle->SetText("燃脂时间");
+        // fatburninggoalTitle->SetText("燃脂时间");
         fatburninggoalTitle->SetTextId(STR_FAT_BURNING_TIME);
         fatburninggoalTitle->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
         fatburninggoalTitle->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
@@ -267,7 +267,7 @@ namespace OHOS
         standgoalTitle->SetViewId("label1");// Set style
         standgoalTitle->SetStyle(STYLE_TEXT_FONT, 30);
         // Set additional property
-        standgoalTitle->SetText("站立次数");
+        // standgoalTitle->SetText("站立次数");
         standgoalTitle->SetTextId(STR_NUMBER_OF_STANDS);
         standgoalTitle->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
         standgoalTitle->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
@@ -283,7 +283,7 @@ namespace OHOS
         caloriegoalTitle->SetViewId("label1");// Set style
         caloriegoalTitle->SetStyle(STYLE_TEXT_FONT, 30);
         // Set additional property
-        caloriegoalTitle->SetText("消耗卡路里");
+        // caloriegoalTitle->SetText("消耗卡路里");
         caloriegoalTitle->SetTextId(STR_CONSUME_CALORIES);
         caloriegoalTitle->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
         caloriegoalTitle->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
index 7458f5b..5c7b978 100644 (file)
@@ -156,7 +156,7 @@ namespace OHOS
         goalTitle->SetStyle(STYLE_TEXT_FONT, 30);
 
         // Set additional property
-        goalTitle->SetText("今日步数");
+        // goalTitle->SetText("今日步数");
         goalTitle->SetTextId(STR_STEPS_OF_THE_DAY);
         goalTitle->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
         goalTitle->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
index 4438ac4..0f85e62 100644 (file)
@@ -435,6 +435,8 @@ void HeartChartView::InitChartLabel() {
   //上一次检测信息
   InitLabel(lastheart_, 53, 130, 360, 35, "label", "--",
             DEFAULT_VECTOR_FONT_FILENAME_EN, 30);
+  lastheart_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+  lastheart_->SetRollSpeed(70);
   //最小心率 不居中
   InitLabelAdapt(minheart_, 293, 380, 200, 35, "label", "--",
                  DEFAULT_VECTOR_FONT_FILENAME_EN, 35);
index 7a54b15..8f55cea 100644 (file)
@@ -38,6 +38,7 @@
 \r
 #include "battery_hal.h"\r
 #include "ui_service.h"\r
+#include "languagecode/LanguageInit.h"\r
 \r
 #ifdef __cplusplus\r
 extern "C" {\r
@@ -117,8 +118,8 @@ static void Notify(void *args, const Topic topic, Request *request) {
     return;\r
   }\r
   if (request->msgId == TOPIC_EVENT_HEARTRATE_UPDATA) {\r
-      GraphicService::GetInstance()->PostGraphicEvent(std::bind(\r
-      &HeartModel::RefreshHeartRateScreen, HeartModel::GetInstance()));\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(\r
+        &HeartModel::RefreshHeartRateScreen, HeartModel::GetInstance()));\r
   }\r
 }\r
 \r
@@ -498,7 +499,8 @@ void HeartModel::Heart_Save() {
 #else\r
   HealthService::GetInstance()->send_heart_save();\r
   // 将更新曲线写到这里提前更新\r
-  HealthService::GetInstance()->UpdateHourlyHeartRate(timestamp_ms, currentheart);\r
+  HealthService::GetInstance()->UpdateHourlyHeartRate(timestamp_ms,\r
+                                                      currentheart);\r
 #endif\r
   // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "保存的心率数据:%d%ld",\r
   // currentheart,data.timestamp);\r
@@ -773,58 +775,74 @@ uint16_t *HeartModel::GetArrayData() { return dynamic_heartrate; }
 // 获取检测字符串\r
 // 获取检测字符串\r
 // TODO: 适配多国语言\r
-std::string HeartModel::GetCheckString() {\r
-  std::string check_string = "检测结果未知"; // 默认返回值\r
-\r
-  // 获取检测数据\r
-  if (currentheart == 0) {\r
-    check_string = "暂无检测数据";\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测数据:%s",\r
-                  check_string.c_str()); // 打印无检测数据信息\r
-    return check_string;                 // 直接返回,无需继续处理\r
-  }\r
-\r
-  // 获取目前的时间戳\r
-  uint32_t currentTime;\r
-  if (uapi_get_timestampe_ss(&currentTime) != ERRCODE_SUCC) {\r
-    check_string = "获取当前时间戳失败"; // 如果获取时间戳失败,返回相应的信息\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
-                  "获取当前时间戳失败"); // 打印错误信息\r
-    return check_string; // 直接返回,无法进行后续计算\r
-  }\r
-\r
-  // 检查时间戳是否有效\r
-  if (timestamp_ms == 0) {\r
-    check_string = std::to_string(currentheart) + " " + "时间戳无效,无法检测";\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "时间戳无效,无法检测:%s",\r
-                  check_string.c_str());\r
-    return check_string; // 直接返回,无需继续处理\r
-  }\r
-\r
-  // 进行时间戳相减计算\r
-  uint32_t diff = currentTime - timestamp_ms;\r
-  uint32_t diff_min = diff / 60;      // 计算分钟差\r
-  uint32_t diff_hour = diff_min / 60; // 计算小时差\r
-\r
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "当前时间:%d,上次检测时间:%d",\r
-                currentTime, timestamp_ms); // 打印时间信息\r
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
-                "时间差(秒):%d,时间差(分钟):%d,时间差(小时):%d", diff, diff_min,\r
-                diff_hour); // 打印时间差信息\r
-\r
-  // 根据时间差生成检测字符串\r
-  if (diff_min < 1) {\r
-    check_string = std::to_string(currentheart) + "次/分 " + "刚刚检测";\r
-  } else if (diff_hour < 1) { // 一个小时内\r
-    check_string = std::to_string(currentheart) + "次/分 " +\r
-                   std::to_string(diff_min) + "分钟前";\r
-  } else {\r
-    check_string = std::to_string(currentheart) + "次/分 " + "超过一个小时前";\r
-  }\r
-\r
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测结果:%s",\r
-                check_string.c_str()); // 打印最终检测结果\r
-  return check_string;\r
+std::string HeartModel::GetCheckString() {  \r
+    std::string check_string = "检测结果未知"; \r
+\r
+    // 获取检测数据  \r
+    if (currentheart == 0) {  \r
+        if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {  \r
+            check_string = "暂无检测数据";\r
+        } else {  \r
+            check_string = "No detection data is available";  \r
+        }  \r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测数据:%s", check_string.c_str());\r
+        return check_string; \r
+    }  \r
+\r
+    // 获取目前的时间戳  \r
+    uint32_t currentTime;  \r
+    if (uapi_get_timestampe_ss(&currentTime) != ERRCODE_SUCC) {  \r
+        if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {  \r
+            check_string = "获取当前时间失败"; \r
+        } else {  \r
+            check_string = "Get time failed"; \r
+        }  \r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "获取当前时间失败");  \r
+        return check_string; \r
+    }  \r
+\r
+    // 检查时间戳是否有效  \r
+    if (timestamp_ms == 0) {  \r
+        if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {  \r
+            check_string = std::to_string(currentheart) + " " + "时间无效,无法检测";\r
+        } else {  \r
+            check_string = std::to_string(currentheart) + " " + "Invalid time, cannot detect"; \r
+        }  \r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "时间戳无效,无法检测:%s", check_string.c_str());  \r
+        return check_string; \r
+    }  \r
+\r
+    // 进行时间戳相减计算  \r
+    uint32_t diff = currentTime - timestamp_ms;  \r
+    uint32_t diff_min = diff / 60;     \r
+    uint32_t diff_hour = diff_min / 60;  \r
+\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "当前时间:%d, 上次检测时间:%d", currentTime, timestamp_ms); \r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "时间差(秒):%d, 时间差(分钟):%d, 时间差(小时):%d", diff, diff_min, diff_hour); \r
+\r
+    // 根据时间差生成检测字符串  \r
+    if (diff_min < 1) {  \r
+        if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {  \r
+            check_string = std::to_string(currentheart) + "次/分 " + "刚刚检测"; // \r
+        } else {  \r
+            check_string = std::to_string(currentheart) + " bpm " + "Just detected"; \r
+        }  \r
+    } else if (diff_hour < 1) { // Within one hour  \r
+        if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {  \r
+            check_string = std::to_string(currentheart) + "次/分 " + std::to_string(diff_min) + "分钟前"; \r
+        } else {  \r
+            check_string = std::to_string(currentheart) + " bpm " + std::to_string(diff_min) + " minutes ago"; \r
+        }  \r
+    } else {  \r
+        if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {  \r
+            check_string = std::to_string(currentheart) + "次/分 " + "超过一个小时前"; \r
+        } else {  \r
+            check_string = std::to_string(currentheart) + " bpm " + "More than an hour ago"; \r
+        }  \r
+    }  \r
+\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "检测结果:%s", check_string.c_str()); \r
+    return check_string; // Return the final string  \r
 }\r
 \r
 // 声明定时器变量\r
index 0cf46bf..86d7179 100644 (file)
@@ -188,7 +188,7 @@ bool CallerDisplayView::InitUILabelDisplay()
     label_call_hint->SetStyle(STYLE_TEXT_FONT, 30);
 
     // Set additional property
-    label_call_hint->SetText("挂断/接听");
+    // label_call_hint->SetText("挂断/接听");
     label_call_hint->SetTextId(STR_HANG_UP_OR_ANSWER);
     
     label_call_hint->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
index 0297439..69f214a 100644 (file)
@@ -221,7 +221,7 @@ bool WaitingHintsView::InitUILabelDisplay()
     label_call_hint->SetStyle(STYLE_TEXT_FONT, 30);
 
     // Set additional property
-    label_call_hint->SetText("挂断/接听");
+    // label_call_hint->SetText("挂断/接听");
     label_call_hint->SetTextId(STR_HANG_UP_OR_ANSWER);
     
     label_call_hint->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
@@ -243,12 +243,12 @@ bool WaitingHintsView::InitUILabelDisplay()
     // Set additional property
     if (CallerLogModel::GetInstance()->GetCallSource() == CallerLogModel::CallSourceCat1) 
     {   
-        label_call_source->SetText("手表来电");
+        // label_call_source->SetText("手表来电");
         label_call_source->SetTextId(STR_WATCH_CALL);
     }
     else
     {
-        label_call_source->SetText("手机来电");
+        // label_call_source->SetText("手机来电");
         label_call_source->SetTextId(STR_PHONE_CALL);
     }
    
index 88a7fd5..e858cc9 100644 (file)
@@ -375,7 +375,7 @@ namespace OHOS
         label1_no->SetStyle(STYLE_TEXT_FONT, 30);\r
 \r
         // Set additional property\r
-        label1_no->SetText("常用联系人");\r
+        label1_no->SetTextId(STR_FRE_CONTACT);\r
         label1_no->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
         label1_no->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
         label1_no->SetRollSpeed(0);\r
@@ -398,7 +398,7 @@ namespace OHOS
         label2_no->SetStyle(STYLE_TEXT_FONT, 26);\r
 \r
         // Set additional property\r
-        label2_no->SetText("未添加联系人,请前往APP进行设置");\r
+        // label2_no->SetText("未添加联系人,请前往APP进行设置");\r
         label2_no->SetTextId(STR_NO_CONTACTS_ADDED);\r
         label2_no->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
         label2_no->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
@@ -468,7 +468,7 @@ namespace OHOS
         label1_->SetViewId("label1");// Set style\r
         label1_->SetStyle(STYLE_TEXT_FONT, 30);\r
 \r
-        label1_->SetText("常用联系人");\r
+        label1_->SetTextId(STR_FRE_CONTACT);\r
         label1_->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
         label1_->SetTextId(STR_FAVORITE_CONTACTS);\r
         //label1_->SetTextColor(Color::GetColorFromRGBA(0xac, 0xa4, 0xa4, 0xff));\r
index 12537a8..4973b35 100644 (file)
@@ -154,7 +154,8 @@ namespace OHOS
             noteLabel->SetPosition(53, 230, 360, 35);
             noteLabel->SetStyle(STYLE_TEXT_FONT, 30);
             noteLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
-            noteLabel->SetText("手表正在播放手机音乐,不能对本地音乐进行操作。");
+            // noteLabel->SetText("手表正在播放手机音乐,不能对本地音乐进行操作");
+            noteLabel->SetTextId(STR_PHONE_MUSCI_NOTE);
             noteLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
             noteLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
             noteLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
index 32e4216..e9d0242 100644 (file)
@@ -154,7 +154,7 @@ namespace OHOS
                 note->SetPosition(53, 222, 360, 70);   // 位置大小
                 note->SetStyle(STYLE_TEXT_FONT, 30);   // 字体大小
                 note->SetStyle(STYLE_LINE_HEIGHT, 35); // 字体行高
-                note->SetText("录音空间已满");
+                note->SetTextId(STR_RECORD_MAX);
                 note->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); // 断行模式。
                 note->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
                 note->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
index df25a43..dc3e4b5 100644 (file)
@@ -543,7 +543,7 @@ namespace OHOS
         datelabel->SetViewId("label2");\r
         datelabel->SetStyle(STYLE_TEXT_FONT, 30);\r
 \r
-        datelabel->SetText("04-22 周五");\r
+        // datelabel->SetText("04-22 周五");\r
         datelabel->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);\r
         datelabel->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));\r
         datelabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
index 9f4eb8a..3eb52eb 100644 (file)
@@ -100,7 +100,7 @@ namespace OHOS
         label->SetStyle(STYLE_TEXT_FONT, 30);\r
         label->SetStyle(STYLE_LINE_HEIGHT, 35);\r
         // Set additional property\r
-        label->SetText("快速训练");\r
+        // label->SetText("快速训练");\r
         label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
         label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
         label->SetRollSpeed(0);\r
index d957515..195276e 100644 (file)
@@ -36,7 +36,7 @@ bool SetCardDeleteView::InitView()
     confirmBtn.SetPosition(184, 118);\r
     confirmBtn.Resize(86, 50);\r
     confirmBtn.SetViewId(SET_CARD_DEL_CONFIRM);\r
-    confirmBtn.SetText("删除");\r
+    // confirmBtn.SetText("删除");\r
     confirmBtn.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
     confirmBtn.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
     confirmBtn.SetOnClickListener(presenter_);\r
@@ -44,7 +44,7 @@ bool SetCardDeleteView::InitView()
     cancelBtn.SetPosition(186, 231);\r
     cancelBtn.Resize(82, 50);\r
     cancelBtn.SetViewId(SET_CARD_DEL_CANCEL);\r
-    cancelBtn.SetText("取消");\r
+    // cancelBtn.SetText("取消");\r
     cancelBtn.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
     cancelBtn.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
     cancelBtn.SetOnClickListener(presenter_);\r
index 15cb462..5ea9133 100644 (file)
@@ -34,7 +34,7 @@ bool SetCardNoCardView::InitView()
     addBtn.SetPosition(184, 118);\r
     addBtn.Resize(86, 50);\r
     addBtn.SetViewId(SET_CARD_ADD);\r
-    addBtn.SetText("添加");\r
+    // addBtn.SetText("添加");\r
     addBtn.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
     addBtn.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
     addBtn.SetOnClickListener(presenter_);\r
index f87a67a..9411194 100644 (file)
@@ -48,7 +48,7 @@ void SetTimeFormatView::OnSetUpView() {
   labelTitle_.SetPosition(83, 50, 300, 60);
   labelTitle_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
   // labelTitle_.SetTextId(STR_BROWSING_SPECIAL_EFFECTS);
-  labelTitle_.SetText("时间设置"); // TODO:多国语言
+  labelTitle_.SetTextId(STR_TIME_SET); // TODO:多国语言
   labelTitle_.SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); // 居中
   labelTitle_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
   container_->Add(&labelTitle_);
@@ -56,7 +56,7 @@ void SetTimeFormatView::OnSetUpView() {
   labelFormat24H_.SetPosition(90, 153, 200, 60);
   labelFormat24H_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
   // labelFormat24H_.SetTextId(STR_OVERLAY_FLOW);
-  labelFormat24H_.SetText("24小时制"); // TODO:多国语言
+  labelFormat24H_.SetTextId(STR_FORMAT); // TODO:多国语言
   container_->Add(&labelFormat24H_);
 
   btnFormat24H_.SetPosition(298, 145, 100, 50);
@@ -66,7 +66,7 @@ void SetTimeFormatView::OnSetUpView() {
 
   labelNote_.SetPosition(53, 240, 360, 100);
   labelNote_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);
-  labelNote_.SetText("注: 开启为24小时制显示,关闭则按照12小时制显示");
+  labelNote_.SetTextId(STR_FORMAT_NOTE);
   container_->Add(&labelNote_);
 
   const TimeFormat style = SetTimeFormatModel::GetInstance().GetTimeStyle();
index b229224..d11921f 100644 (file)
@@ -95,7 +95,7 @@ bool SleepNapView::InitPage(void) {
   /* -------------------------------- title初始化
    * -------------------------------- */
   //TODO:多国语言
-  InitLabel(naptitle, 83, 90, 300, 35, "resttitle", "小睡数据",
+  InitLabelExt(naptitle, 83, 90, 300, 35, "resttitle",STR_NAP,
             DEFAULT_VECTOR_FONT_FILENAME_EN, 30);
   InitLabelExt(napsleeptitle, 21, 203, 200, 35, "sleeptitle", STR_SLEEPTIME,
                DEFAULT_VECTOR_FONT_FILENAME, 30);
index 4507228..d1765d5 100644 (file)
 #include "sleep/include/SleepView.h"
 #include "ConfigModel.h"
-#include "sleep/include/SleepModel.h"
 #include "common/image_cache_manager.h"
+#include "languagecode/LanguageInit.h"
+#include "sleep/include/SleepModel.h"
 #include "uicomponents/UIComponents.h"
-namespace OHOS
-{
-    static constexpr char *roomimagePath = "/user/res/Sleep/room.bin";
-    static constexpr char *upimagePath = "/user/res/Sleep/up.bin";
-    static constexpr const char *prossimagePath = "/user/res/step/step_b.bin";
-
-    static SleepView *g_pSleepView{nullptr};
-    SleepView::SleepView()
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepView::SleepView");
-        SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-        SetViewIndex(0); // 视图索引
-
-        g_pSleepView = this;
-    }
-
-    SleepView::~SleepView()
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " SleepView::~SleepView");
-        ClearAll();
-
-        g_pSleepView = nullptr;
-    }
-
-    void SleepView::SleepDataRefresh()
-    {
-        // 获取睡眠数据内存
-        SleepModel &sleepModel = SleepModel::GetInstance();
-        sleepModel.ReInitData();
-
-        int sleep_hour = sleepModel.get_sleep_hour();
-        int sleep_min = sleepModel.get_sleep_min();
-        int total_sleep = sleepModel.get_sleep_total();
-        int sleep_goal = sleepModel.get_sleep_goal();
-
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepDataRefresh %d %d sleep_goal:%d total_sleep:%d", sleep_hour, sleep_min, sleep_goal * 60, total_sleep);
-
-        // 补零操作
-        std::string hour_str = (sleep_hour < 10) ? "0" + std::to_string(sleep_hour) : std::to_string(sleep_hour);
-        std::string min_str = (sleep_min < 10) ? "0" + std::to_string(sleep_min) : std::to_string(sleep_min);
-
-        // 有数据才刷新
-        if (sleep_hour != 0 || sleep_min != 0)
-        {
-            // 更新时间显示
-            if (time_hour != nullptr)
-            {
-                time_hour->SetText(hour_str.c_str());
-            }
-            if (time_minute != nullptr)
-            {
-                time_minute->SetText(min_str.c_str());
-            }
-
-            // 计算进度百分比,确保目标睡眠时间不为零
-            float progress_value = 0.0f;
-            if (sleep_goal > 0)
-            {
-                progress_value = static_cast<float>(total_sleep) / (sleep_goal * 60); // 计算进度
-            }
-
-            // 日志输出进度百分比
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Progress value: %.2f%%", progress_value * 100); // 显示为百分比
-
-            // 更新进度条
-            circleProgress_->SetValue(progress_value * 100); // 更新进度条值,范围为 0 到 100
-            circleProgress_->SetCapType(CAP_ROUND);
-        }
-        // 更新时间  
-        if (sleep_update_time != nullptr)  
-        {  
-            std::string update_time = sleepModel.GetUpdateSleepTime();
-            if (!update_time.empty()) // 检查返回值是否有效
-            {
-                //TODO:多国语言
-                std::string update_time_str = update_time + " 更新"; // 拼接字符串  
-                sleep_update_time->SetText(update_time_str.c_str());  
-                // UpdateLabel(sleep_update_time, sleep_goal, STR_SLEEPMGOAL); // TODO: 多国语言支持  
-            }  
-        }
-        // 刷新视图
-        RootView::GetInstance()->Invalidate();
-    }
-
-    void SleepView::ClearAll()
-    {
-        RemoveAll();
-        if (circleProgress_ != nullptr)
-        {
-            delete circleProgress_;
-            circleProgress_ = nullptr;
-        }
-        if (title != nullptr)
-        {
-            delete title;
-            title = nullptr;
-        }
-        if (hour != nullptr)
-        {
-            delete hour;
-            hour = nullptr;
-        }
-        if (minute != nullptr)
-        {
-            delete minute;
-            minute = nullptr;
-        }
-        if (time_hour != nullptr)
-        {
-            delete time_hour;
-            time_hour = nullptr;
-        }
-        if (time_minute != nullptr)
-        {
-            delete time_minute;
-            time_minute = nullptr;
-        }
-        if (sleep_update_time != nullptr)
-        {
-            delete sleep_update_time;
-            sleep_update_time = nullptr;
-        }
-        if (roomimage != nullptr)
-        {
-            delete roomimage;
-            roomimage = nullptr;
-        }
-        if (upiconimage != nullptr)
-        {
-            delete upiconimage;
-            upiconimage = nullptr;
-        }
-        if (progress_image != nullptr)
-        {
-            delete progress_image;
-            progress_image = nullptr;
-        }
-    }
-
-    SleepView *SleepView::GetInstance()
-    {
-        return g_pSleepView;
+namespace OHOS {
+static constexpr char *roomimagePath = "/user/res/Sleep/room.bin";
+static constexpr char *upimagePath = "/user/res/Sleep/up.bin";
+static constexpr const char *prossimagePath = "/user/res/step/step_b.bin";
+
+static SleepView *g_pSleepView{nullptr};
+SleepView::SleepView() {
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepView::SleepView");
+  SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+  SetViewIndex(0); // 视图索引
+
+  g_pSleepView = this;
+}
+
+SleepView::~SleepView() {
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " SleepView::~SleepView");
+  ClearAll();
+
+  g_pSleepView = nullptr;
+}
+
+void SleepView::SleepDataRefresh() {
+  // 获取睡眠数据内存
+  SleepModel &sleepModel = SleepModel::GetInstance();
+  sleepModel.ReInitData();
+
+  int sleep_hour = sleepModel.get_sleep_hour();
+  int sleep_min = sleepModel.get_sleep_min();
+  int total_sleep = sleepModel.get_sleep_total();
+  int sleep_goal = sleepModel.get_sleep_goal();
+
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                "SleepDataRefresh %d %d sleep_goal:%d total_sleep:%d",
+                sleep_hour, sleep_min, sleep_goal * 60, total_sleep);
+
+  // 补零操作
+  std::string hour_str = (sleep_hour < 10) ? "0" + std::to_string(sleep_hour)
+                                           : std::to_string(sleep_hour);
+  std::string min_str = (sleep_min < 10) ? "0" + std::to_string(sleep_min)
+                                         : std::to_string(sleep_min);
+
+  // 有数据才刷新
+  if (sleep_hour != 0 || sleep_min != 0) {
+    // 更新时间显示
+    if (time_hour != nullptr) {
+      time_hour->SetText(hour_str.c_str());
     }
-
-    /*初始化界面*/
-    bool SleepView::InitPage(void)
-    {
-        /*初始化title*/
-        InitLabelExt(title, 83, 50, 300, 35, "labletitle", STR_SLEEP_YESTERDAY, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        /*初始化单位*/
-        InitLabelExt(hour, 157, 246, 75, 75, "lablehour", STR_HOUR, DEFAULT_VECTOR_FONT_FILENAME, 26);
-        hour->SetTextColor(Color::Gray());
-        InitLabelExt(minute, 295, 246, 100, 75, "lableminute", STR_MIN, DEFAULT_VECTOR_FONT_FILENAME, 26);
-        minute->SetTextColor(Color::Gray());
-        /*初始化image*/
-        InitImageView(roomimage, 192, 127, 82, 82, "image", roomimagePath);
-        InitImageView(upiconimage, 213, 420, 40, 40, "image", upimagePath);
-        InitImageView(progress_image, 28, 80, 100, 100, "image", prossimagePath);
-        /*初始化目标时间*/
-        //DEFAULT_VECTOR_FONT_FILENAME_EN
-        InitLabelExt(sleep_update_time, 83, 330, 300, 35, "lablegoal", STR_SLEEPMGOAL, DEFAULT_VECTOR_FONT_FILENAME_EN, 30);
-        sleep_update_time->SetTextColor(Color::Gray());
-        /*初始化睡眠时间*/
-        time_hour = new UILabel();
-        time_hour->SetPosition(84, 237);
-        time_hour->Resize(40, 75);
-        time_hour->SetViewId("time_hour");
-        time_hour->SetText("--");
-        time_hour->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        time_hour->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        time_hour->SetFont(GILROY_BOLD_FONT, 65);
-
-        time_minute = new UILabel();
-        time_minute->SetPosition(240, 237);
-        time_minute->Resize(40, 75);
-        time_minute->SetViewId("time_minute");
-        time_minute->SetText("--");
-        time_minute->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        time_minute->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        time_minute->SetFont(GILROY_BOLD_FONT, 65);
-        /* --------------------------------- 初始化进度条 --------------------------------- */
-        circleProgress_ = new UICircleProgress();
-        if (circleProgress_ == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "circleProgress new fail");
-            return false;
-        }
-        circleProgress_->SetPosition(0, 0);        
-        circleProgress_->Resize(466, 466);      
-        circleProgress_->SetViewId("circleProgress1");
-        circleProgress_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
-        circleProgress_->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
-        circleProgress_->SetBackgroundStyle(STYLE_BACKGROUND_OPA, 0x00);
-        circleProgress_->SetBackgroundStyle(STYLE_BORDER_OPA, 0x00);
-        circleProgress_->SetBackgroundStyle(STYLE_LINE_OPA, 0x00);
-        circleProgress_->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff2195F6);
-        circleProgress_->SetForegroundStyle(STYLE_BORDER_COLOR, 0xff000000);
-        circleProgress_->SetForegroundStyle(STYLE_LINE_COLOR, 0xff5320e2);
-        circleProgress_->SetForegroundStyle(STYLE_LINE_WIDTH, 20);
-        circleProgress_->SetCenterPosition(233, 229);
-        circleProgress_->SetRadius(205);
-        circleProgress_->SetStartAngle(320);
-        circleProgress_->SetEndAngle(40);
-        circleProgress_->SetCapType(CAP_ROUND);
-        /* -------------------------------- 将组件添加到根视图 ------------------------------- */
-        Add(progress_image);
-        Add(circleProgress_);
-        Add(title);
-        Add(hour);
-        Add(minute);
-        Add(time_hour);
-        Add(time_minute);
-        Add(sleep_update_time);
-        Add(upiconimage);
-        Add(roomimage);
-
-        viewInitStatus = true;
-        return true;
+    if (time_minute != nullptr) {
+      time_minute->SetText(min_str.c_str());
     }
 
-    bool SleepView::InitView(void *caller)
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepView InitView %p", caller);
-        if (InitPage() == false)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepView::InitPage fail");
-            return false;
-        }
-        SleepDataRefresh(); // 刷新数据
-        SetDraggable(true);
-        SetTouchable(true);
-        return true;
+    // 计算进度百分比,确保目标睡眠时间不为零
+    float progress_value = 0.0f;
+    if (sleep_goal > 0) {
+      progress_value =
+          static_cast<float>(total_sleep) / (sleep_goal * 60); // 计算进度
     }
 
-    bool SleepView::GetInitViewState(void)
+    // 日志输出进度百分比
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Progress value: %.2f%%",
+                  progress_value * 100); // 显示为百分比
+
+    // 更新进度条
+    circleProgress_->SetValue(progress_value *
+                              100); // 更新进度条值,范围为 0 到 100
+    circleProgress_->SetCapType(CAP_ROUND);
+  }
+  // 更新时间
+  if (sleep_update_time != nullptr) {
+    std::string update_time = sleepModel.GetUpdateSleepTime();
+    if (!update_time.empty()) // 检查返回值是否有效
     {
-        return viewInitStatus;
+      std::string update_time_str;
+          // TODO:多国语言
+        if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {
+        update_time_str = update_time + " 更新";
+      }
+      else {
+        update_time_str = update_time + " update";
+      }
+      sleep_update_time->SetText(update_time_str.c_str());
+      // UpdateLabel(sleep_update_time, sleep_goal, STR_SLEEPMGOAL); // TODO:
+      // 多国语言支持
     }
-}
\ No newline at end of file
+  }
+  // 刷新视图
+  RootView::GetInstance()->Invalidate();
+}
+
+void SleepView::ClearAll() {
+  RemoveAll();
+  if (circleProgress_ != nullptr) {
+    delete circleProgress_;
+    circleProgress_ = nullptr;
+  }
+  if (title != nullptr) {
+    delete title;
+    title = nullptr;
+  }
+  if (hour != nullptr) {
+    delete hour;
+    hour = nullptr;
+  }
+  if (minute != nullptr) {
+    delete minute;
+    minute = nullptr;
+  }
+  if (time_hour != nullptr) {
+    delete time_hour;
+    time_hour = nullptr;
+  }
+  if (time_minute != nullptr) {
+    delete time_minute;
+    time_minute = nullptr;
+  }
+  if (sleep_update_time != nullptr) {
+    delete sleep_update_time;
+    sleep_update_time = nullptr;
+  }
+  if (roomimage != nullptr) {
+    delete roomimage;
+    roomimage = nullptr;
+  }
+  if (upiconimage != nullptr) {
+    delete upiconimage;
+    upiconimage = nullptr;
+  }
+  if (progress_image != nullptr) {
+    delete progress_image;
+    progress_image = nullptr;
+  }
+}
+
+SleepView *SleepView::GetInstance() { return g_pSleepView; }
+
+/*初始化界面*/
+bool SleepView::InitPage(void) {
+  /*初始化title*/
+  InitLabelExt(title, 83, 50, 300, 35, "labletitle", STR_SLEEP_YESTERDAY,
+               DEFAULT_VECTOR_FONT_FILENAME, 30);
+  /*初始化单位*/
+  InitLabelExt(hour, 157, 246, 75, 75, "lablehour", STR_HOUR,
+               DEFAULT_VECTOR_FONT_FILENAME, 26);
+  hour->SetTextColor(Color::Gray());
+  InitLabelExt(minute, 295, 246, 100, 75, "lableminute", STR_MIN,
+               DEFAULT_VECTOR_FONT_FILENAME, 26);
+  minute->SetTextColor(Color::Gray());
+  /*初始化image*/
+  InitImageView(roomimage, 192, 127, 82, 82, "image", roomimagePath);
+  InitImageView(upiconimage, 213, 420, 40, 40, "image", upimagePath);
+  InitImageView(progress_image, 28, 80, 100, 100, "image", prossimagePath);
+  /*初始化目标时间*/
+  // DEFAULT_VECTOR_FONT_FILENAME_EN
+  InitLabelExt(sleep_update_time, 83, 330, 300, 35, "lablegoal", STR_SLEEPMGOAL,
+               DEFAULT_VECTOR_FONT_FILENAME_EN, 30);
+  sleep_update_time->SetTextColor(Color::Gray());
+  /*初始化睡眠时间*/
+  time_hour = new UILabel();
+  time_hour->SetPosition(84, 237);
+  time_hour->Resize(40, 75);
+  time_hour->SetViewId("time_hour");
+  time_hour->SetText("--");
+  time_hour->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+  time_hour->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+  time_hour->SetFont(GILROY_BOLD_FONT, 65);
+
+  time_minute = new UILabel();
+  time_minute->SetPosition(240, 237);
+  time_minute->Resize(40, 75);
+  time_minute->SetViewId("time_minute");
+  time_minute->SetText("--");
+  time_minute->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+  time_minute->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+  time_minute->SetFont(GILROY_BOLD_FONT, 65);
+  /* --------------------------------- 初始化进度条
+   * --------------------------------- */
+  circleProgress_ = new UICircleProgress();
+  if (circleProgress_ == nullptr) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "circleProgress new fail");
+    return false;
+  }
+  circleProgress_->SetPosition(0, 0);
+  circleProgress_->Resize(466, 466);
+  circleProgress_->SetViewId("circleProgress1");
+  circleProgress_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
+  circleProgress_->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
+  circleProgress_->SetBackgroundStyle(STYLE_BACKGROUND_OPA, 0x00);
+  circleProgress_->SetBackgroundStyle(STYLE_BORDER_OPA, 0x00);
+  circleProgress_->SetBackgroundStyle(STYLE_LINE_OPA, 0x00);
+  circleProgress_->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff2195F6);
+  circleProgress_->SetForegroundStyle(STYLE_BORDER_COLOR, 0xff000000);
+  circleProgress_->SetForegroundStyle(STYLE_LINE_COLOR, 0xff5320e2);
+  circleProgress_->SetForegroundStyle(STYLE_LINE_WIDTH, 20);
+  circleProgress_->SetCenterPosition(233, 229);
+  circleProgress_->SetRadius(205);
+  circleProgress_->SetStartAngle(320);
+  circleProgress_->SetEndAngle(40);
+  circleProgress_->SetCapType(CAP_ROUND);
+  /* -------------------------------- 将组件添加到根视图
+   * ------------------------------- */
+  Add(progress_image);
+  Add(circleProgress_);
+  Add(title);
+  Add(hour);
+  Add(minute);
+  Add(time_hour);
+  Add(time_minute);
+  Add(sleep_update_time);
+  Add(upiconimage);
+  Add(roomimage);
+
+  viewInitStatus = true;
+  return true;
+}
+
+bool SleepView::InitView(void *caller) {
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepView InitView %p", caller);
+  if (InitPage() == false) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepView::InitPage fail");
+    return false;
+  }
+  SleepDataRefresh(); // 刷新数据
+  SetDraggable(true);
+  SetTouchable(true);
+  return true;
+}
+
+bool SleepView::GetInitViewState(void) { return viewInitStatus; }
+} // namespace OHOS
\ No newline at end of file
index 1ab069b..0b9c6b5 100644 (file)
@@ -134,10 +134,7 @@ namespace OHOS
         label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height);\r
         label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize);\r
         label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh);\r
-        if (labelconfig.textId == STR_TIME)\r
-          label->SetText("时间格式设置");\r
-        else\r
-          label->SetTextId(labelconfig.textId);\r
+        label->SetTextId(labelconfig.textId);\r
         label->SetLineBreakMode(labelconfig.lineBreakMode);\r
         label->SetRollSpeed(70);\r
         label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize);\r
@@ -175,7 +172,7 @@ namespace OHOS
         LabelSetup labelSetups[] = {\r
             {153, STR_ABOUT_WATCH},\r
             // {273, STR_SYSTEM_UPDATE},\r
-            {273, STR_TIME},\r
+            {273, STR_TIME_FORMAT_SET},\r
             {393, STR_WATCH_QR_CODE},\r
             {513, STR_SYSTEM_LANGUAGE},\r
             {633, STR_RESTART},\r
index 66e5bd7..e19564e 100644 (file)
@@ -70,7 +70,7 @@ namespace OHOS
         /*拍照提醒界面*/
         UIScrollView *creamView{nullptr};
         UILabelExt *labeltitle_ = nullptr;
-        UILabel *labelnote_ = nullptr;
+        UILabelExt *labelnote_ = nullptr;
         UILabelButtonExt *buttongo = nullptr;
         UIImageAnimatorView *creamAnimator{nullptr};
 
index d993ac9..9ce58cd 100644 (file)
@@ -182,7 +182,7 @@ void TakephotosView::ShowCreamView() {
                DEFAULT_VECTOR_FONT_FILENAME, 30);
 
   // 设置标签的位置和大小
-  labelnote_ = new UILabel();
+  labelnote_ = new UILabelExt();
   labelnote_->SetPosition(53, 250);
   labelnote_->Resize(360, 200);
   // 设置标签的视图 ID
@@ -194,7 +194,7 @@ void TakephotosView::ShowCreamView() {
   labelnote_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
   labelnote_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
   // SetLabelId(labelnote_, STR_TACK);
-  labelnote_->SetText("请先打开app,进入“设备”-“遥控拍照”");//TODO:多国语言
+  labelnote_->SetTextId(STR_CAMERA);//TODO:多国语言
 
   /*初始化按键*/
   InitButtonExt(buttongo, 0, 366, 466, 100, BUTTONGO, STR_KONW, 30);
index a1bd270..3941c34 100644 (file)
@@ -131,15 +131,7 @@ namespace OHOS
         label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height);
         label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize);
         label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh);
-        TOOD:
-        if(labelconfig.textId == STR_GRID_DISPLAY) {
-            if(ConfigModel::GetInstance()->GetLanguage() == 0)
-                label->SetText("拨号盘");//TODO::多国语言
-            else
-                label->SetText("Dial plate");//TODO::多国语言
-        }else{
-            label->SetTextId(labelconfig.textId);
-        }
+        label->SetTextId(STR_DIAL_PLATE);//TODO::多国语言
         label->SetLineBreakMode(labelconfig.lineBreakMode);
         label->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);
         label->SetRollSpeed(70);
index 109bb4c..9bc3b28 100644 (file)
@@ -1259,14 +1259,14 @@ bool TraingModel::SaveSportData() {
     // 保存心率表
     if (!SaveHeartTable()) {
       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveHeartRateData is error!");
-      uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
-      return false;
+      // uapi_dev_runtime_set_train_storage_status(0); // 恢复状态 
+      // return false;
     }
     // 保存速度表
     if (!SavePaceTable()) {
       WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveSpeedData is error!");
-      uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
-      return false;
+      // uapi_dev_runtime_set_train_storage_status(0); // 恢复状态
+      // return false;
     }
   }
 
@@ -1647,7 +1647,7 @@ void TraingModel::SendLiveDataIfNecessary() {
   // 检查自动获取的配置 app发起
   if (user_autoget && Openingway) {
     // 发送实时数据
-    if (g_motionTimes % user_freq == 0) {
+    if (g_motionTimes % 1 == 0) {
       WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SendLiveData is OK\r\n");
       SendLiveData(); // 发送实时数据
     }
index 7f685b4..223a549 100644 (file)
 \r
 #include "ConfigModel.h"\r
 #include "custom_utils.h"\r
+#include "languagecode/LanguageInit.h"\r
 #include "traing/include/TraingModel.h"\r
 #include "uicomponents/UIComponents.h"\r
 \r
+\r
 extern "C" {\r
 void InitTimer();\r
 void DisableTimer();\r
@@ -857,8 +859,8 @@ void TraingCardView::ShowGetTagView() {
   // InitRollLabel(labeltitle, 83, 50, 300, 35, "label1", STR_GOAL_ACHIEVED,\r
   //               DEFAULT_VECTOR_FONT_FILENAME, 35);\r
   // TODO:多国语言\r
-  InitLabel(labeltitle, 83, 50, 300, 35, "label3", "本次训练目标已达成",\r
-            DEFAULT_VECTOR_FONT_FILENAME_EN, 35);\r
+  InitLabelExt(labeltitle, 83, 50, 300, 35, "label3", STR_GOAL_TITLE,\r
+               DEFAULT_VECTOR_FONT_FILENAME_EN, 35);\r
   labeltitle->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
   labeltitle->SetRollSpeed(70);\r
 \r
@@ -1042,7 +1044,13 @@ UILabelExt *TraingCardView::GetHeartMaxLabel() { return labelnote; }
 void TraingCardView::SetHeartMaxLabel(int maxheart) {\r
   if (maxheart == 0 || labelnote == nullptr)\r
     return;\r
-  std::string heartStr = "当前心率高于" + std::to_string(maxheart) + "次/分钟";\r
+  std::string heartStr;\r
+  if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) {\r
+    heartStr = "当前心率高于" + std::to_string(maxheart) + "次/分钟";\r
+  } else {\r
+    heartStr =\r
+        "Current heart rate is above " + std::to_string(maxheart) + " bpm";\r
+  }\r
   labelnote->SetText(heartStr.c_str());\r
 }\r
 } // namespace OHOS\r
index 70d641f..5b6e7c8 100644 (file)
@@ -82,9 +82,9 @@ namespace OHOS
       // 更新充电状态标签
       if (UILabel_Chargeing) {
         if (power == 100) {
-          UILabel_Chargeing->SetText("充电完成"); // TODO: 增加多国语言
+          UILabel_Chargeing->SetTextId(STR_CHARG_DOWN); // TODO: 增加多国语言
         } else {
-          UILabel_Chargeing->SetText("正在充电");
+          UILabel_Chargeing->SetTextId(STR_CHAEGING);
           // UILabel_Chargeing->SetTextId(STR_CHARGE);
         }
         UILabel_Chargeing->Invalidate();
@@ -507,7 +507,7 @@ namespace OHOS
             alarm_UILabel->SetPosition(110, 252);         // widget's left position and top position
             alarm_UILabel->Resize(245, 70);          // widget's width and height
 
-            alarm_UILabel->SetText("当前电量低于10%请及时充电");
+            // alarm_UILabel->SetText("当前电量低于10%请及时充电");
             alarm_UILabel->SetTextId(STR_LOW_POWER_NOTIF_1);
             
             alarm_UILabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
@@ -557,7 +557,7 @@ namespace OHOS
         const char *ImgSrc = "/user/res/466x100button.bin";
         alarm_labelbutton->SetImageSrc(ImgSrc, ImgSrc);
         // Set additional property
-        alarm_labelbutton->SetText("确认");
+        // alarm_labelbutton->SetText("确认");
         alarm_labelbutton->SetTextId(STR_KONW);
         alarm_labelbutton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
         alarm_labelbutton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
index fe5dfb5..67274d5 100644 (file)
@@ -361,8 +361,8 @@ namespace OHOS
             // 初始化Lable
             // InitRollLabel(labeltitle, 83, 50, 300, 35, "label1", STR_GOAL_ACHIEVED, DEFAULT_VECTOR_FONT_FILENAME, 35);
             // TODO:多国语言
-            InitLabel(labeltitle, 83, 50, 300, 35, "label3",
-                      "今日活动目标已达成", DEFAULT_VECTOR_FONT_FILENAME_EN,
+            InitLabelExt(labeltitle, 83, 50, 300, 35, "label3",
+                      STR_GOAL_DOWN, DEFAULT_VECTOR_FONT_FILENAME_EN,
                       35);
             labeltitle->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
             labeltitle->SetRollSpeed(70);
index fd7f745..e771309 100644 (file)
@@ -74,19 +74,19 @@ namespace OHOS
         /*获取最新sleep*/
         SLEEPSTATE sleepsate = SleepModel::GetInstance().get_sleep_state();
         // TODO:适配多国语言
-        // UIResourceTextId textId = STR_MORNNING;
-        std::string sleep_note;
+        UIResourceTextId textId = STR_MORNNING;
+        // std::string sleep_note;
         switch (sleepsate)
         {
         case SLEEPSTATE::SLEEPNOTIFY:
             titleStr = SleepModel::GetInstance().get_notifiy();
-            // textId = STR_DISTURB; // 即将开启勿扰
-            sleep_note = "手表将在20分钟后开启睡眠模式,关闭请到控制中心";
+            textId = STR_SLEEP_NOTIFY; // 即将开启勿扰
+            // sleep_note = "手表将在20分钟后开启睡眠模式,关闭请到控制中心";
             break;
         case SLEEPSTATE::SLEPP:
             titleStr = SleepModel::GetInstance().get_sleep_notifiy();
-            // textId = STR_DISTURBNOTE;
-            sleep_note = "已开启睡眠模式,此模式下手表将关闭所有提醒功能";
+            textId = STR_SLEEP_NOTE;
+            // sleep_note = "已开启睡眠模式,此模式下手表将关闭所有提醒功能";
             break;
         case SLEEPSTATE::WAKE:
             titleStr = SleepModel::GetInstance().get_wake_notifiy();
@@ -128,8 +128,8 @@ namespace OHOS
         }
         sleepnotifylabel->SetPosition(53, 220, 360, 144);
         sleepnotifylabel->SetViewId("sleepnotifylabel");
-        // sleepnotifylabel->SetTextId(textId);
-        sleepnotifylabel->SetText(sleep_note.c_str());
+        sleepnotifylabel->SetTextId(textId);
+        // sleepnotifylabel->SetText(sleep_note.c_str());
         sleepnotifylabel->SetTextColor(Color::Gray());
         sleepnotifylabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, 30);
         sleepnotifylabel->SetLineBreakMode(UILabel::LINE_BREAK_CLIP);             // 换行裁剪
index e0bd216..f8ee487 100644 (file)
@@ -753,7 +753,7 @@ namespace OHOS
         Title->SetStyle(STYLE_TEXT_FONT, 30);
 
         // Set additional property
-        Title->SetText("操作失败");//TODO:多国语言
+        Title->SetTextId(STR_OPERAT_FAIL);//TODO:多国语言
           //Title->SetTextId (STR_DIAL_FAIL_TITLE);
         Title->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
         Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
@@ -775,7 +775,7 @@ namespace OHOS
 
         // Set additional property
       
-        label_->SetText("离线表盘个数已经超过最大或内存不足 请到app删除部分表盘再进行下载");//TODO:多国语言
+        label_->SetTextId(STR_DIAL_NOTE);//TODO:多国语言
     
         label_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
         label_->SetTextColor(Color::GetColorFromRGBA(0xAA, 0xAA, 0xAA, 0xff));
index 7a9e02a..7ad41e7 100644 (file)
Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/en.lang and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/en.lang differ
index 8dfb7f5..8c60a07 100644 (file)
@@ -611,7 +611,46 @@ enum UIResourceTextId : uint16_t {
     STR_DIAL_FAIL_LABEL = 598,\r
     STR_MP3_FAIL_TITL = 599,\r
     STR_MP3_FAIL_LABEL = 600,\r
-    STR_MAX_ID = 601,\r
+    STR_CALLSOMEONE = 601,\r
+    STR_BLUENOTE = 602,\r
+    STR_VOICE_FAIL = 603,\r
+    STR_WAKE_VOIVE = 604,\r
+    STR_TIME_SET = 605,\r
+    STR_FORMAT = 606,\r
+    STR_FORMAT_NOTE = 607,\r
+    STR_SLEEP_UPDATE = 608,\r
+    STR_CAMERA = 609,\r
+    STR_GOAL_TITLE = 610,\r
+    STR_HEART_HIAGER = 611,\r
+    STR_CHARG_DOWN = 612,\r
+    STR_CHAEGING = 613,\r
+    STR_GOAL_DOWN = 614,\r
+    STR_OPERAT_FAIL = 615,\r
+    STR_DIAL_NOTE = 616,\r
+    STR_HEART_UNKOWN = 617,\r
+    STR_HEART_AVAILABLE = 618,\r
+    STR_HEART_JUST = 619,\r
+    STR_HEART_MIN_AGO = 620,\r
+    STR_HEART_HOUR_AGO = 621,\r
+    STR_RECORDS_20 = 622,\r
+    STR_RECORDS_NOTE = 623,\r
+    STR_RECORDS_DELETE = 624,\r
+    STR_NEW_INCOM = 625,\r
+    STR_NET_ERROR = 626,\r
+    STR_LANGUAGE_SELECTION_NOTE = 627,\r
+    STR_AUTO_OFF_BLUETOOTH_NOTE2 = 628,\r
+    STR_PHONE_MUSCI_NOTE = 629,\r
+    STR_TIME_FORMAT_SET = 630,\r
+    STR_DIAL_PLATE = 631,\r
+    STR_SLEEP_NOTIFY = 632,\r
+    STR_SLEEP_NOTE = 633,\r
+    STR_MAX_CARD = 634,\r
+    STR_NUM_LENGTH = 635,\r
+    STR_CALL_LIST = 636,\r
+    STR_DELETE_ALL = 637,\r
+    STR_FRE_CONTACT = 638,\r
+    STR_RECORD_MAX = 639,\r
+    STR_MAX_ID = 640,\r
 }; // UIResourceTextId\r
 
 enum FontLanguageId : uint8_t {
index e042a16..43b530b 100644 (file)
Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/zh.lang and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/font/zh.lang differ
index d45e2e8..210818b 100644 (file)
@@ -228,10 +228,10 @@ STR_DISTANCE$distance
 STR_RANGE_SETTING$Range setting(Km)\r
 STR_STEP_NUMBER$steps\r
 STR_STEP_SETTING$Step setting(steps)\r
-STR_HEART_RATE_SETTING$Heart rate (times/min)\r
+STR_HEART_RATE_SETTING$Heart rate (bmp)\r
 STR_MEAN_HEART_RATE$Mean heart rate\r
-STR_TIMES_PER_MIN$Times/min\r
-STR_MEAN_HEART_RATE_MIN$Mean heart rate(Times/min)\r
+STR_TIMES_PER_MIN$bmp\r
+STR_MEAN_HEART_RATE_MIN$Mean heart rate(bmp)\r
 STR_LOWER_STRENGTH$Lower strength\r
 STR_MEDIUM_STRENGTH$Medium strength\r
 STR_HIGH_STRENGTH$High strength\r
@@ -295,8 +295,8 @@ STR_REATTIME$Schedule
 STR_SLEEPTIME$Bedtime\r
 STR_WALKTIME$Wake-up Time\r
 STR_APPMORE$For more details yesterday, please visit the mobile APP\r
-STR_DISTURB$The watch will enter Do Not Disturb mode in 20 minutes. To turn it off, please go to the Control Center.\r
-STR_DISTURBNOTE$Do Not Disturb mode is enabled, thus the watch won't vibrate or ring.\r
+STR_DISTURB$The watch will enter Do Not Disturb mode in 20 minutes To turn it off, please go to the Control Center\r
+STR_DISTURBNOTE$Do Not Disturb mode is enabled, thus the watch won't vibrate or ring\r
 STR_MORNNING$Good morning\r
 STR_NOW$Current\r
 STR_NAP$Nap (5 minutes)\r
@@ -324,7 +324,7 @@ STR_SYSTEM_UPDATE$System Update
 STR_ONLINE_MUSIC$Online music\r
 STR_BLUETOOTH_HEADPHONES$Bluetooth Headphones\r
 STR_TRADITIONAL_BLUETOOTH$Traditional Bluetooth\r
-STR_AUTO_OFF_BLUETOOTH_NOTE$Note: It will be automatically turned off if the connection is not successful for 10 minutes after opening, because the traditional Bluetooth will increase the power consumption for a long time, it is recommended to use when necessary(this function is mainly used for phone calls/notifications、music control/transmission, etc.)\r
+STR_AUTO_OFF_BLUETOOTH_NOTE$Note: It will be automatically turned off if the connection is not successful for 10 minutes after opening, because the traditional Bluetooth will increase the power consumption for a long time, it is recommended to use when necessary(this function is mainly used for phone calls/notifications、music control/transmission, etc)\r
 STR_BLUETOOTH_SERVICE_OPTIONS$Bluetooth Service Options\r
 STR_HFP$Call Bluetooth\r
 STR_A2DP$Media Bluetooth\r
@@ -355,17 +355,17 @@ STR_NO_UPDATE$No update
 STR_LANGUAGE_SELECTION$Language Select\r
 STR_RESET_CONFIRM$Are you sure to restart?\r
 STR_SHUTDOWN_CONFIRM$Are you sure to shut down?\r
-STR_RESET_CONFIRM_NOTE$The operation will clear and reset the watch data. Are you sure you want to continue?\r
+STR_RESET_CONFIRM_NOTE$The operation will clear and reset the watch data Are you sure you want to continue?\r
 STR_RECORDER$Recorder\r
 STR_CLICK_TO_RECORD$Click to record\r
 STR_RECORDING$Recording\r
 STR_AUDIO_XX$Audio_XX\r
 STR_VOICE_RECORDING_REMINDER$Voice recording reminder\r
-STR_VOICE_RECORDING_REMINDER_NOTE$The number of recordings must not exceed 30. Please delete some existing recordings.\r
+STR_VOICE_RECORDING_REMINDER_NOTE$The number of recordings must not exceed 30 Please delete some existing recordings\r
 STR_DELETE_RECORDING$Delete recording\r
 STR_DELETE_PERMANENTLY$Permanently Delete\r
 STR_RECORDING_LIST$Recording List\r
-STR_CRLEMPTY$Current recording list is empty.\r
+STR_CRLEMPTY$Current recording list is empty\r
 STR_DO_NOT_DISTURB_MODE$Turn on Do Not Disturb mode, the watch will not vibrate or ring, do you want to turn it on?\r
 STR_CONNECTION_STATUS$Connection Status\r
 STR_PHONE$Phone\r
@@ -422,7 +422,7 @@ STR_DIAL_MODE$Dial Mode
 STR_DIAL_VIA_WATCH_SIM$Dial via Watch SIM\r
 STR_DIAL_VIA_PHONE$Dial via Phone\r
 STR_KUMI_TECHNOLOGY$KUMI Technology\r
-STR_CALLING$Calling...\r
+STR_CALLING$Calling\r
 STR_NOT_PAIRED$Not Paired\r
 STR_PAIRED$Paired\r
 STR_UNPAIR$Unpair\r
@@ -430,8 +430,8 @@ STR_CONNECTION_ERROR$Connection Error
 STR_INSERT_WATCH_SIM_OR_CONNECT_PHONE$Insert watch SIM or connect phone to make calls\r
 STR_ENABLE_BLUETOOTH_CALL$Enable Bluetooth Call\r
 STR_SOLUTION$The solution:\r
-STR_IPHONE$1.IPhone\r
-STR_ANDROID$2.Android phone\r
+STR_IPHONE$1IPhone\r
+STR_ANDROID$2Android phone\r
 STR_ENABLE_BLUETOOTH_CALL_NOTE_IPHONE$Please go to the phone "Settings" → "Bluetooth" list to find XX Click and try again\r
 STR_ENABLE_BLUETOOTH_CALL_NOTE_ANDROID$Please go to the phone "Settings" → "Bluetooth" list to find XX Click the icon on the right to enter Bluetooth Settings Enable the call and media functions and try again\r
 STR_SIM_CARD_ERROR$SIM Card Error\r
@@ -455,7 +455,7 @@ STR_EQUIPMENT_UNTYING_NOTE$XX would like to unbind you
 STR_DRINK_WATER_REMINDER$Drink water reminder\r
 STR_DRINK_WATER_REMINDER_NOTE$Time for some water! And stay hydrated\r
 STR_SEDENTARY_REMINDER$Sedentary reminder\r
-STR_SEDENTARY_REMINDER_NOTE$You haven't moved for XX hours. Get up and move.\r
+STR_SEDENTARY_REMINDER_NOTE$You haven't moved for XX hours Get up and move\r
 STR_SYSTEM_UPGRADING$System upgrading\r
 STR_NEWDEVICE_BIND_REMIND_NOTE1$The device has been bound to XX \r
 STR_NEWDEVICE_BIND_REMIND_NOTE2$Continuing to connect will unbind XX and restore the watch to factory Settings (will clear the watch data)\r
@@ -508,7 +508,7 @@ STR_AVG_PACE$Average pace
 STR_TONGYI_QIANWEN$Tongyi Qianwen\r
 STR_IFLYTEK_SPARK$Xunfei Spark\r
 STR_DISTURBNOTE_OFF$Do not disturb mode is enabled or disabled\r
-STR_4G_NOTE$After enabling this function, the watch can make calls with a 4G SIM card, and power consumption will increase.\r
+STR_4G_NOTE$After enabling this function, the watch can make calls with a 4G SIM card, and power consumption will increase\r
 STR_MUSIC_PLAYER_SOURCE_NOTE$Please enter Music - Music Source from the watch app interface, set it to Mobile Mode and try again\r
 STR_MUSIC_LIST_IS_EMPTY$The current music list is empty, please download and add via APP\r
 STR_BT_HEADSET_RESCAN$Rescan\r
@@ -552,7 +552,7 @@ STR_LOW_POWER_NOTIF_1$The current battery is below 10%, please charge it in time
 STR_LOW_POWER_NOTIF_2$When the battery is too low XXs will automatically shut down\r
 STR_CONNECTION_SUCC$Connection successful\r
 STR_RETRY$Retry\r
-STR_BTEARPHONE_CONN_FAIL_TIP$Please confirm that the device is within the communication range and in the pairing-ready state.\r
+STR_BTEARPHONE_CONN_FAIL_TIP$Please confirm that the device is within the communication range and in the pairing-ready state\r
 STR_FLASHLIGHT_SETTING$Flashlight settings\r
 STR_LIGHT_COLOR$Light color\r
 STR_FLICKER_FREQUENCY$Blinking frequency\r
@@ -564,14 +564,14 @@ STR_OVERLAY_FLOW$Overlay flow
 STR_ROLLER$Roller\r
 STR_DIAL_BROWSING_SPECIAL_EFFECTS$Dial browsing special effects\r
 STR_SET_TARGET$Set target>\r
-STR_PWUWC$Please wear the watch correctly and remain still.\r
+STR_PWUWC$Please wear the watch correctly and remain still\r
 STR_CALENDAR$calendar\r
 STR_ALARM_DELETE_NOTE$Whether to delete the alarm\r
 STR_ALARM_TIME_CHANGE$Change time\r
 STR_ALARM_WEEK_CHANGE$Change week\r
 STR_ALARM_REPEAT$Repeat\r
 STR_ALARM_ADD_LIMIT_NOTE$The current number of alarm clocks has reached the upper limit\r
-STR_MOTION_RECOGNITION_NOTE$After turning it on, the watch will send a reminder when it detects that you are in an exercise state. Supported exercises include: walking, running, cycling, rowing machine, and elliptical trainer.\r
+STR_MOTION_RECOGNITION_NOTE$After turning it on, the watch will send a reminder when it detects that you are in an exercise state Supported exercises include: walking, running, cycling, rowing machine, and elliptical trainer\r
 STR_DURATION_SETTINGS$Duration settings\r
 STR_2_MIN$2min\r
 STR_3_MIN$3min\r
@@ -582,20 +582,61 @@ STR_THREE_MIN$3min >
 STR_FOUR_MIN$4min >\r
 STR_FIVE_MIN$5min >\r
 STR_MUSIC_TRANSMIT$Music is being transferred\r
-STR_MUSIC_TRANSMIT_NOTE$Music is being transferred. Please do not perform other operations or turn off the watch.\r
-STR_MUSIC_TRANSMIT_SUCCESS_NOTE$Music transfer is successful and is being verified. Please wait.\r
+STR_MUSIC_TRANSMIT_NOTE$Music is being transferred Please do not perform other operations or turn off the watch\r
+STR_MUSIC_TRANSMIT_SUCCESS_NOTE$Music transfer is successful and is being verified Please wait\r
 STR_OTA_DOWNLOAD$OTA downloading\r
 STR_OTA_DOWNLOADING$Software is being updated\r
 STR_OTA_DOWNLOADFIAL$OTA download failed\r
-STR_OTA_DOWNLOADFIAL_TRY$Downloading upgrade package failed. Please exit or redownload.\r
+STR_OTA_DOWNLOADFIAL_TRY$Downloading upgrade package failed Please exit or redownload\r
 STR_OTA_DOWNLOADSUCC$OTA download succeeded\r
-STR_OTA_DOWNLOADSUCC_UPDATA$Downloading upgrade package succeeded. You can start upgrading the watch.\r
+STR_OTA_DOWNLOADSUCC_UPDATA$Downloading upgrade package succeeded You can start upgrading the watch\r
 STR_DIAL_DOWNLOADING_TITLE$Dial installation in progress\r
-STR_DIAL_DOWNLOADING_LABEL$Dial is being installed. Please do not perform other operations or turn off the watch.\r
+STR_DIAL_DOWNLOADING_LABEL$Dial is being installed Please do not perform other operations or turn off the watch\r
 STR_MP3_SUCC_TITLE$Transmission succeeded\r
 STR_DIAL_SUCC_TITLE$Installation succeeded\r
-STR_DIAL_SUCC_LABEL$Dial installation succeeded. The dial is being updated. Please wait.\r
+STR_DIAL_SUCC_LABEL$Dial installation succeeded The dial is being updated Please wait\r
 STR_DIAL_FAIL_TITLE$Installation failed\r
-STR_DIAL_FAIL_LABEL$Dial installation failed. Please exit or reinstall.\r
+STR_DIAL_FAIL_LABEL$Dial installation failed Please exit or reinstall\r
 STR_MP3_FAIL_TITL$Transmission failed\r
-STR_MP3_FAIL_LABEL$Music transmission failed. Please exit or reinstall.
\ No newline at end of file
+STR_MP3_FAIL_LABEL$Music transmission failed Please exit or reinstall\r
+STR_CALLSOMEONE$Try saying 'Call someone' to me\r
+STR_BLUENOTE$Please turn on the call Bluetooth switch before using the voice assistant function\r
+STR_VOICE_FAIL$Voice assistant activation failed\r
+STR_WAKE_VOIVE$Click to wake up the voice assistant\r
+STR_TIME_SET$Time setting\r
+STR_FORMAT$24-hour format\r
+STR_FORMAT_NOTE$Note: When enabled, it shows in 24-hour format; when disabled, it shows in 12-hour format\r
+STR_NAP$Nap data\r
+STR_SLEEP_UPDATE$XX update\r
+STR_CAMERA$Please open the app first, and enter 'Device' - 'Remote Camera'\r
+STR_GOAL_TITLE$The current training goal has been achieved\r
+STR_HEART_HIAGER$The current heart rate is higher than XX beats per minute\r
+STR_CHARG_DOWN$Charging completed\r
+STR_CHAEGING$Charging in progress\r
+STR_GOAL_DOWN$Today's activity goal has been achieved\r
+STR_OPERAT_FAIL$Operation failed\r
+STR_DIAL_NOTE$The number of offline watch faces has exceeded the maximum or the memory is insufficient Please delete some watch faces in the app and then download\r
+STR_HEART_UNKOWN$Detection result unknown\r
+STR_HEART_AVAILABLE$No detection data available\r
+STR_HEART_JUST$XX beats per minute Just detected\r
+STR_HEART_MIN_AGO$XX beats per minute XX minutes ago\r
+STR_HEART_HOUR_AGO$XX beats per minute More than an hour ago\r
+STR_RECORDS_20$Note: Only the latest 20 call records will be retained Long press on a call record to delete it\r
+STR_RECORDS_NOTE$Whether to permanently delete this record\r
+STR_RECORDS_DELETE$Delete record\r
+STR_NEW_INCOM$New incoming call\r
+STR_NET_ERROR$Network anomaly\r
+STR_LANGUAGE_SELECTION_NOTE$The selected language takes effect after the restart\r
+STR_AUTO_OFF_BLUETOOTH_NOTE2$Note: It will be automatically turned off if the connection is not successful for 10 minutes after opening, because the traditional Bluetooth will increase the power consumption for a long time, it is recommended to use when necessary (this function is mainly used for phone calls/notifications, music control/transmission, etc)\r
+STR_PHONE_MUSCI_NOTE$The watch is playing mobile music and cannot operate local music\r
+STR_TIME_FORMAT_SET$Time formatting\r
+STR_DIAL_PLATE$Dial plate\r
+STR_SLEEP_NOTIFY$The watch will turn on the sleep mode in 20 minutes Please go to the control center to turn it off\r
+STR_SLEEP_NOTE$Sleep mode is enabled, in which the watch will turn off all reminder functions\r
+STR_MAX_CARD$The number of cards has reached its limit\r
+STR_NUM_LENGTH$The number length exceeds the range\r
+STR_CALLING$On the phone\r
+STR_CALL_LIST$Call log\r
+STR_DELETE_ALL$Clear all\r
+STR_FRE_CONTACT$Frequent contact\r
+STR_RECORD_MAX$The recording space is full
\ No newline at end of file
index 2936779..9606f22 100644 (file)
@@ -598,4 +598,45 @@ STR_DIAL_SUCC_LABEL$表盘安装成功正在更新表盘,请稍等
 STR_DIAL_FAIL_TITLE$安装失败\r
 STR_DIAL_FAIL_LABEL$表盘安装失败,请退出或重新安装\r
 STR_MP3_FAIL_TITL$传输失败\r
-STR_MP3_FAIL_LABEL$音乐传输失败,请退出或重新安装
\ No newline at end of file
+STR_MP3_FAIL_LABEL$音乐传输失败,请退出或重新安装\r
+STR_CALLSOMEONE$试试对我说“打电话给某人”\r
+STR_BLUENOTE$请打开通话蓝牙开关后使用语音助手功能\r
+STR_VOICE_FAIL$启用语音助手失败\r
+STR_WAKE_VOIVE$点击唤醒语音助手\r
+STR_TIME_SET$时间设置\r
+STR_FORMAT$24小时制\r
+STR_FORMAT_NOTE$注: 开启为24小时制显示,关闭则按照12小时制显示\r
+STR_NAP$小睡数据\r
+STR_SLEEP_UPDATE$XX更新\r
+STR_CAMERA$请先打开app,进入“设备”-“遥控拍照”\r
+STR_GOAL_TITLE$本次训练目标已达成\r
+STR_HEART_HIAGER$当前心率高于XX次/分钟\r
+STR_CHARG_DOWN$充电完成\r
+STR_CHAEGING$正在充电\r
+STR_GOAL_DOWN$今日活动目标已达成\r
+STR_OPERAT_FAIL$操作失败\r
+STR_DIAL_NOTE$离线表盘个数已经超过最大或内存不足 请到app删除部分表盘再进行下载\r
+STR_HEART_UNKOWN$检测结果未知\r
+STR_HEART_AVAILABLE$暂无检测数据\r
+STR_HEART_JUST$XX次/分 刚刚检测\r
+STR_HEART_MIN_AGO$XX次/分 XX分钟前\r
+STR_HEART_HOUR_AGO$XX次/分 超过一个小时前\r
+STR_RECORDS_20$注:只保留最近20条通话记录\n在通话记录上长按可删除\r
+STR_RECORDS_NOTE$是否永久删除该条记录\r
+STR_RECORDS_DELETE$删除记录\r
+STR_NEW_INCOM$新来电\r
+STR_NET_ERROR$网络异常\r
+STR_LANGUAGE_SELECTION_NOTE$选择该语言需要重启后生效\r
+STR_AUTO_OFF_BLUETOOTH_NOTE2$注:开启后10分钟没连接成功会自动关闭,因为传统蓝牙长时间打开会增加耗电,建议在有需要的时候使用(该功能主要用于电话拨打/通知、音乐控制/传输等)\r
+STR_PHONE_MUSCI_NOTE$手表正在播放手机音乐,不能对本地音乐进行操作\r
+STR_TIME_FORMAT_SET$时间格式设置\r
+STR_DIAL_PLATE$拨号盘\r
+STR_SLEEP_NOTIFY$手表将在20分钟后开启睡眠模式,关闭请到控制中心\r
+STR_SLEEP_NOTE$已开启睡眠模式,此模式下手表将关闭所有提醒功能\r
+STR_MAX_CARD$卡片数量已经到达上限\r
+STR_NUM_LENGTH$超过数字长度范围\r
+STR_CALLING$正在通话\r
+STR_CALL_LIST$通话记录\r
+STR_DELETE_ALL$全部清除\r
+STR_FRE_CONTACT$常用联系人\r
+STR_RECORD_MAX$录音空间已满
\ No newline at end of file
index 83c1944..b7bc9d7 100644 (file)
Binary files a/tools/language_tool/Language_xml/language_custom.xlsx and b/tools/language_tool/Language_xml/language_custom.xlsx differ
index 3f242ae..ec02f97 100644 (file)
        <lanstr id="STR_RANGE_SETTING" value="Range setting(Km)"/>
        <lanstr id="STR_STEP_NUMBER" value="steps"/>
        <lanstr id="STR_STEP_SETTING" value="Step setting(steps)"/>
-       <lanstr id="STR_HEART_RATE_SETTING" value="Heart rate (times/min)"/>
+       <lanstr id="STR_HEART_RATE_SETTING" value="Heart rate (bmp)"/>
        <lanstr id="STR_MEAN_HEART_RATE" value="Mean heart rate"/>
-       <lanstr id="STR_TIMES_PER_MIN" value="Times/min"/>
-       <lanstr id="STR_MEAN_HEART_RATE_MIN" value="Mean heart rate(Times/min)"/>
+       <lanstr id="STR_TIMES_PER_MIN" value="bmp"/>
+       <lanstr id="STR_MEAN_HEART_RATE_MIN" value="Mean heart rate(bmp)"/>
        <lanstr id="STR_LOWER_STRENGTH" value="Lower strength"/>
        <lanstr id="STR_MEDIUM_STRENGTH" value="Medium strength"/>
        <lanstr id="STR_HIGH_STRENGTH" value="High strength"/>
        <lanstr id="STR_SLEEPTIME" value="Bedtime"/>
        <lanstr id="STR_WALKTIME" value="Wake-up Time"/>
        <lanstr id="STR_APPMORE" value="For more details yesterday, please visit the mobile APP"/>
-       <lanstr id="STR_DISTURB" value="The watch will enter Do Not Disturb mode in 20 minutes. To turn it off, please go to the Control Center."/>
-       <lanstr id="STR_DISTURBNOTE" value="Do Not Disturb mode is enabled, thus the watch won't vibrate or ring."/>
+       <lanstr id="STR_DISTURB" value="The watch will enter Do Not Disturb mode in 20 minutes To turn it off, please go to the Control Center"/>
+       <lanstr id="STR_DISTURBNOTE" value="Do Not Disturb mode is enabled, thus the watch won't vibrate or ring"/>
        <lanstr id="STR_MORNNING" value="Good morning"/>
        <lanstr id="STR_NOW" value="Current"/>
        <lanstr id="STR_NAP" value="Nap (5 minutes)"/>
        <lanstr id="STR_ONLINE_MUSIC" value="Online music"/>
        <lanstr id="STR_BLUETOOTH_HEADPHONES" value="Bluetooth Headphones"/>
        <lanstr id="STR_TRADITIONAL_BLUETOOTH" value="Traditional Bluetooth"/>
-       <lanstr id="STR_AUTO_OFF_BLUETOOTH_NOTE" value="Note: It will be automatically turned off if the connection is not successful for 10 minutes after opening, because the traditional Bluetooth will increase the power consumption for a long time, it is recommended to use when necessary(this function is mainly used for phone calls/notifications、music control/transmission, etc.)"/>
+       <lanstr id="STR_AUTO_OFF_BLUETOOTH_NOTE" value="Note: It will be automatically turned off if the connection is not successful for 10 minutes after opening, because the traditional Bluetooth will increase the power consumption for a long time, it is recommended to use when necessary(this function is mainly used for phone calls/notifications、music control/transmission, etc)"/>
        <lanstr id="STR_BLUETOOTH_SERVICE_OPTIONS" value="Bluetooth Service Options"/>
        <lanstr id="STR_HFP" value="Call Bluetooth"/>
        <lanstr id="STR_A2DP" value="Media Bluetooth"/>
        <lanstr id="STR_LANGUAGE_SELECTION" value="Language Select"/>
        <lanstr id="STR_RESET_CONFIRM" value="Are you sure to restart?"/>
        <lanstr id="STR_SHUTDOWN_CONFIRM" value="Are you sure to shut down?"/>
-       <lanstr id="STR_RESET_CONFIRM_NOTE" value="The operation will clear and reset the watch data. Are you sure you want to continue?"/>
+       <lanstr id="STR_RESET_CONFIRM_NOTE" value="The operation will clear and reset the watch data Are you sure you want to continue?"/>
        <lanstr id="STR_RECORDER" value="Recorder"/>
        <lanstr id="STR_CLICK_TO_RECORD" value="Click to record"/>
        <lanstr id="STR_RECORDING" value="Recording"/>
        <lanstr id="STR_AUDIO_XX" value="Audio_XX"/>
        <lanstr id="STR_VOICE_RECORDING_REMINDER" value="Voice recording reminder"/>
-       <lanstr id="STR_VOICE_RECORDING_REMINDER_NOTE" value="The number of recordings must not exceed 30. Please delete some existing recordings."/>
+       <lanstr id="STR_VOICE_RECORDING_REMINDER_NOTE" value="The number of recordings must not exceed 30 Please delete some existing recordings"/>
        <lanstr id="STR_DELETE_RECORDING" value="Delete recording"/>
        <lanstr id="STR_DELETE_PERMANENTLY" value="Permanently Delete"/>
        <lanstr id="STR_RECORDING_LIST" value="Recording List"/>
-       <lanstr id="STR_CRLEMPTY" value="Current recording list is empty."/>
+       <lanstr id="STR_CRLEMPTY" value="Current recording list is empty"/>
        <lanstr id="STR_DO_NOT_DISTURB_MODE" value="Turn on Do Not Disturb mode, the watch will not vibrate or ring, do you want to turn it on?"/>
        <lanstr id="STR_CONNECTION_STATUS" value="Connection Status"/>
        <lanstr id="STR_PHONE" value="Phone"/>
        <lanstr id="STR_DIAL_VIA_WATCH_SIM" value="Dial via Watch SIM"/>
        <lanstr id="STR_DIAL_VIA_PHONE" value="Dial via Phone"/>
        <lanstr id="STR_KUMI_TECHNOLOGY" value="KUMI Technology"/>
-       <lanstr id="STR_CALLING" value="Calling..."/>
+       <lanstr id="STR_CALLING" value="Calling"/>
        <lanstr id="STR_NOT_PAIRED" value="Not Paired"/>
        <lanstr id="STR_PAIRED" value="Paired"/>
        <lanstr id="STR_UNPAIR" value="Unpair"/>
        <lanstr id="STR_INSERT_WATCH_SIM_OR_CONNECT_PHONE" value="Insert watch SIM or connect phone to make calls"/>
        <lanstr id="STR_ENABLE_BLUETOOTH_CALL" value="Enable Bluetooth Call"/>
        <lanstr id="STR_SOLUTION" value="The solution:"/>
-       <lanstr id="STR_IPHONE" value="1.IPhone"/>
-       <lanstr id="STR_ANDROID" value="2.Android phone"/>
+       <lanstr id="STR_IPHONE" value="1IPhone"/>
+       <lanstr id="STR_ANDROID" value="2Android phone"/>
        <lanstr id="STR_ENABLE_BLUETOOTH_CALL_NOTE_IPHONE" value="Please go to the phone &quot;Settings&quot; → &quot;Bluetooth&quot; list to find XX Click and try again"/>
        <lanstr id="STR_ENABLE_BLUETOOTH_CALL_NOTE_ANDROID" value="Please go to the phone &quot;Settings&quot; → &quot;Bluetooth&quot; list to find XX Click the icon on the right to enter Bluetooth Settings Enable the call and media functions and try again"/>
        <lanstr id="STR_SIM_CARD_ERROR" value="SIM Card Error"/>
        <lanstr id="STR_DRINK_WATER_REMINDER" value="Drink water reminder"/>
        <lanstr id="STR_DRINK_WATER_REMINDER_NOTE" value="Time for some water! And stay hydrated"/>
        <lanstr id="STR_SEDENTARY_REMINDER" value="Sedentary reminder"/>
-       <lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="You haven't moved for XX hours. Get up and move."/>
+       <lanstr id="STR_SEDENTARY_REMINDER_NOTE" value="You haven't moved for XX hours Get up and move"/>
        <lanstr id="STR_SYSTEM_UPGRADING" value="System upgrading"/>
        <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE1" value="The device has been bound to XX"/>
        <lanstr id="STR_NEWDEVICE_BIND_REMIND_NOTE2" value="Continuing to connect will unbind XX and restore the watch to factory Settings (will clear the watch data)"/>
        <lanstr id="STR_TONGYI_QIANWEN" value="Tongyi Qianwen"/>
        <lanstr id="STR_IFLYTEK_SPARK" value="Xunfei Spark"/>
        <lanstr id="STR_DISTURBNOTE_OFF" value="Do not disturb mode is enabled or disabled"/>
-       <lanstr id="STR_4G_NOTE" value="After enabling this function, the watch can make calls with a 4G SIM card, and power consumption will increase."/>
+       <lanstr id="STR_4G_NOTE" value="After enabling this function, the watch can make calls with a 4G SIM card, and power consumption will increase"/>
        <lanstr id="STR_MUSIC_PLAYER_SOURCE_NOTE" value="Please enter Music - Music Source from the watch app interface, set it to Mobile Mode and try again"/>
        <lanstr id="STR_MUSIC_LIST_IS_EMPTY" value="The current music list is empty, please download and add via APP"/>
        <lanstr id="STR_BT_HEADSET_RESCAN" value="Rescan"/>
        <lanstr id="STR_LOW_POWER_NOTIF_2" value="When the battery is too low XXs will automatically shut down"/>
        <lanstr id="STR_CONNECTION_SUCC" value="Connection successful"/>
        <lanstr id="STR_RETRY" value="Retry"/>
-       <lanstr id="STR_BTEARPHONE_CONN_FAIL_TIP" value="Please confirm that the device is within the communication range and in the pairing-ready state."/>
+       <lanstr id="STR_BTEARPHONE_CONN_FAIL_TIP" value="Please confirm that the device is within the communication range and in the pairing-ready state"/>
        <lanstr id="STR_FLASHLIGHT_SETTING" value="Flashlight settings"/>
        <lanstr id="STR_LIGHT_COLOR" value="Light color"/>
        <lanstr id="STR_FLICKER_FREQUENCY" value="Blinking frequency"/>
        <lanstr id="STR_ROLLER" value="Roller"/>
        <lanstr id="STR_DIAL_BROWSING_SPECIAL_EFFECTS" value="Dial browsing special effects"/>
        <lanstr id="STR_SET_TARGET" value="Set target&gt;"/>
-       <lanstr id="STR_PWUWC" value="Please wear the watch correctly and remain still."/>
+       <lanstr id="STR_PWUWC" value="Please wear the watch correctly and remain still"/>
        <lanstr id="STR_CALENDAR" value="calendar"/>
        <lanstr id="STR_ALARM_DELETE_NOTE" value="Whether to delete the alarm"/>
        <lanstr id="STR_ALARM_TIME_CHANGE" value="Change time"/>
        <lanstr id="STR_ALARM_WEEK_CHANGE" value="Change week"/>
        <lanstr id="STR_ALARM_REPEAT" value="Repeat"/>
        <lanstr id="STR_ALARM_ADD_LIMIT_NOTE" value="The current number of alarm clocks has reached the upper limit"/>
-       <lanstr id="STR_MOTION_RECOGNITION_NOTE" value="After turning it on, the watch will send a reminder when it detects that you are in an exercise state. Supported exercises include: walking, running, cycling, rowing machine, and elliptical trainer."/>
+       <lanstr id="STR_MOTION_RECOGNITION_NOTE" value="After turning it on, the watch will send a reminder when it detects that you are in an exercise state Supported exercises include: walking, running, cycling, rowing machine, and elliptical trainer"/>
        <lanstr id="STR_DURATION_SETTINGS" value="Duration settings"/>
        <lanstr id="STR_2_MIN" value="2min"/>
        <lanstr id="STR_3_MIN" value="3min"/>
        <lanstr id="STR_FOUR_MIN" value="4min &gt;"/>
        <lanstr id="STR_FIVE_MIN" value="5min &gt;"/>
        <lanstr id="STR_MUSIC_TRANSMIT" value="Music is being transferred"/>
-       <lanstr id="STR_MUSIC_TRANSMIT_NOTE" value="Music is being transferred. Please do not perform other operations or turn off the watch."/>
-       <lanstr id="STR_MUSIC_TRANSMIT_SUCCESS_NOTE" value="Music transfer is successful and is being verified. Please wait."/>
+       <lanstr id="STR_MUSIC_TRANSMIT_NOTE" value="Music is being transferred Please do not perform other operations or turn off the watch"/>
+       <lanstr id="STR_MUSIC_TRANSMIT_SUCCESS_NOTE" value="Music transfer is successful and is being verified Please wait"/>
        <lanstr id="STR_OTA_DOWNLOAD" value="OTA downloading"/>
        <lanstr id="STR_OTA_DOWNLOADING" value="Software is being updated"/>
        <lanstr id="STR_OTA_DOWNLOADFIAL" value="OTA download failed"/>
-       <lanstr id="STR_OTA_DOWNLOADFIAL_TRY" value="Downloading upgrade package failed. Please exit or redownload."/>
+       <lanstr id="STR_OTA_DOWNLOADFIAL_TRY" value="Downloading upgrade package failed Please exit or redownload"/>
        <lanstr id="STR_OTA_DOWNLOADSUCC" value="OTA download succeeded"/>
-       <lanstr id="STR_OTA_DOWNLOADSUCC_UPDATA" value="Downloading upgrade package succeeded. You can start upgrading the watch."/>
+       <lanstr id="STR_OTA_DOWNLOADSUCC_UPDATA" value="Downloading upgrade package succeeded You can start upgrading the watch"/>
        <lanstr id="STR_DIAL_DOWNLOADING_TITLE" value="Dial installation in progress"/>
-       <lanstr id="STR_DIAL_DOWNLOADING_LABEL" value="Dial is being installed. Please do not perform other operations or turn off the watch."/>
+       <lanstr id="STR_DIAL_DOWNLOADING_LABEL" value="Dial is being installed Please do not perform other operations or turn off the watch"/>
        <lanstr id="STR_MP3_SUCC_TITLE" value="Transmission succeeded"/>
        <lanstr id="STR_DIAL_SUCC_TITLE" value="Installation succeeded"/>
-       <lanstr id="STR_DIAL_SUCC_LABEL" value="Dial installation succeeded. The dial is being updated. Please wait."/>
+       <lanstr id="STR_DIAL_SUCC_LABEL" value="Dial installation succeeded The dial is being updated Please wait"/>
        <lanstr id="STR_DIAL_FAIL_TITLE" value="Installation failed"/>
-       <lanstr id="STR_DIAL_FAIL_LABEL" value="Dial installation failed. Please exit or reinstall."/>
+       <lanstr id="STR_DIAL_FAIL_LABEL" value="Dial installation failed Please exit or reinstall"/>
        <lanstr id="STR_MP3_FAIL_TITL" value="Transmission failed"/>
-       <lanstr id="STR_MP3_FAIL_LABEL" value="Music transmission failed. Please exit or reinstall."/>
+       <lanstr id="STR_MP3_FAIL_LABEL" value="Music transmission failed Please exit or reinstall"/>
+       <lanstr id="STR_CALLSOMEONE" value="Try saying 'Call someone' to me"/>
+       <lanstr id="STR_BLUENOTE" value="Please turn on the call Bluetooth switch before using the voice assistant function"/>
+       <lanstr id="STR_VOICE_FAIL" value="Voice assistant activation failed"/>
+       <lanstr id="STR_WAKE_VOIVE" value="Click to wake up the voice assistant"/>
+       <lanstr id="STR_TIME_SET" value="Time setting"/>
+       <lanstr id="STR_FORMAT" value="24-hour format"/>
+       <lanstr id="STR_FORMAT_NOTE" value="Note: When enabled, it shows in 24-hour format; when disabled, it shows in 12-hour format"/>
+       <lanstr id="STR_NAP" value="Nap data"/>
+       <lanstr id="STR_SLEEP_UPDATE" value="XX update"/>
+       <lanstr id="STR_CAMERA" value="Please open the app first, and enter 'Device' - 'Remote Camera'"/>
+       <lanstr id="STR_GOAL_TITLE" value="The current training goal has been achieved"/>
+       <lanstr id="STR_HEART_HIAGER" value="The current heart rate is higher than XX beats per minute"/>
+       <lanstr id="STR_CHARG_DOWN" value="Charging completed"/>
+       <lanstr id="STR_CHAEGING" value="Charging in progress"/>
+       <lanstr id="STR_GOAL_DOWN" value="Today's activity goal has been achieved"/>
+       <lanstr id="STR_OPERAT_FAIL" value="Operation failed"/>
+       <lanstr id="STR_DIAL_NOTE" value="The number of offline watch faces has exceeded the maximum or the memory is insufficient Please delete some watch faces in the app and then download"/>
+       <lanstr id="STR_HEART_UNKOWN" value="Detection result unknown"/>
+       <lanstr id="STR_HEART_AVAILABLE" value="No detection data available"/>
+       <lanstr id="STR_HEART_JUST" value="XX beats per minute Just detected"/>
+       <lanstr id="STR_HEART_MIN_AGO" value="XX beats per minute XX minutes ago"/>
+       <lanstr id="STR_HEART_HOUR_AGO" value="XX beats per minute More than an hour ago"/>
+       <lanstr id="STR_RECORDS_20" value="Note: Only the latest 20 call records will be retained Long press on a call record to delete it"/>
+       <lanstr id="STR_RECORDS_NOTE" value="Whether to permanently delete this record"/>
+       <lanstr id="STR_RECORDS_DELETE" value="Delete record"/>
+       <lanstr id="STR_NEW_INCOM" value="New incoming call"/>
+       <lanstr id="STR_NET_ERROR" value="Network anomaly"/>
+       <lanstr id="STR_LANGUAGE_SELECTION_NOTE" value="The selected language takes effect after the restart"/>
+       <lanstr id="STR_AUTO_OFF_BLUETOOTH_NOTE2" value="Note: It will be automatically turned off if the connection is not successful for 10 minutes after opening, because the traditional Bluetooth will increase the power consumption for a long time, it is recommended to use when necessary (this function is mainly used for phone calls/notifications, music control/transmission, etc)"/>
+       <lanstr id="STR_PHONE_MUSCI_NOTE" value="The watch is playing mobile music and cannot operate local music"/>
+       <lanstr id="STR_TIME_FORMAT_SET" value="Time formatting"/>
+       <lanstr id="STR_DIAL_PLATE" value="Dial plate"/>
+       <lanstr id="STR_SLEEP_NOTIFY" value="The watch will turn on the sleep mode in 20 minutes Please go to the control center to turn it off"/>
+       <lanstr id="STR_SLEEP_NOTE" value="Sleep mode is enabled, in which the watch will turn off all reminder functions"/>
+       <lanstr id="STR_MAX_CARD" value="The number of cards has reached its limit"/>
+       <lanstr id="STR_NUM_LENGTH" value="The number length exceeds the range"/>
+       <lanstr id="STR_CALLING" value="On the phone"/>
+       <lanstr id="STR_CALL_LIST" value="Call log"/>
+       <lanstr id="STR_DELETE_ALL" value="Clear all"/>
+       <lanstr id="STR_FRE_CONTACT" value="Frequent contact"/>
+       <lanstr id="STR_RECORD_MAX" value="The recording space is full"/>
 </language>
index 25f3146..e03d871 100644 (file)
        <lanstr id="STR_DIAL_FAIL_LABEL" value="表盘安装失败,请退出或重新安装"/>
        <lanstr id="STR_MP3_FAIL_TITL" value="传输失败"/>
        <lanstr id="STR_MP3_FAIL_LABEL" value="音乐传输失败,请退出或重新安装"/>
+       <lanstr id="STR_CALLSOMEONE" value="试试对我说“打电话给某人”"/>
+       <lanstr id="STR_BLUENOTE" value="请打开通话蓝牙开关后使用语音助手功能"/>
+       <lanstr id="STR_VOICE_FAIL" value="启用语音助手失败"/>
+       <lanstr id="STR_WAKE_VOIVE" value="点击唤醒语音助手"/>
+       <lanstr id="STR_TIME_SET" value="时间设置"/>
+       <lanstr id="STR_FORMAT" value="24小时制"/>
+       <lanstr id="STR_FORMAT_NOTE" value="注: 开启为24小时制显示,关闭则按照12小时制显示"/>
+       <lanstr id="STR_NAP" value="小睡数据"/>
+       <lanstr id="STR_SLEEP_UPDATE" value="XX更新"/>
+       <lanstr id="STR_CAMERA" value="请先打开app,进入“设备”-“遥控拍照”"/>
+       <lanstr id="STR_GOAL_TITLE" value="本次训练目标已达成"/>
+       <lanstr id="STR_HEART_HIAGER" value="当前心率高于XX次/分钟"/>
+       <lanstr id="STR_CHARG_DOWN" value="充电完成"/>
+       <lanstr id="STR_CHAEGING" value="正在充电"/>
+       <lanstr id="STR_GOAL_DOWN" value="今日活动目标已达成"/>
+       <lanstr id="STR_OPERAT_FAIL" value="操作失败"/>
+       <lanstr id="STR_DIAL_NOTE" value="离线表盘个数已经超过最大或内存不足 请到app删除部分表盘再进行下载"/>
+       <lanstr id="STR_HEART_UNKOWN" value="检测结果未知"/>
+       <lanstr id="STR_HEART_AVAILABLE" value="暂无检测数据"/>
+       <lanstr id="STR_HEART_JUST" value="XX次/分 刚刚检测"/>
+       <lanstr id="STR_HEART_MIN_AGO" value="XX次/分 XX分钟前"/>
+       <lanstr id="STR_HEART_HOUR_AGO" value="XX次/分 超过一个小时前"/>
+       <lanstr id="STR_RECORDS_20" value="注:只保留最近20条通话记录\n在通话记录上长按可删除"/>
+       <lanstr id="STR_RECORDS_NOTE" value="是否永久删除该条记录"/>
+       <lanstr id="STR_RECORDS_DELETE" value="删除记录"/>
+       <lanstr id="STR_NEW_INCOM" value="新来电"/>
+       <lanstr id="STR_NET_ERROR" value="网络异常"/>
+       <lanstr id="STR_LANGUAGE_SELECTION_NOTE" value="选择该语言需要重启后生效"/>
+       <lanstr id="STR_AUTO_OFF_BLUETOOTH_NOTE2" value="注:开启后10分钟没连接成功会自动关闭,因为传统蓝牙长时间打开会增加耗电,建议在有需要的时候使用(该功能主要用于电话拨打/通知、音乐控制/传输等)"/>
+       <lanstr id="STR_PHONE_MUSCI_NOTE" value="手表正在播放手机音乐,不能对本地音乐进行操作"/>
+       <lanstr id="STR_TIME_FORMAT_SET" value="时间格式设置"/>
+       <lanstr id="STR_DIAL_PLATE" value="拨号盘"/>
+       <lanstr id="STR_SLEEP_NOTIFY" value="手表将在20分钟后开启睡眠模式,关闭请到控制中心"/>
+       <lanstr id="STR_SLEEP_NOTE" value="已开启睡眠模式,此模式下手表将关闭所有提醒功能"/>
+       <lanstr id="STR_MAX_CARD" value="卡片数量已经到达上限"/>
+       <lanstr id="STR_NUM_LENGTH" value="超过数字长度范围"/>
+       <lanstr id="STR_CALLING" value="正在通话"/>
+       <lanstr id="STR_CALL_LIST" value="通话记录"/>
+       <lanstr id="STR_DELETE_ALL" value="全部清除"/>
+       <lanstr id="STR_FRE_CONTACT" value="常用联系人"/>
+       <lanstr id="STR_RECORD_MAX" value="录音空间已满"/>
 </language>
index 7a9e02a..7ad41e7 100644 (file)
Binary files a/tools/language_tool/font/en.lang and b/tools/language_tool/font/en.lang differ
index 8dfb7f5..8c60a07 100644 (file)
@@ -611,7 +611,46 @@ enum UIResourceTextId : uint16_t {
     STR_DIAL_FAIL_LABEL = 598,\r
     STR_MP3_FAIL_TITL = 599,\r
     STR_MP3_FAIL_LABEL = 600,\r
-    STR_MAX_ID = 601,\r
+    STR_CALLSOMEONE = 601,\r
+    STR_BLUENOTE = 602,\r
+    STR_VOICE_FAIL = 603,\r
+    STR_WAKE_VOIVE = 604,\r
+    STR_TIME_SET = 605,\r
+    STR_FORMAT = 606,\r
+    STR_FORMAT_NOTE = 607,\r
+    STR_SLEEP_UPDATE = 608,\r
+    STR_CAMERA = 609,\r
+    STR_GOAL_TITLE = 610,\r
+    STR_HEART_HIAGER = 611,\r
+    STR_CHARG_DOWN = 612,\r
+    STR_CHAEGING = 613,\r
+    STR_GOAL_DOWN = 614,\r
+    STR_OPERAT_FAIL = 615,\r
+    STR_DIAL_NOTE = 616,\r
+    STR_HEART_UNKOWN = 617,\r
+    STR_HEART_AVAILABLE = 618,\r
+    STR_HEART_JUST = 619,\r
+    STR_HEART_MIN_AGO = 620,\r
+    STR_HEART_HOUR_AGO = 621,\r
+    STR_RECORDS_20 = 622,\r
+    STR_RECORDS_NOTE = 623,\r
+    STR_RECORDS_DELETE = 624,\r
+    STR_NEW_INCOM = 625,\r
+    STR_NET_ERROR = 626,\r
+    STR_LANGUAGE_SELECTION_NOTE = 627,\r
+    STR_AUTO_OFF_BLUETOOTH_NOTE2 = 628,\r
+    STR_PHONE_MUSCI_NOTE = 629,\r
+    STR_TIME_FORMAT_SET = 630,\r
+    STR_DIAL_PLATE = 631,\r
+    STR_SLEEP_NOTIFY = 632,\r
+    STR_SLEEP_NOTE = 633,\r
+    STR_MAX_CARD = 634,\r
+    STR_NUM_LENGTH = 635,\r
+    STR_CALL_LIST = 636,\r
+    STR_DELETE_ALL = 637,\r
+    STR_FRE_CONTACT = 638,\r
+    STR_RECORD_MAX = 639,\r
+    STR_MAX_ID = 640,\r
 }; // UIResourceTextId\r
 
 enum FontLanguageId : uint8_t {
index e042a16..43b530b 100644 (file)
Binary files a/tools/language_tool/font/zh.lang and b/tools/language_tool/font/zh.lang differ