Skip to content

Commit 58ff581

Browse files
authored
Merge pull request solosky#176 from impeeza/impeeza-NewSettingsLanguageApp
New Settings language selection logic
2 parents 6b77cc2 + 051f37c commit 58ff581

File tree

4 files changed

+14
-46
lines changed

4 files changed

+14
-46
lines changed

docs/en/05+5-translation.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@ The script `font_data_gen.sh` only can be run in Git Bash windows in Windows.
1616
2. Run `fw/scripts/i18n_gen.py` to generate new language files.
1717
3. Optional: Run `fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in i18n.csv
1818
4. Edit `fw/application/src/i18n/language.h` and `fw/application/src/i18n/language.c` to adopt new language
19-
5. Edit `fw/application/src/app/settings/scene/settings_scene_language.c` to adopt new language
20-
6. Edit Makefile to include `$(PROJ_DIR)/i18n/ja_JP.c` as C source files
21-
7. Run `make full` rebuild firmware
19+
5. Edit Makefile to include `$(PROJ_DIR)/i18n/ja_JP.c` as C source files
20+
6. Run `make full` rebuild firmware
2221

2322
## Font notes
2423

2524
For release build (RELEASE=1), the firmware use wenquanyi_9pt_u8g2.bdf to display unicode characters. <br />
2625
Please check new language charater codepoint is included in wenquanyi_9pt_u8g2.bdf or not.<br />
27-
If not, I am not recommended to support the new language due to the MCU internal flash restrction.
26+
If not, I am not recommended to support the new language due to the MCU internal flash restrction.

fw/application/src/app/settings/scene/settings_scene_language.c

Lines changed: 9 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,59 +7,28 @@
77
#include "utils2.h"
88
#include "version2.h"
99

10-
enum settings_sleep_timeout_menu_t {
11-
SETTINGS_LANGUAGE_ZH_HANS,
12-
SETTINGS_LANGUAGE_EN_US,
13-
SETTINGS_LANGUAGE_ZH_TW,
14-
SETTINGS_LANGUAGE_ES_ES,
15-
SETTINGS_LANGUAGE_HU_HU,
16-
SETTINGS_LANGUAGE_KO_KR,
17-
SETTINGS_LANGUAGE_MENU_EXIT,
18-
};
1910

2011
static void settings_scene_language_list_view_on_selected(mui_list_view_event_t event, mui_list_view_t *p_list_view,
2112
mui_list_item_t *p_item) {
13+
2214
app_settings_t *app = p_list_view->user_data;
2315
uint32_t selection = (uint32_t)p_item->user_data;
2416
settings_data_t *p_settings = settings_get_data();
25-
switch (selection) {
26-
case SETTINGS_LANGUAGE_ZH_HANS:
27-
p_settings->language = LANGUAGE_ZH_HANS;
28-
setLanguage(p_settings->language);
29-
break;
30-
31-
case SETTINGS_LANGUAGE_EN_US:
32-
p_settings->language = LANGUAGE_EN_US;
33-
setLanguage(p_settings->language);
34-
break;
35-
36-
case SETTINGS_LANGUAGE_ZH_TW:
37-
p_settings->language = LANGUAGE_ZH_TW;
38-
setLanguage(p_settings->language);
39-
break;
40-
41-
case SETTINGS_LANGUAGE_ES_ES:
42-
p_settings->language = LANGUAGE_ES_ES;
43-
setLanguage(p_settings->language);
44-
break;
45-
46-
case SETTINGS_LANGUAGE_HU_HU:
47-
p_settings->language = LANGUAGE_HU_HU;
17+
if (selection < LANGUAGE_COUNT){
18+
p_settings->language = selection;
4819
setLanguage(p_settings->language);
49-
break;
5020
}
21+
5122
mui_scene_dispatcher_previous_scene(app->p_scene_dispatcher);
5223
}
5324

5425
void settings_scene_language_on_enter(void *user_data) {
5526

5627
app_settings_t *app = user_data;
57-
mui_list_view_add_item(app->p_list_view, 0xe105, "简体中文", (void *)SETTINGS_LANGUAGE_ZH_HANS);
58-
mui_list_view_add_item(app->p_list_view, 0xe105, "繁體中文(臺灣)", (void *)SETTINGS_LANGUAGE_ZH_TW);
59-
mui_list_view_add_item(app->p_list_view, 0xe105, "English", (void *)SETTINGS_LANGUAGE_EN_US);
60-
mui_list_view_add_item(app->p_list_view, 0xe105, getLangDesc(LANGUAGE_ES_ES), (void *)SETTINGS_LANGUAGE_ES_ES);
61-
mui_list_view_add_item(app->p_list_view, 0xe105, getLangDesc(LANGUAGE_HU_HU), (void *)SETTINGS_LANGUAGE_HU_HU);
62-
mui_list_view_add_item(app->p_list_view, 0xe069, getLangString(_L_BACK), (void *)SETTINGS_LANGUAGE_MENU_EXIT);
28+
for (uint8_t i = 0; i < LANGUAGE_COUNT; i++){
29+
mui_list_view_add_item(app->p_list_view, 0xe105, getLangDesc(i), (void *)i);
30+
}
31+
mui_list_view_add_item(app->p_list_view, 0xe069, getLangString(_L_BACK), (void *)NULL_USER_DATA);
6332

6433
mui_list_view_set_selected_cb(app->p_list_view, settings_scene_language_list_view_on_selected);
6534
mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, SETTINGS_VIEW_ID_MAIN);
@@ -69,4 +38,4 @@ void settings_scene_language_on_exit(void *user_data) {
6938
app_settings_t *app = user_data;
7039
mui_list_view_clear_items(app->p_list_view);
7140
mui_list_view_set_selected_cb(app->p_list_view, NULL);
72-
}
41+
}

fw/application/src/i18n/language.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ LanguageData languageData[LANGUAGE_COUNT] = {
1414
[LANGUAGE_HU_HU] = { .strings = lang_hu_HU },
1515
};
1616

17-
// 当前语言设置
17+
// 当前语言设置 (Current language setting)
1818
Language currentLanguage = LANGUAGE_ZH_HANS;
1919

2020

fw/application/src/i18n/language.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ extern const char* lang_zh_TW[_L_COUNT];
2525
extern const char* lang_es_ES[_L_COUNT];
2626
extern const char* lang_hu_HU[_L_COUNT];
2727

28-
// 获取字符串的函数
28+
// 获取字符串的函数 (Get language string function)
2929
const char* getLangString(L_StringID stringID);
3030
void setLanguage(Language lang);
3131
Language getLanguage();

0 commit comments

Comments
 (0)