diff --git a/.vscode/launch.json b/.vscode/launch.json
index 981d986f..a059cc46 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -35,7 +35,7 @@
"name": "Pixl.js Openocd Debug",
"cwd": "${workspaceRoot}",
"executable": "fw/_build/pixljs.out",
- "armToolchainPath": "D:/dev/SDKs/gcc-arm-none-eabi-10-2020-q4-major/bin",
+ "armToolchainPath": "",
"request": "launch",
"type": "cortex-debug",
"servertype": "openocd",
diff --git a/docs/en/05+5-translation.md b/docs/en/05+5-translation.md
index 76f6d4b2..51acf930 100644
--- a/docs/en/05+5-translation.md
+++ b/docs/en/05+5-translation.md
@@ -1,26 +1,92 @@
-# Transalation
+# Translation
-## How to update exists translation
+## Firmware
-1. Edit fw/data/i18n.csv with your favorite text editor. For vscode, extension "Edit csv" is recommended.
-2. Run `fw/scripts/i18n_gen.py` to generate new language files.
-3. Optional: Run `fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in i18n.csv
-4. Run `make full` rebuild firmware
+## How to update existing translation
+
+When editing CSV files with VSCode, the extension [Edit CSV](https://marketplace.visualstudio.com/items?itemName=janisdd.vscode-edit-csv) is recommended.
+
+**Windows** requires you to have [Python](https://www.python.org/downloads/) and [Git](https://git-scm.com/download/windows) installed and within your `$PATH`
+For **Linux**, most distributions come with `python` and `git` by default and **macOS** comes bundled with `python`, but to use `git` you either need to install the Command Line tools via `xcode-select –-install`, or download [Git](https://git-scm.com/download/mac) separately.
+
+### Windows
-note:
-The script `font_data_gen.sh` only can be run in Git Bash windows in Windows.
+1. Clone this repository
+ `git clone https://github.com/solosky/pixl.js.git; cd pixl.js`
+2. Edit `fw/data/i18n.csv`
+3. Run `py.exe fw/scripts/i18n_gen.py` to generate new language files.
+4. _Optional:_ Run `py.exe fw/scripts/font_data_gen.py` to generate new font data if you add new characters in `i18n.csv`
+5. [Build the Firmware](03-Build-Firmware.md)
+
+### Linux and macOS
+
+1. Clone this repository
+ `git clone https://github.com/solosky/pixl.js.git; cd pixl.js`
+2. Edit `fw/data/i18n.csv`
+3. Run `python3 fw/scripts/i18n_gen.py` to generate new language files.
+4. Optional: Run `python fw/scripts/font_data_gen.py` to generate new font data if you add new characters in `i18n.csv`
+5. [Build the Firmware](03-Build-Firmware.md)
## How to add new language translation
-1. Add new column in fw/data/i18n.csv, for example "ja_JP"
+The process is similar to updating an existing translation, and has the same requirements depending on your Operating System.
+
+1. Add new column in `fw/data/i18n.csv`, for example "ja_JP"
2. Run `fw/scripts/i18n_gen.py` to generate new language files.
-3. Optional: Run `fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in i18n.csv
+3. Optional: Run `fw/scripts/font_data_gen.py` to generate new font data if you add new characters in `i18n.csv`
4. Edit `fw/application/src/i18n/language.h` and `fw/application/src/i18n/language.c` to adopt new language
5. Edit Makefile to include `$(PROJ_DIR)/i18n/ja_JP.c` as C source files
-6. Run `make full` rebuild firmware
+6. [Build the Firmware](03-Build-Firmware.md)
+
+## Font notes
+
+For release builds (RELEASE=1), the firmware uses wenquanyi_9pt_u8g2.bdf to display unicode characters.
+Please check if the new language character codepoint is included in wenquanyi_9pt_u8g2.bdf or not.
+If not, it's not recommended supporting the new language due to the MCU internal flash restrictions.
+
+## Web App
+
+### How to update existing translation
+
+The language file can be found under `web/src/i18n'
+
+## How to add new language translation
+
+In this example, we will add a Japanese (ja_JP) translation:
+
+1. Copy the `en_US.js` file and name it `ja_JP.js`
+2. Translate the string within `ja_JP.js` including the `changeok` message.
+
+ Don't translate the other language names.
+
+ Add your language at the bottom of the `lang {` section:
+
+ `ja: '日本語',`
+
+3. Edit `web/src/i18n/index.js` while keeping its current structure, adding:
+
+ ```js
+ import elementJaLocale from 'element-ui/lib/locale/lang/ja' // element-ui
+ lang import jaLocale from './ja_JP' elementJpLocale
+ ```
+
+ And extending `messages`:
+
+ ```js
+ ja_JP: {
+ ...jaLocale,
+ ...elementJaLocale,
+ },
+ ```
+
+4. Add your language to the other `.js` files (within the `lang: {` section):
+
+ `vueja: '日本語',`
-## Font notes
+5. Add your language to the `web/src/App.vue` file:
-For release build (RELEASE=1), the firmware use wenquanyi_9pt_u8g2.bdf to display unicode characters.
-Please check new language charater codepoint is included in wenquanyi_9pt_u8g2.bdf or not.
-If not, I am not recommended to support the new language due to the MCU internal flash restrction.
\ No newline at end of file
+```js
+
+ {{ $t('lang.ja') }}
+
+```
diff --git a/fw/application/Makefile b/fw/application/Makefile
index 313f2451..7792905e 100644
--- a/fw/application/Makefile
+++ b/fw/application/Makefile
@@ -341,6 +341,7 @@ SRC_FILES += \
$(PROJ_DIR)/i18n/nl_NL.c \
$(PROJ_DIR)/i18n/pt_BR.c \
$(PROJ_DIR)/i18n/pt_PT.c \
+ $(PROJ_DIR)/i18n/ru_RU.c \
$(PROJ_DIR)/i18n/language.c \
$(PROJ_DIR)/hal/hal_nfc_t2t.c \
$(PROJ_DIR)/amiidb/db_amiibo.c \
@@ -733,10 +734,10 @@ CFLAGS += -DBOARD_$(BOARD)
ifneq ($(RELEASE), 1)
CFLAGS += -DDEBUG
CFLAGS += -DEBUG_NRF
-# CFLAGS += -DU8G2_USE_LARGE_GB2312_FONT
+#CFLAGS += -DU8G2_USE_LARGE_FONTS
else
CFLAGS += -DNDEBUG
-CFLAGS += -DU8G2_USE_LARGE_GB2312_FONT
+CFLAGS += -DU8G2_USE_LARGE_FONTS
endif
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_NRF5X
CFLAGS += -DMBEDTLS_CONFIG_FILE=\"nrf_crypto_mbedtls_config.h\"
diff --git a/fw/application/src/app/amiibo/scene/amiibo_scene_amiibo_detail_menu.c b/fw/application/src/app/amiibo/scene/amiibo_scene_amiibo_detail_menu.c
index 58a09ba2..09c5218d 100644
--- a/fw/application/src/app/amiibo/scene/amiibo_scene_amiibo_detail_menu.c
+++ b/fw/application/src/app/amiibo/scene/amiibo_scene_amiibo_detail_menu.c
@@ -125,16 +125,11 @@ static void amiibo_scene_amiibo_detail_menu_on_selected(mui_list_view_event_t ev
amiibo_scene_amiibo_detail_no_key_msg(app);
return;
}
- char txt[32];
settings_data_t *p_settings = settings_get_data();
p_settings->auto_gen_amiibo = !p_settings->auto_gen_amiibo;
- snprintf(txt, sizeof(txt), "%s [%s]", getLangString(_L_AUTO_RANDOM_GENERATION),
- p_settings->auto_gen_amiibo ? getLangString(_L_ON) : getLangString(_L_OFF));
settings_save();
- string_set_str(p_item->text, txt);
-
- mui_scene_dispatcher_previous_scene(app->p_scene_dispatcher);
+ mui_list_view_item_set_sub_text(p_item, (p_settings->auto_gen_amiibo ? getLangString(_L_ON_F) : getLangString(_L_OFF_F)));
} break;
case AMIIBO_DETAIL_MENU_REMOVE_AMIIBO: {
@@ -160,13 +155,11 @@ void amiibo_scene_amiibo_detail_menu_on_enter(void *user_data) {
mui_list_view_add_item(app->p_list_view, 0xe1c5, getLangString(_L_RANDOM_GENERATION),
(void *)AMIIBO_DETAIL_MENU_RAND_UID);
-
- char txt[32];
settings_data_t *p_settings = settings_get_data();
- snprintf(txt, sizeof(txt), "%s [%s]", getLangString(_L_AUTO_RANDOM_GENERATION),
- p_settings->auto_gen_amiibo ? getLangString(_L_ON) : getLangString(_L_OFF));
- mui_list_view_add_item(app->p_list_view, 0xe1c6, txt, (void *)AMIIBO_DETAIL_MENU_AUTO_RAND_UID);
+ mui_list_view_add_item_ext(app->p_list_view, 0xe1c6, getLangString(_L_AUTO_RANDOM_GENERATION),
+ (p_settings->auto_gen_amiibo ? getLangString(_L_ON_F) : getLangString(_L_OFF_F)),
+ (void *)AMIIBO_DETAIL_MENU_AUTO_RAND_UID);
mui_list_view_add_item(app->p_list_view, 0xe1c7, getLangString(_L_DELETE_TAG),
(void *)AMIIBO_DETAIL_MENU_REMOVE_AMIIBO);
mui_list_view_add_item(app->p_list_view, 0xe068, getLangString(_L_BACK_TO_DETAILS),
diff --git a/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c b/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c
index 169a605e..20f31092 100644
--- a/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c
+++ b/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c
@@ -255,10 +255,10 @@ static void amiibo_scene_file_browser_menu_on_selected(mui_list_view_event_t eve
case FILE_BROWSER_MENU_REMOVE_FOLDER: {
char msg[64];
- snprintf(msg, sizeof(msg), "%s %s ?", getLangString(_L_DELETE), string_get_cstr(app->current_file));
- mui_msg_box_set_header(app->p_msg_box, getLangString(_L_DELETE));
+ snprintf(msg, sizeof(msg), _T(DELETE_FILE), string_get_cstr(app->current_file));
+ mui_msg_box_set_header(app->p_msg_box, getLangString(_L_TIPS));
mui_msg_box_set_message(app->p_msg_box, msg);
- mui_msg_box_set_btn_text(app->p_msg_box, getLangString(_L_DELETE), NULL, getLangString(_L_CANCEL));
+ mui_msg_box_set_btn_text(app->p_msg_box, getLangString(_L_CONFIRM), NULL, getLangString(_L_CANCEL));
mui_msg_box_set_btn_focus(app->p_msg_box, 2);
mui_msg_box_set_event_cb(app->p_msg_box, amiibo_scene_file_browser_menu_msg_box_remove_folder_event_cb);
@@ -298,9 +298,9 @@ void amiibo_scene_file_browser_menu_on_enter(void *user_data) {
(void *)FILE_BROWSER_MENU_CREATE_AMIIBO_BATCH);
if (string_cmp_str(app->current_file, "..") != 0) {
char txt[32];
- snprintf(txt, sizeof(txt), "%s..", getLangString(_L_RENAME));
+ snprintf(txt, sizeof(txt), "%s", getLangString(_L_RENAME));
mui_list_view_add_item(app->p_list_view, ICON_EMPTY, txt, (void *)FILE_BROWSER_MENU_RENAME_FOLDER);
- snprintf(txt, sizeof(txt), "%s..", getLangString(_L_DELETE));
+ snprintf(txt, sizeof(txt), "%s", getLangString(_L_DELETE));
mui_list_view_add_item(app->p_list_view, ICON_DELETE, txt, (void *)FILE_BROWSER_MENU_REMOVE_FOLDER);
}
mui_list_view_add_item(app->p_list_view, ICON_BACK, getLangString(_L_BACK_TO_FILE_LIST),
diff --git a/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_detail_menu.c b/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_detail_menu.c
index cd50ef6c..60c4254e 100644
--- a/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_detail_menu.c
+++ b/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_detail_menu.c
@@ -95,8 +95,8 @@ static void amiidb_scene_amiibo_detail_menu_on_selected(mui_list_view_event_t ev
char txt[32];
settings_data_t *p_settings = settings_get_data();
p_settings->auto_gen_amiibo = !p_settings->auto_gen_amiibo;
- snprintf(txt, sizeof(txt), "[%s]",
- p_settings->auto_gen_amiibo ? getLangString(_L_ON) : getLangString(_L_OFF));
+ snprintf(txt, sizeof(txt), "%s",
+ p_settings->auto_gen_amiibo ? getLangString(_L_ON_F) : getLangString(_L_OFF_F));
settings_save();
string_set_str(p_item->sub_text, txt);
@@ -108,7 +108,7 @@ static void amiidb_scene_amiibo_detail_menu_on_selected(mui_list_view_event_t ev
char txt[32];
settings_data_t *p_settings = settings_get_data();
p_settings->qrcode_enabled = !p_settings->qrcode_enabled;
- snprintf(txt, sizeof(txt), "[%s]", p_settings->qrcode_enabled ? getLangString(_L_ON) : getLangString(_L_OFF));
+ snprintf(txt, sizeof(txt), "%s", p_settings->qrcode_enabled ? getLangString(_L_ON_F) : getLangString(_L_OFF_F));
settings_save();
string_set_str(p_item->sub_text, txt);
@@ -139,11 +139,11 @@ void amiidb_scene_amiibo_detail_menu_on_enter(void *user_data) {
char txt[32];
settings_data_t *p_settings = settings_get_data();
- snprintf(txt, sizeof(txt), "[%s]", p_settings->auto_gen_amiibo ? getLangString(_L_ON) : getLangString(_L_OFF));
+ snprintf(txt, sizeof(txt), "%s", p_settings->auto_gen_amiibo ? getLangString(_L_ON_F) : getLangString(_L_OFF_F));
mui_list_view_add_item_ext(app->p_list_view, 0xe1c6, getLangString(_L_AUTO_RANDOM_GENERATION), txt,
(void *)AMIIDB_DETAIL_MENU_AUTO_RAND_UID);
- snprintf(txt, sizeof(txt), "[%s]", p_settings->qrcode_enabled ? getLangString(_L_ON) : getLangString(_L_OFF));
+ snprintf(txt, sizeof(txt), "%s", p_settings->qrcode_enabled ? getLangString(_L_ON_F) : getLangString(_L_OFF_F));
mui_list_view_add_item_ext(app->p_list_view, 0xe006, getLangString(_L_SHOW_QRCODE), txt,
(void *)AMIIDB_DETAIL_MENU_SHOW_QRCODE);
mui_list_view_add_item(app->p_list_view, ICON_FAVORITE, getLangString(_L_APP_AMIIDB_DETAIL_FAVORITE),
diff --git a/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c b/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c
index f47de382..19498567 100644
--- a/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c
+++ b/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c
@@ -23,6 +23,21 @@ static void amiidb_scene_amiibo_search_text_input_event_cb(mui_text_input_event_
}
}
+static void amiidb_msg_box_error_cb(mui_msg_box_event_t event, mui_msg_box_t *p_msg_box) {
+ app_amiidb_t *app = p_msg_box->user_data;
+ mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIDB_VIEW_ID_LIST);
+}
+
+static void amiidb_show_message(app_amiidb_t *app, const char *msg) {
+ mui_msg_box_set_header(app->p_msg_box, getLangString(_L_ERR));
+ mui_msg_box_set_message(app->p_msg_box, msg);
+ mui_msg_box_set_btn_text(app->p_msg_box, NULL, getLangString(_L_KNOW), NULL);
+ mui_msg_box_set_btn_focus(app->p_msg_box, 1);
+ mui_msg_box_set_event_cb(app->p_msg_box, amiidb_msg_box_error_cb);
+
+ mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIDB_VIEW_ID_MSG_BOX);
+}
+
static void amiidb_scene_amiibo_search_list_view_on_selected(mui_list_view_event_t event, mui_list_view_t *p_list_view,
mui_list_item_t *p_item) {
uint16_t icon = p_item->icon;
@@ -49,6 +64,10 @@ static void amiidb_scene_amiibo_search_list_view_on_selected(mui_list_view_event
mui_text_input_set_event_cb(app->p_text_input, amiidb_scene_amiibo_search_text_input_event_cb);
mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIDB_VIEW_ID_INPUT);
} break;
+
+ case ICON_ERROR: {
+ amiidb_show_message(app, _T(APP_AMIIDB_MORE_MESSAGE));
+ } break;
}
}
diff --git a/fw/application/src/app/settings/scene/settings_scene_main.c b/fw/application/src/app/settings/scene/settings_scene_main.c
index 70fdd3ba..d90c2e68 100644
--- a/fw/application/src/app/settings/scene/settings_scene_main.c
+++ b/fw/application/src/app/settings/scene/settings_scene_main.c
@@ -169,7 +169,7 @@ static void settings_scene_main_reload(void *user_data) {
(void *)SETTINGS_MAIN_MENU_OLED_CONTRAST);
#else
if (p_settings->lcd_backlight == 0) {
- snprintf(txt, sizeof(txt), "[%s]", getLangString(_L_OFF));
+ snprintf(txt, sizeof(txt), "%s", getLangString(_L_OFF_F));
} else {
snprintf(txt, sizeof(txt), "[%d%%]", p_settings->lcd_backlight);
}
diff --git a/fw/application/src/hal/hal_spi_flash.c b/fw/application/src/hal/hal_spi_flash.c
index 3d91bce2..cfc1c934 100644
--- a/fw/application/src/hal/hal_spi_flash.c
+++ b/fw/application/src/hal/hal_spi_flash.c
@@ -40,7 +40,7 @@
#define MTC_W25Q32_BV (0x4016) /* W25Q32BV */
#define MTC_W25Q32_DW (0x6016) /* W25Q32DW */
#define MTC_W25Q64_BV_CV (0x4017) /* W25Q64BV W25Q64CV */
-#define MTC_W25Q64_DW (0x4017) /* W25Q64DW */
+#define MTC_W25Q64_DW (0x6017) /* W25Q64DW */
#define MTC_W25Q128_BV (0x4018) /* W25Q128BV */
#define MTC_W25Q256_FV (TBD) /* W25Q256FV */
#define MTC_MX25L25645_GM2I (0x2019) /* MX25L25645GM2I-10G */
@@ -151,38 +151,48 @@ ret_code_t hal_spi_flash_info(flash_info_t *info) {
memory_type_capacity = rx[1];
memory_type_capacity = (memory_type_capacity << 8) | rx[2];
- if (memory_type_capacity == MTC_MX25L25645_GM2I) {
- NRF_LOG_INFO("MX25L25645GM2I-10G detection");
- info->block_count = 8192;
- } else if (memory_type_capacity == MTC_W25Q128_BV) {
- NRF_LOG_INFO("W25Q128BV detection");
- info->block_count = 4096;
- } else if (memory_type_capacity == MTC_W25Q64_BV_CV) {
- NRF_LOG_INFO("W25Q64BV or W25Q64CV detection");
- info->block_count = 2048;
- } else if (memory_type_capacity == MTC_W25Q64_DW) {
- NRF_LOG_INFO("W25Q64DW detection");
- info->block_count = 2048;
- } else if (memory_type_capacity == MTC_W25Q32_BV) {
- NRF_LOG_INFO("W25Q32BV detection");
- info->block_count = 1024;
- } else if (memory_type_capacity == MTC_W25Q32_DW) {
- NRF_LOG_INFO("W25Q32DW detection");
- info->block_count = 1024;
- } else if (memory_type_capacity == MTC_W25Q16_BV_CL_CV) {
- NRF_LOG_INFO("W25Q16BV or W25Q16CL or W25Q16CV detection");
- info->block_count = 512;
- } else if (memory_type_capacity == MTC_W25Q16_DW) {
- NRF_LOG_INFO("W25Q16DW detection");
- info->block_count = 512;
- } else {
- NRF_LOG_INFO("Memory Capacity error! %d", memory_type_capacity);
- info->block_count = 0;
- return NRF_ERROR_INVALID_PARAM;
+ switch (memory_type_capacity) {
+ case MTC_MX25L25645_GM2I:
+ NRF_LOG_INFO("MX25L25645GM2I-10G detection");
+ info->block_count = 8192;
+ break;
+ case MTC_W25Q128_BV:
+ NRF_LOG_INFO("W25Q128BV detection");
+ info->block_count = 4096;
+ break;
+ case MTC_W25Q64_BV_CV:
+ NRF_LOG_INFO("W25Q64BV or W25Q64CV detection");
+ info->block_count = 2048;
+ break;
+ case MTC_W25Q64_DW:
+ NRF_LOG_INFO("W25Q64DW detection");
+ info->block_count = 2048;
+ break;
+ case MTC_W25Q32_BV:
+ NRF_LOG_INFO("W25Q32BV detection");
+ info->block_count = 1024;
+ break;
+ case MTC_W25Q32_DW:
+ NRF_LOG_INFO("W25Q32DW detection");
+ info->block_count = 1024;
+ break;
+ case MTC_W25Q16_BV_CL_CV:
+ NRF_LOG_INFO("W25Q16BV or W25Q16CL or W25Q16CV detection");
+ info->block_count = 512;
+ break;
+ case MTC_W25Q16_DW:
+ NRF_LOG_INFO("W25Q16DW detection");
+ info->block_count = 512;
+ break;
+ default:
+ NRF_LOG_INFO("Memory Capacity error! %d", memory_type_capacity);
+ info->block_count = 0;
+ return NRF_ERROR_INVALID_PARAM;
}
return NRF_SUCCESS;
}
+
ret_code_t hal_spi_flash_read(uint32_t address, void *buffer, size_t size) {
uint8_t tx[4];
diff --git a/fw/application/src/i18n/de_DE.c b/fw/application/src/i18n/de_DE.c
index fbd39085..b0968e08 100644
--- a/fw/application/src/i18n/de_DE.c
+++ b/fw/application/src/i18n/de_DE.c
@@ -4,30 +4,30 @@ const char * const lang_de_DE[_L_COUNT] = {
[_L_OFF] = "AUS",
[_L_ON_F] = "[AN]",
[_L_OFF_F] = "[AUS]",
- [_L_BACK] = "[Zurück]",
+ [_L_BACK] = "Zurück",
[_L_ERR] = "Fehler",
[_L_ERR_CODE] = "Fehlercode",
- [_L_APP_AMIIBO] = "Amiibo-Emulator",
+ [_L_APP_AMIIBO] = "Amiibo Emulator",
[_L_APP_AMIIBOLINK] = "AmiiboLink",
- [_L_APP_BLE] = "BLE-Dateitransfer",
- [_L_APP_BLE_TITLE] = "BLE-Dateitransfer",
- [_L_APP_PLAYER] = "Videospieler",
+ [_L_APP_BLE] = "BLE Dateitransfer",
+ [_L_APP_BLE_TITLE] = "BLE Dateitransfer",
+ [_L_APP_PLAYER] = "Videoplayer",
[_L_APP_SET] = "Einstellungen",
[_L_APP_SET_VERSION] = "Version",
[_L_APP_SET_STORAGE_USED] = "Belegt",
- [_L_APP_SET_STORAGE] = "Speicher",
- [_L_APP_SET_OLED_CONTRAST] = "OLED-Kontrast",
- [_L_APP_SET_OLED_CONTRAST_TITLE] = "OLED-Kontrast",
+ [_L_APP_SET_STORAGE] = "Externer Speicher",
+ [_L_APP_SET_OLED_CONTRAST] = "OLED Kontrast",
+ [_L_APP_SET_OLED_CONTRAST_TITLE] = "OLED Kontrast",
[_L_APP_SET_LCD_BACKLIGHT] = "Beleuchtung",
[_L_APP_SET_LCD_BACKLIGHT_TITLE] = "Helligkeit",
- [_L_APP_SET_ANIM] = "Menü-Animation",
- [_L_APP_SET_LIPO_BAT] = "LiPO-Batterie",
+ [_L_APP_SET_ANIM] = "Menü Animation",
+ [_L_APP_SET_LIPO_BAT] = "LiPO Batterie",
[_L_APP_SET_SHOW_MEM_USAGE] = "Speicheranzeige",
- [_L_APP_SET_HIBERNATE] = "Schnell-Wecken",
- [_L_APP_SET_SLEEP_TIMEOUT] = "Schlaf-Timeout",
+ [_L_APP_SET_HIBERNATE] = "Schnelles Aufwachen",
+ [_L_APP_SET_SLEEP_TIMEOUT] = "Standby nach",
[_L_APP_SET_LANGUAGE] = "Sprache",
- [_L_APP_SET_DFU] = "Firmw.-Aktualisierung",
- [_L_APP_SET_REBOOT] = "System-Neustart",
+ [_L_APP_SET_DFU] = "Firmw. Aktualisierung",
+ [_L_APP_SET_REBOOT] = "System Neustart",
[_L_APP_SET_RESET_DEFAULT] = "Standardeinstellungen",
[_L_APP_SET_RESET_DEFAULT_SUCCESS] = "Einstellungen zurückgesetzt!",
[_L_APP_SET_RESET_DEFAULT_CONFIRM] = "Auf Standardeinstellungen zurücksetzen?",
@@ -36,131 +36,134 @@ const char * const lang_de_DE[_L_COUNT] = {
[_L_45S] = "45 Sekunden",
[_L_1MIN] = "1 Minute",
[_L_2MIN] = "2 Minuten",
- [_L_3MIN] = "3 Min",
- [_L_AMIIBO_KEY_UNLOADED] = "Schlüssel nicht gefunden",
- [_L_UPLOAD_KEY_RETAIL_BIN] = "Laden Sie die Datei key_retail.bin in das Stammverzeichnis des Speichers.",
+ [_L_3MIN] = "3 Minuten",
+ [_L_AMIIBO_KEY_UNLOADED] = "Amiibo Schlüssel fehlt",
+ [_L_UPLOAD_KEY_RETAIL_BIN] = "Platzieren Sie die Datei key_retail.bin im Hauptverzeichnis des Speichers.",
[_L_KNOW] = "Verstanden",
- [_L_RANDOM_GENERATION] = "Zufällige Tag-Nummer",
- [_L_AUTO_RANDOM_GENERATION] = "Autom. random.",
- [_L_SHOW_QRCODE] = "QR-Code",
+ [_L_RANDOM_GENERATION] = "Zufällige UUID",
+ [_L_AUTO_RANDOM_GENERATION] = "Zufällige UUID (Automatisch)",
+ [_L_SHOW_QRCODE] = "QR Code",
[_L_DELETE_TAG] = "Tag löschen",
- [_L_DELETE_TAG_CONFIRM] = "Bestätigen Sie das\nLöschen %s?",
- [_L_BACK_TO_DETAILS] = "Zurück zu Tag-Details",
- [_L_BACK_TO_FILE_LIST] = "[Zurück zur Liste]",
- [_L_BACK_TO_MAIN_MENU] = "[Hauptmenü]",
+ [_L_DELETE_TAG_CONFIRM] = "Löschen von %s bestätigen?",
+ [_L_BACK_TO_DETAILS] = "Zurück zu Tag Details",
+ [_L_BACK_TO_FILE_LIST] = "Zurück zur Liste",
+ [_L_BACK_TO_MAIN_MENU] = "Hauptmenü",
[_L_FORMAT] = "Formatieren",
[_L_FORMAT_STORAGE] = "Speicher formatieren",
[_L_DELETE_ALL_DATA] = "Alle Daten löschen?",
- [_L_DELETING_MESSAGE] = "Formatierung..",
- [_L_MESSAGE] = "Nachricht",
+ [_L_DELETING_MESSAGE] = "Formatiere...",
+ [_L_MESSAGE] = "Meldung",
[_L_CONFIRM] = "Bestätigen",
[_L_CANCEL] = "Abbrechen",
- [_L_BACK_TO_LIST] = "[Zurück zur Liste]",
- [_L_NOT_MOUNTED] = "Speicher nicht ausgerüstet",
+ [_L_BACK_TO_LIST] = "Zurück zur Liste",
+ [_L_NOT_MOUNTED] = "Speicher nicht eingebunden",
[_L_MOUNTED_LFS] = "===Speicher [LFS]===",
[_L_MOUNTED_FFS] = "===Speicher [FFS]===",
[_L_TOTAL_SPACE] = "Gesamt",
[_L_AVAILABLE_SPACE] = "Frei",
- [_L_NOT_AMIIBO_FILE] = "Dies ist keine Amiibo-Datei",
+ [_L_NOT_AMIIBO_FILE] = "Keine Amiibo Datei",
[_L_READ_FILE_FAILED] = "Lesen fehlgeschlagen",
[_L_INPUT_FOLDER_NAME] = "Ordnername eingeben:",
- [_L_INPUT_AMIIBO_NAME] = "Amiibo-Name eingeben:",
- [_L_DELETE] = "Löschen",
+ [_L_INPUT_AMIIBO_NAME] = "Amiibo Namen eingeben:",
+ [_L_DELETE_FILE] = "%s löschen ?",
+ [_L_DELETE] = "Löschen...",
+ [_L_TIPS] = "Bestätigen",
[_L_INPUT_NEW_NAME] = "Neuen Namen eingeben:",
[_L_INVALID_INPUT] = "Ungültige Eingabe",
- [_L_CREATE_NEW_FOLDER] = "Neuer Ordner..",
- [_L_CREATE_NEW_TAG] = "Neuer Tag..",
- [_L_CREATE_NEW_TAG_BATCH] = "Mehrere Tags..",
- [_L_INPUT_TAG_NUM] = "Tag-Anzahl eingeben:",
- [_L_CREATE_TOO_MANY_NUM] = "Nur maximal %d Tags in einem Stapel erstellt.",
+ [_L_CREATE_NEW_FOLDER] = "Neuer Ordner...",
+ [_L_CREATE_NEW_TAG] = "Neuer Tag...",
+ [_L_CREATE_NEW_TAG_BATCH] = "Mehrere Tags erstellen...",
+ [_L_INPUT_TAG_NUM] = "Tag Anzahl eingeben:",
+ [_L_CREATE_TOO_MANY_NUM] = "Sie können nur maximal %d Tags auf einmal erstellen.",
[_L_CREATING_TAG_BATCH] = "Tag erstellen",
[_L_CREATING_TAG_FAILED] = "Erstellen von Tag %s fehlgeschlagen!",
- [_L_RENAME] = "Umbenennen",
+ [_L_RENAME] = "Umbenennen...",
[_L_OPEN_FOLDER_FAILED] = "Ordner konnte nicht geöffnet werden",
[_L_RENAME_FAILED] = "Umbenennen fehlgeschlagen\nFehlercode",
[_L_MAIN_RETURN] = "[Zurück]",
- [_L_RANDOM_MODE_MANUAL] = "Zufällig (Manuell)",
- [_L_RANDOM_MODE_AUTO] = "Zufällig (Automatisch)",
+ [_L_RANDOM_MODE_MANUAL] = "Zufällige UUID (Manuell)",
+ [_L_RANDOM_MODE_AUTO] = "Zufällige UUID (Automatisch)",
[_L_SEQUENCE_MODE] = "Sequentieller Modus",
- [_L_READ_WRITE_MODE] = "Lese-Schreib-Modus",
+ [_L_READ_WRITE_MODE] = "Lese-Schreibmodus",
[_L_AMIIBOLINK_V1] = "V1",
[_L_AMIIBOLINK_V2] = "V2",
[_L_AMILOOP] = "AmiLoop",
[_L_MODE] = "Modus",
- [_L_AUTO_RANDOM] = "Autom. randomisieren",
- [_L_COMPATIBLE_MODE] = "Kompat. Modus",
+ [_L_AUTO_RANDOM] = "Zufällige UUID (Automatisch)",
+ [_L_COMPATIBLE_MODE] = "Kompabilitäts Modus",
[_L_TAG_DETAILS] = "[Zurück zu Details]",
[_L_MAIN_MENU] = "[Hauptmenü]",
- [_L_MODE_RANDOM] = "Manuell",
+ [_L_MODE_RANDOM] = "Zufällige UUID (Manuell)",
[_L_MODE_CYCLE] = "Sequentiell",
- [_L_MODE_NTAG] = "Lese/Schreib",
- [_L_MODE_RANDOM_AUTO_GEN] = "Automatisch",
- [_L_BLANK_TAG] = "Leerer NFC-Tag",
- [_L_APP_AMIIDB] = "Amiibo-Datenbank",
- [_L_APP_AMMIDB_BROWSER] = "Browser..",
- [_L_APP_AMIIDB_SEARCH] = "Suche..",
- [_L_APP_AMIIDB_MY_FAVORITES] = "Meine Favoriten..",
- [_L_APP_AMIIDB_MY_TAGS] = "Meine Amiibo..",
- [_L_APP_AMIIDB_SETTINGS] = "Einstellungen..",
+ [_L_MODE_NTAG] = "Lesen/Schreiben",
+ [_L_MODE_RANDOM_AUTO_GEN] = "Zufällig (Auto.)",
+ [_L_BLANK_TAG] = "Leerer NFC Tag",
+ [_L_APP_AMIIDB] = "Amiibo Datenbank",
+ [_L_APP_AMMIDB_BROWSER] = "Navigieren...",
+ [_L_APP_AMIIDB_SEARCH] = "Suche...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "Meine Favoriten...",
+ [_L_APP_AMIIDB_MY_TAGS] = "Meine Amiibo...",
+ [_L_APP_AMIIDB_SETTINGS] = "Einstellungen...",
[_L_APP_AMIIDB_EXIT] = "[Beenden]",
[_L_APP_AMIIDB_BACK] = "[Zurück]",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Schlüssel",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "geladen",
- [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "fehlend",
- [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Steckplatznummer",
- [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorit..",
- [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Speichern unter..",
+ [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NICHT geladen",
+ [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Steckplatzanzahl",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorit...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Speichern unter...",
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Zurück zu Details]",
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Zurück zur Liste]",
[_L_APP_AMIIDB_SEARCH_HEAD] = "Suche:",
- [_L_APP_AMIIDB_MORE] = "[Mehr..]",
+ [_L_APP_AMIIDB_MORE] = "[Mehr...]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "Zu viele Ergebnisse. Bitte Suche eingrenzen.",
[_L_APP_AMIIDB_EMPTY_TAG] = "",
- [_L_APP_AMIIDB_SLOT_DELETE] = "Zurücksetzen..",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "Zurücksetzen...",
[_L_APP_AMIIDB_CONFIRM] = "Bestätigen",
[_L_APP_AMIIDB_CANCEL] = "Abbrechen",
[_L_APP_AMIIDB_TIPS] = "Bestätigen",
- [_L_APP_AMIIDB_NEW] = "Neu..",
- [_L_APP_AMIIDB_EMPTY] = "Leeren..",
- [_L_APP_AMIIDB_DELETE] = "Löschen..",
- [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Neuer Favoriten-Ordner:",
- [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Favoritenordner leeren?",
- [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Favoritenordner löschen?",
- [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Fav.-Ordner auswählen..",
+ [_L_APP_AMIIDB_NEW] = "Neu...",
+ [_L_APP_AMIIDB_EMPTY] = "Leeren...",
+ [_L_APP_AMIIDB_DELETE] = "Löschen...",
+ [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Neuer Fav.-Ordner:",
+ [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Fav.-Ordner leeren?",
+ [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Löschen Bestätigen?",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Fav.-Ordner auswählen...",
[_L_APP_AMIIDB_FAV_SUCCESS] = "Favorit erstellt ",
- [_L_APP_AMIIDB_FAV_FAILED] = "Favorit fehlgeschlagen!",
+ [_L_APP_AMIIDB_FAV_FAILED] = "Favorisieren fehlgeschlagen!",
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Speichern erfolgreich",
[_L_APP_AMIIDB_SLOT_SAVE_FAILED] = "Speichern fehlgeschlagen!",
- [_L_APP_CHAMELEON] = "Karten-Emulator",
+ [_L_APP_CHAMELEON] = "Karten Emulator",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL] = "Normal",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Verweigern",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignorieren",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache",
- [_L_APP_CHAMELEON_INITIALIZING] = "Daten initialisieren..",
+ [_L_APP_CHAMELEON_INITIALIZING] = "Daten initialisieren...",
[_L_APP_CHAMELEON_CARD_SLOT] = "Steckplatz",
[_L_APP_CHAMELEON_CARD_NICK] = "Spitzname",
[_L_APP_CHAMELEON_CARD_ID] = "ID",
[_L_APP_CHAMELEON_CARD_TYPE] = "Typ",
- [_L_APP_CHAMELEON_CARD_DATA] = "Daten..",
- [_L_APP_CHAMELEON_CARD_ADVANCED] = "Erweitert..",
- [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Steckplätze..",
- [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Steckplätze",
- [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Spitzname erfolgreich",
- [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Spitzname fehlgeschlagen!",
- [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Spitzname eingeben:",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Laden..",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Speichern..",
- [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Zurücksetzen..",
+ [_L_APP_CHAMELEON_CARD_DATA] = "Daten...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "Erweitert...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Steckplatz Einstellungen...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Steckplatz Nummer",
+ [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Spitzname erfolgreich gesetzt",
+ [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Spitzname setzen fehlgeschlagen!",
+ [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Spitznamen eingeben:",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Laden...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Speichern...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Zurücksetzen...",
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Daten zurückgesetzt",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Datei nicht gefunden",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Dateigröße inkorrekt",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED] = "Laden fehlgeschlagen",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS] = "Laden erfolgreich",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME] = "Dateinamen eingeben:",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED] = "Speichern fehlgeschlagen!",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS] = "Speichern erfolgreich",
- [_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE] = "Benutzermodus",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Dateigröße stimmt nicht überein",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED] = "Laden der Datei fehlgeschlagen",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS] = "Datei erfolgreich geladen",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME] = "Datei Namen eingeben:",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED] = "Datei speichern fehlgeschlagen!",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS] = "Datei erfolgreich gespeichert",
+ [_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE] = "Benutzerdefinierter Modus",
[_L_APP_CHAMELEON_CARD_GEN1A_MODE] = "Gen1A aktiv",
- [_L_APP_CHAMELEON_CARD_GENERATE_UID] = "Randomisierte UID",
+ [_L_APP_CHAMELEON_CARD_GENERATE_UID] = "Zufällige UID",
[_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS] = "UID generiert",
[_L_APP_CHAMELEON_CARD_GEN2_MODE] = "Gen2 aktiv",
[_L_APP_CHAMELEON_CARD_WRITE_MODE] = "Schreibmodus",
diff --git a/fw/application/src/i18n/en_US.c b/fw/application/src/i18n/en_US.c
index 17a570b5..61c31833 100644
--- a/fw/application/src/i18n/en_US.c
+++ b/fw/application/src/i18n/en_US.c
@@ -51,7 +51,7 @@ const char * const lang_en_US[_L_COUNT] = {
[_L_FORMAT] = "Format",
[_L_FORMAT_STORAGE] = "Format Storage",
[_L_DELETE_ALL_DATA] = "This will delete all data. Confirm format?",
- [_L_DELETING_MESSAGE] = "Formatting ..",
+ [_L_DELETING_MESSAGE] = "Formatting ...",
[_L_MESSAGE] = "Message",
[_L_CONFIRM] = "Confirm",
[_L_CANCEL] = "Cancel",
@@ -65,17 +65,19 @@ const char * const lang_en_US[_L_COUNT] = {
[_L_READ_FILE_FAILED] = "Failed read the file",
[_L_INPUT_FOLDER_NAME] = "Input Folder Name:",
[_L_INPUT_AMIIBO_NAME] = "Input Amiibo Name:",
- [_L_DELETE] = "Delete",
+ [_L_DELETE_FILE] = "Delete %s ?",
+ [_L_DELETE] = "Delete...",
+ [_L_TIPS] = "Confirm",
[_L_INPUT_NEW_NAME] = "Input New Name:",
[_L_INVALID_INPUT] = "Invalid Input",
- [_L_CREATE_NEW_FOLDER] = "Create New Folder..",
- [_L_CREATE_NEW_TAG] = "Create New Tag..",
- [_L_CREATE_NEW_TAG_BATCH] = "Batch Create New Tag..",
+ [_L_CREATE_NEW_FOLDER] = "Create New Folder...",
+ [_L_CREATE_NEW_TAG] = "Create New Tag...",
+ [_L_CREATE_NEW_TAG_BATCH] = "Batch Create New Tag...",
[_L_INPUT_TAG_NUM] = "Input Tag Number:",
[_L_CREATE_TOO_MANY_NUM] = "Only max %d tags created in a batch.",
[_L_CREATING_TAG_BATCH] = "Creating tag",
[_L_CREATING_TAG_FAILED] = "Create tag %s failed!",
- [_L_RENAME] = "Rename",
+ [_L_RENAME] = "Rename...",
[_L_OPEN_FOLDER_FAILED] = "Failed to open folder",
[_L_RENAME_FAILED] = "Failed to rename\nError code",
[_L_MAIN_RETURN] = "[RETURN]",
@@ -97,35 +99,36 @@ const char * const lang_en_US[_L_COUNT] = {
[_L_MODE_RANDOM_AUTO_GEN] = "Rand. (Auto)",
[_L_BLANK_TAG] = "Blank NFC tag",
[_L_APP_AMIIDB] = "Amiibo Database",
- [_L_APP_AMMIDB_BROWSER] = "Browser..",
- [_L_APP_AMIIDB_SEARCH] = "Search..",
- [_L_APP_AMIIDB_MY_FAVORITES] = "My Favorites..",
- [_L_APP_AMIIDB_MY_TAGS] = "My Amiibo..",
- [_L_APP_AMIIDB_SETTINGS] = "Settings..",
+ [_L_APP_AMMIDB_BROWSER] = "Browser...",
+ [_L_APP_AMIIDB_SEARCH] = "Search...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "My Favorites...",
+ [_L_APP_AMIIDB_MY_TAGS] = "My Amiibo...",
+ [_L_APP_AMIIDB_SETTINGS] = "Settings...",
[_L_APP_AMIIDB_EXIT] = "[Exit]",
[_L_APP_AMIIDB_BACK] = "[Back]",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Keys",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Loaded",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NOT Loaded",
[_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Slot Num.",
- [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorite..",
- [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Save As..",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorite...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Save As...",
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Back to Detail]",
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Back to List]",
[_L_APP_AMIIDB_SEARCH_HEAD] = "Search:",
- [_L_APP_AMIIDB_MORE] = "[More..]",
+ [_L_APP_AMIIDB_MORE] = "[More...]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "Too many results. Try a more specific search.",
[_L_APP_AMIIDB_EMPTY_TAG] = "",
- [_L_APP_AMIIDB_SLOT_DELETE] = "Reset..",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "Reset...",
[_L_APP_AMIIDB_CONFIRM] = "Confirm",
[_L_APP_AMIIDB_CANCEL] = "Cancel",
[_L_APP_AMIIDB_TIPS] = "Confirm",
- [_L_APP_AMIIDB_NEW] = "New..",
- [_L_APP_AMIIDB_EMPTY] = "Empty..",
- [_L_APP_AMIIDB_DELETE] = "Delete..",
+ [_L_APP_AMIIDB_NEW] = "New...",
+ [_L_APP_AMIIDB_EMPTY] = "Empty...",
+ [_L_APP_AMIIDB_DELETE] = "Delete...",
[_L_APP_AMIIDB_FAV_NEW_HEAD] = "New Fav. Folder:",
[_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Empty Fav. Folder?",
[_L_APP_AMIIDB_FAV_DELETE_MSG] = "Confirm Delete?",
- [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Select Fav. Folder..",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Select Fav. Folder...",
[_L_APP_AMIIDB_FAV_SUCCESS] = "Favorite Success",
[_L_APP_AMIIDB_FAV_FAILED] = "Favorite Failed!",
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Save Success",
@@ -135,21 +138,21 @@ const char * const lang_en_US[_L_COUNT] = {
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Deny",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignore",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache",
- [_L_APP_CHAMELEON_INITIALIZING] = "Initializing data ..",
+ [_L_APP_CHAMELEON_INITIALIZING] = "Initializing data ...",
[_L_APP_CHAMELEON_CARD_SLOT] = "Slot",
[_L_APP_CHAMELEON_CARD_NICK] = "Nick",
[_L_APP_CHAMELEON_CARD_ID] = "ID",
[_L_APP_CHAMELEON_CARD_TYPE] = "Type",
- [_L_APP_CHAMELEON_CARD_DATA] = "Data..",
- [_L_APP_CHAMELEON_CARD_ADVANCED] = "Advanced..",
- [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Slots Settings..",
- [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Slot Num..",
+ [_L_APP_CHAMELEON_CARD_DATA] = "Data...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "Advanced...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Slots Settings...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Slot Num...",
[_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Set Nick Success",
[_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Set Nick Failed!",
[_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Input Nick:",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Load..",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Save..",
- [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Factory..",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Load...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Save...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Factory...",
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Data Factory Success",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "File Not Found",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "File Size Not Match",
diff --git a/fw/application/src/i18n/es_ES.c b/fw/application/src/i18n/es_ES.c
index aedc2cdb..372f0485 100644
--- a/fw/application/src/i18n/es_ES.c
+++ b/fw/application/src/i18n/es_ES.c
@@ -43,15 +43,15 @@ const char * const lang_es_ES[_L_COUNT] = {
[_L_RANDOM_GENERATION] = "Nuevo serial aleat.",
[_L_AUTO_RANDOM_GENERATION] = "Serial alea. aut",
[_L_SHOW_QRCODE] = "Mostrar QR",
- [_L_DELETE_TAG] = "Borrar amiibo..",
+ [_L_DELETE_TAG] = "Borrar amiibo...",
[_L_DELETE_TAG_CONFIRM] = "¿\nBorrar %s\n?",
[_L_BACK_TO_DETAILS] = "[Detalles amiibo]",
[_L_BACK_TO_FILE_LIST] = "[Lista Archivos]",
[_L_BACK_TO_MAIN_MENU] = "[Menú Principal]",
- [_L_FORMAT] = "Formatear..",
+ [_L_FORMAT] = "Formatear...",
[_L_FORMAT_STORAGE] = "Formatear mem. Flash",
[_L_DELETE_ALL_DATA] = "Se borrará todos los\ndatos.",
- [_L_DELETING_MESSAGE] = "Formateando..",
+ [_L_DELETING_MESSAGE] = "Formateando...",
[_L_MESSAGE] = "Inicializar",
[_L_CONFIRM] = "Confirmar",
[_L_CANCEL] = "Cancelar",
@@ -65,17 +65,19 @@ const char * const lang_es_ES[_L_COUNT] = {
[_L_READ_FILE_FAILED] = "Error al leer archivo",
[_L_INPUT_FOLDER_NAME] = "Nombre carpeta:",
[_L_INPUT_AMIIBO_NAME] = "Nombre amiibo:",
- [_L_DELETE] = "Borrar",
+ [_L_DELETE_FILE] = "¿Borrar el %s ?",
+ [_L_DELETE] = "Borrar...",
+ [_L_TIPS] = "Confirmar",
[_L_INPUT_NEW_NAME] = "Nuevo nombre:",
[_L_INVALID_INPUT] = "Entrada inválida",
- [_L_CREATE_NEW_FOLDER] = "Crear carpeta..",
- [_L_CREATE_NEW_TAG] = "Crear amiibo..",
- [_L_CREATE_NEW_TAG_BATCH] = "Crear amiibo en lote..",
+ [_L_CREATE_NEW_FOLDER] = "Crear carpeta...",
+ [_L_CREATE_NEW_TAG] = "Crear amiibo...",
+ [_L_CREATE_NEW_TAG_BATCH] = "Crear amiibo en lote...",
[_L_INPUT_TAG_NUM] = "¿Cuántos?",
[_L_CREATE_TOO_MANY_NUM] = "Sólo se puede crear %d en lote",
[_L_CREATING_TAG_BATCH] = "Creando",
[_L_CREATING_TAG_FAILED] = "¡Error al crear %s!",
- [_L_RENAME] = "Renombrar",
+ [_L_RENAME] = "Renombrar...",
[_L_OPEN_FOLDER_FAILED] = "Fallo al abrir carpeta",
[_L_RENAME_FAILED] = "Fallo al renombrar\nCódigo de error",
[_L_MAIN_RETURN] = "[Volver]",
@@ -97,35 +99,36 @@ const char * const lang_es_ES[_L_COUNT] = {
[_L_MODE_RANDOM_AUTO_GEN] = "Aleat. auto.",
[_L_BLANK_TAG] = "Amiibo no asignado",
[_L_APP_AMIIDB] = "Base datos amiibo",
- [_L_APP_AMMIDB_BROWSER] = "Explorar..",
- [_L_APP_AMIIDB_SEARCH] = "Buscar..",
- [_L_APP_AMIIDB_MY_FAVORITES] = "Mis Favoritos..",
- [_L_APP_AMIIDB_MY_TAGS] = "Mis amiibo..",
- [_L_APP_AMIIDB_SETTINGS] = "Configuraciones..",
+ [_L_APP_AMMIDB_BROWSER] = "Explorar...",
+ [_L_APP_AMIIDB_SEARCH] = "Buscar...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "Mis Favoritos...",
+ [_L_APP_AMIIDB_MY_TAGS] = "Mis amiibo...",
+ [_L_APP_AMIIDB_SETTINGS] = "Configuraciones...",
[_L_APP_AMIIDB_EXIT] = "[Menú Principal]",
[_L_APP_AMIIDB_BACK] = "[Volver]",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Llaves",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Cargadas",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NO cargadas",
[_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Cant. ranuras",
- [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorito..",
- [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Asignar en..",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorito...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Asignar en...",
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Volver a Detalles]",
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Volver a Lista]",
[_L_APP_AMIIDB_SEARCH_HEAD] = "Buscar:",
- [_L_APP_AMIIDB_MORE] = "[Más..]",
+ [_L_APP_AMIIDB_MORE] = "[Más...]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "",
[_L_APP_AMIIDB_EMPTY_TAG] = "",
- [_L_APP_AMIIDB_SLOT_DELETE] = "Borrar..",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "Borrar...",
[_L_APP_AMIIDB_CONFIRM] = "Confirmar",
[_L_APP_AMIIDB_CANCEL] = "Cancelar",
[_L_APP_AMIIDB_TIPS] = "Confirmar",
- [_L_APP_AMIIDB_NEW] = "Nueva..",
- [_L_APP_AMIIDB_EMPTY] = "Vaciar..",
- [_L_APP_AMIIDB_DELETE] = "Borrar..",
+ [_L_APP_AMIIDB_NEW] = "Nueva...",
+ [_L_APP_AMIIDB_EMPTY] = "Vaciar...",
+ [_L_APP_AMIIDB_DELETE] = "Borrar...",
[_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nueva Carp. Favoritos:",
[_L_APP_AMIIDB_FAV_EMPTY_MSG] = "¿Vaciar Carp. Favoritos?",
[_L_APP_AMIIDB_FAV_DELETE_MSG] = "¿Confirma borrado?",
- [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selec. carp. favoritos..",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selec. carp. favoritos...",
[_L_APP_AMIIDB_FAV_SUCCESS] = "¡Favorito correcto!",
[_L_APP_AMIIDB_FAV_FAILED] = "¡Favorito fallido!",
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Asignación correcta",
@@ -135,21 +138,21 @@ const char * const lang_es_ES[_L_COUNT] = {
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Negar",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignorar",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Caché",
- [_L_APP_CHAMELEON_INITIALIZING] = "Inicializando ambiente.\nPor favor espere..",
+ [_L_APP_CHAMELEON_INITIALIZING] = "Inicializando ambiente.\nPor favor espere...",
[_L_APP_CHAMELEON_CARD_SLOT] = "Ranura",
[_L_APP_CHAMELEON_CARD_NICK] = "Apodo",
[_L_APP_CHAMELEON_CARD_ID] = "ID",
[_L_APP_CHAMELEON_CARD_TYPE] = "Tipo",
- [_L_APP_CHAMELEON_CARD_DATA] = "Datos..",
- [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avanzado..",
- [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Configuración..",
- [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Cant. ranuras..",
+ [_L_APP_CHAMELEON_CARD_DATA] = "Datos...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avanzado...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Configuración...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Cant. ranuras...",
[_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Apodo cambiado.",
[_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "¡Falló cambio apodo!",
[_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Apodo:",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Cargar..",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Guardar..",
- [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Inicializar..",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Cargar...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Guardar...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Inicializar...",
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "¡Datos inicializados!",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Archivo no encontrado",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Tamaño archivo incorrecto",
diff --git a/fw/application/src/i18n/fr_FR.c b/fw/application/src/i18n/fr_FR.c
index f0c7e974..d3773122 100644
--- a/fw/application/src/i18n/fr_FR.c
+++ b/fw/application/src/i18n/fr_FR.c
@@ -39,7 +39,7 @@ const char * const lang_fr_FR[_L_COUNT] = {
[_L_3MIN] = "3 min.",
[_L_AMIIBO_KEY_UNLOADED] = "Clé Amiibo Non Chargée",
[_L_UPLOAD_KEY_RETAIL_BIN] = "Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.",
- [_L_KNOW] = "Compris (NOTE please feel free to simply change any entry as needed)",
+ [_L_KNOW] = "Compris",
[_L_RANDOM_GENERATION] = "Randomiser la Balise",
[_L_AUTO_RANDOM_GENERATION] = "Randomisation Automatique",
[_L_SHOW_QRCODE] = "Afficher le Code QR",
@@ -51,7 +51,7 @@ const char * const lang_fr_FR[_L_COUNT] = {
[_L_FORMAT] = "Format",
[_L_FORMAT_STORAGE] = "Format de Stockage",
[_L_DELETE_ALL_DATA] = "Cette opération efface toutes les données. Confirmer le formatage?",
- [_L_DELETING_MESSAGE] = "Formatage ..",
+ [_L_DELETING_MESSAGE] = "Formatage ...",
[_L_MESSAGE] = "Message",
[_L_CONFIRM] = "Confirmer",
[_L_CANCEL] = "Annuler",
@@ -65,17 +65,19 @@ const char * const lang_fr_FR[_L_COUNT] = {
[_L_READ_FILE_FAILED] = "Échec de la lecture du fichier",
[_L_INPUT_FOLDER_NAME] = "Nom du Dossier D'entrée:",
[_L_INPUT_AMIIBO_NAME] = "Nom de l'Amiibo D'entrée:",
- [_L_DELETE] = "Supprimer",
+ [_L_DELETE_FILE] = "Supprimer le %s ?",
+ [_L_DELETE] = "Supprimer...",
+ [_L_TIPS] = "Confirmer",
[_L_INPUT_NEW_NAME] = "Nouveau nom D'entrée:",
[_L_INVALID_INPUT] = "Entrée Invalide",
- [_L_CREATE_NEW_FOLDER] = "Créer un Nouveau Dossier..",
- [_L_CREATE_NEW_TAG] = "Créer une Nouvelle Étiquette..",
- [_L_CREATE_NEW_TAG_BATCH] = "Créer de Nouvelles Étiquettes Par Lot..",
+ [_L_CREATE_NEW_FOLDER] = "Créer un Nouveau Dossier...",
+ [_L_CREATE_NEW_TAG] = "Créer une Nouvelle Étiquette...",
+ [_L_CREATE_NEW_TAG_BATCH] = "Créer de Nouvelles Étiquettes Par Lot...",
[_L_INPUT_TAG_NUM] = "Saisir le Numéro de l'Étiquette:",
[_L_CREATE_TOO_MANY_NUM] = "Seulement %d balises maximum créées dans un lot.",
[_L_CREATING_TAG_BATCH] = "Création d'une balise",
[_L_CREATING_TAG_FAILED] = "La création de la balise %s a échoué!",
- [_L_RENAME] = "Renommer",
+ [_L_RENAME] = "Renommer...",
[_L_OPEN_FOLDER_FAILED] = "Échec de l'ouverture du dossier",
[_L_RENAME_FAILED] = "Échec du renommage.\nCode d'Erreur",
[_L_MAIN_RETURN] = "[RETOUR]",
@@ -97,35 +99,36 @@ const char * const lang_fr_FR[_L_COUNT] = {
[_L_MODE_RANDOM_AUTO_GEN] = "Aléatoire (Automatique)",
[_L_BLANK_TAG] = "Étiquette NFC vierge",
[_L_APP_AMIIDB] = "Base de Données Amiibo",
- [_L_APP_AMMIDB_BROWSER] = "Naviguer..",
- [_L_APP_AMIIDB_SEARCH] = "Recherche..",
- [_L_APP_AMIIDB_MY_FAVORITES] = "Mes Favoris..",
- [_L_APP_AMIIDB_MY_TAGS] = "Mes Amiibo..",
- [_L_APP_AMIIDB_SETTINGS] = "Paramètres..",
+ [_L_APP_AMMIDB_BROWSER] = "Naviguer...",
+ [_L_APP_AMIIDB_SEARCH] = "Recherche...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "Mes Favoris...",
+ [_L_APP_AMIIDB_MY_TAGS] = "Mes Amiibo...",
+ [_L_APP_AMIIDB_SETTINGS] = "Paramètres...",
[_L_APP_AMIIDB_EXIT] = "[Quitter]",
[_L_APP_AMIIDB_BACK] = "[Retour]",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Touches",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Chargée",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NON Chargée",
[_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Numéro d'Emplacement",
- [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorite..",
- [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Enregistrer Sous..",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorite...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Enregistrer Sous...",
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Retour au Détail]",
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Retour à la Liste]",
[_L_APP_AMIIDB_SEARCH_HEAD] = "Recherche:",
- [_L_APP_AMIIDB_MORE] = "[Plus..]",
+ [_L_APP_AMIIDB_MORE] = "[Plus...]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "",
[_L_APP_AMIIDB_EMPTY_TAG] = "",
- [_L_APP_AMIIDB_SLOT_DELETE] = "Réinitialiser..",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "Réinitialiser...",
[_L_APP_AMIIDB_CONFIRM] = "Confirmer",
[_L_APP_AMIIDB_CANCEL] = "Annuler",
[_L_APP_AMIIDB_TIPS] = "Confirmer",
- [_L_APP_AMIIDB_NEW] = "Nouveau..",
- [_L_APP_AMIIDB_EMPTY] = "Vider..",
- [_L_APP_AMIIDB_DELETE] = "Supprimer..",
+ [_L_APP_AMIIDB_NEW] = "Nouveau...",
+ [_L_APP_AMIIDB_EMPTY] = "Vider...",
+ [_L_APP_AMIIDB_DELETE] = "Supprimer...",
[_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nouveau Dossier Favori:",
[_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Vider le Dossier Favori?",
[_L_APP_AMIIDB_FAV_DELETE_MSG] = "Confirmer la Suppression?",
- [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Sélectionner le Dossier Favori..",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Sélectionner le Dossier Favori...",
[_L_APP_AMIIDB_FAV_SUCCESS] = "Succès du Favori",
[_L_APP_AMIIDB_FAV_FAILED] = "Échec du Favori!",
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Sauvegarder Succès",
@@ -134,22 +137,22 @@ const char * const lang_fr_FR[_L_COUNT] = {
[_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL] = "Normal",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Refuser",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignorer",
- [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Zwischenspeicher",
- [_L_APP_CHAMELEON_INITIALIZING] = "Initialisation des données ..",
+ [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache",
+ [_L_APP_CHAMELEON_INITIALIZING] = "Initialisation des données ...",
[_L_APP_CHAMELEON_CARD_SLOT] = "Fente",
[_L_APP_CHAMELEON_CARD_NICK] = "Pseudo",
[_L_APP_CHAMELEON_CARD_ID] = "ID",
[_L_APP_CHAMELEON_CARD_TYPE] = "Type de Données",
- [_L_APP_CHAMELEON_CARD_DATA] = "Données..",
- [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avancé..",
- [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Paramètres des Emplacements..",
- [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Numéro d'Emplacement..",
+ [_L_APP_CHAMELEON_CARD_DATA] = "Données...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avancé...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Paramètres des Emplacements...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Numéro d'Emplacement...",
[_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Définir le Pseudo Succès",
[_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Définir le Pseudo a Échoué!",
[_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Entrer le Pseudo:",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Charger..",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Sauvegarder..",
- [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Rétablir Les Valeurs Par Défaut..",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Charger...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Sauvegarder...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Rétablir Les Valeurs Par Défaut...",
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Réinitialisation des Données Succès",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Fichier Non Trouvé",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "La Taille du Fichier ne Correspond Pas",
diff --git a/fw/application/src/i18n/hu_HU.c b/fw/application/src/i18n/hu_HU.c
index f4875cc3..36402679 100644
--- a/fw/application/src/i18n/hu_HU.c
+++ b/fw/application/src/i18n/hu_HU.c
@@ -51,7 +51,7 @@ const char * const lang_hu_HU[_L_COUNT] = {
[_L_FORMAT] = "Formátum ",
[_L_FORMAT_STORAGE] = "Formátum Tárolás",
[_L_DELETE_ALL_DATA] = "Minden adatot töröl. Formázás megerősítése?",
- [_L_DELETING_MESSAGE] = "Formázás ..",
+ [_L_DELETING_MESSAGE] = "Formázás ...",
[_L_MESSAGE] = "Üzenet",
[_L_CONFIRM] = "Megerősítés",
[_L_CANCEL] = "Megszüntet",
@@ -65,17 +65,19 @@ const char * const lang_hu_HU[_L_COUNT] = {
[_L_READ_FILE_FAILED] = "Fájl beolvasása sikerten",
[_L_INPUT_FOLDER_NAME] = "Bemeneti Mappa Neve:",
[_L_INPUT_AMIIBO_NAME] = "Amiibo Neve:",
- [_L_DELETE] = "Töröl",
+ [_L_DELETE_FILE] = "Törli a %s fájlt?",
+ [_L_DELETE] = "Töröl...",
+ [_L_TIPS] = "Megerősítés",
[_L_INPUT_NEW_NAME] = "Új Név Bevitele:",
[_L_INVALID_INPUT] = "Érvénytelen Bemenet",
- [_L_CREATE_NEW_FOLDER] = "Új Mappa Létrehozása..",
- [_L_CREATE_NEW_TAG] = "Új Címke Létrehozása..",
- [_L_CREATE_NEW_TAG_BATCH] = "Kötegelt Új Címke Létrehozása..",
+ [_L_CREATE_NEW_FOLDER] = "Új Mappa Létrehozása...",
+ [_L_CREATE_NEW_TAG] = "Új Címke Létrehozása...",
+ [_L_CREATE_NEW_TAG_BATCH] = "Kötegelt Új Címke Létrehozása...",
[_L_INPUT_TAG_NUM] = "Beviteli Címke Száma:",
[_L_CREATE_TOO_MANY_NUM] = "Max. létrehozható címke egy kötegben %d",
[_L_CREATING_TAG_BATCH] = "Címke létrehozása",
[_L_CREATING_TAG_FAILED] = "Címke létrehozása %s sikertelen!",
- [_L_RENAME] = "Átnevezés",
+ [_L_RENAME] = "Átnevezés...",
[_L_OPEN_FOLDER_FAILED] = "Mappa megnyitása sikertelen ",
[_L_RENAME_FAILED] = "Átnevezés Sikertelen\nHibakód",
[_L_MAIN_RETURN] = "[VISSZA]",
@@ -97,35 +99,36 @@ const char * const lang_hu_HU[_L_COUNT] = {
[_L_MODE_RANDOM_AUTO_GEN] = "Random (Automat.)",
[_L_BLANK_TAG] = "Üres NFC Címke",
[_L_APP_AMIIDB] = "Amiibo Adatbázis",
- [_L_APP_AMMIDB_BROWSER] = "Böngésző..",
- [_L_APP_AMIIDB_SEARCH] = "Keresés..",
- [_L_APP_AMIIDB_MY_FAVORITES] = "Kedvencek..",
- [_L_APP_AMIIDB_MY_TAGS] = "Amiiboim..",
- [_L_APP_AMIIDB_SETTINGS] = "Beállítások..",
+ [_L_APP_AMMIDB_BROWSER] = "Böngésző...",
+ [_L_APP_AMIIDB_SEARCH] = "Keresés...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "Kedvencek...",
+ [_L_APP_AMIIDB_MY_TAGS] = "Amiiboim...",
+ [_L_APP_AMIIDB_SETTINGS] = "Beállítások...",
[_L_APP_AMIIDB_EXIT] = "[Kilépés]",
[_L_APP_AMIIDB_BACK] = "[Vissza]",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Kulcsok",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Betöltve",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NINCS betöltve",
[_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Slot Száma",
- [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Kedvenc..",
- [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Mentés Másként..",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Kedvenc...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Mentés Másként...",
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Vissza a Részletekhez]",
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Vissza a Listához]",
[_L_APP_AMIIDB_SEARCH_HEAD] = "Keresés:",
- [_L_APP_AMIIDB_MORE] = "[Bővebben..]",
+ [_L_APP_AMIIDB_MORE] = "[Bővebben...]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "",
[_L_APP_AMIIDB_EMPTY_TAG] = "<Üres Amiibo>",
- [_L_APP_AMIIDB_SLOT_DELETE] = "Újraindítás..",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "Újraindítás...",
[_L_APP_AMIIDB_CONFIRM] = "Megerősítés",
[_L_APP_AMIIDB_CANCEL] = "Törlés",
[_L_APP_AMIIDB_TIPS] = "Megerősítés",
- [_L_APP_AMIIDB_NEW] = "Új..",
- [_L_APP_AMIIDB_EMPTY] = "Üres..",
- [_L_APP_AMIIDB_DELETE] = "Törlés..",
+ [_L_APP_AMIIDB_NEW] = "Új...",
+ [_L_APP_AMIIDB_EMPTY] = "Üres...",
+ [_L_APP_AMIIDB_DELETE] = "Törlés...",
[_L_APP_AMIIDB_FAV_NEW_HEAD] = "Új Kedvenc Mappa:",
[_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Üres Kedvenc Mappa?",
[_L_APP_AMIIDB_FAV_DELETE_MSG] = "Törlés Megerősítése?",
- [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Kedvenc Mappa Kiválasztása..",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Kedvenc Mappa Kiválasztása...",
[_L_APP_AMIIDB_FAV_SUCCESS] = "Kedvenc Sikeres",
[_L_APP_AMIIDB_FAV_FAILED] = "Kedvenc Sikertelen!",
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Sikeresen Mentve",
@@ -135,21 +138,21 @@ const char * const lang_hu_HU[_L_COUNT] = {
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Tagadni",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Figyelmen Kívül Hagyni",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Elrejt",
- [_L_APP_CHAMELEON_INITIALIZING] = "Az adatok inicializálása ..",
+ [_L_APP_CHAMELEON_INITIALIZING] = "Az adatok inicializálása ...",
[_L_APP_CHAMELEON_CARD_SLOT] = "Cella",
[_L_APP_CHAMELEON_CARD_NICK] = "Becenév",
[_L_APP_CHAMELEON_CARD_ID] = "ID",
[_L_APP_CHAMELEON_CARD_TYPE] = "Típus",
- [_L_APP_CHAMELEON_CARD_DATA] = "Adatok..",
- [_L_APP_CHAMELEON_CARD_ADVANCED] = "Fejlett..",
- [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Cella Beállításai..",
- [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Cella Száma..",
+ [_L_APP_CHAMELEON_CARD_DATA] = "Adatok...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "Fejlett...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Cella Beállításai...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Cella Száma...",
[_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Becenév Beállítása Sikeres",
[_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Becenév Beállítása Sikertelen!",
[_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Becenév Bevitele:",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Betöltés..",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Mentés..",
- [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Visszaállítás..",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Betöltés...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Mentés...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Visszaállítás...",
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Adatok Visszaállítása Sikeres",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Fájl Nem Található",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Fájl Mérete Nem Egyezik",
diff --git a/fw/application/src/i18n/it_IT.c b/fw/application/src/i18n/it_IT.c
index 92e41261..984d529b 100644
--- a/fw/application/src/i18n/it_IT.c
+++ b/fw/application/src/i18n/it_IT.c
@@ -48,10 +48,10 @@ const char * const lang_it_IT[_L_COUNT] = {
[_L_BACK_TO_DETAILS] = "[Torna ai dettagli del tag]",
[_L_BACK_TO_FILE_LIST] = "[Torna alla lista dei file]",
[_L_BACK_TO_MAIN_MENU] = "[Torna al menu principale]",
- [_L_FORMAT] = "Formatta..",
+ [_L_FORMAT] = "Formatta...",
[_L_FORMAT_STORAGE] = "Formatta memoria",
[_L_DELETE_ALL_DATA] = "Questo cancellerà tutti i dati.\nConferma la formattazione?",
- [_L_DELETING_MESSAGE] = "Formattazione in corso ..",
+ [_L_DELETING_MESSAGE] = "Formattazione in corso ...",
[_L_MESSAGE] = "Messaggio",
[_L_CONFIRM] = "Conferma",
[_L_CANCEL] = "Annulla",
@@ -65,17 +65,19 @@ const char * const lang_it_IT[_L_COUNT] = {
[_L_READ_FILE_FAILED] = "Errore nella lettura del file",
[_L_INPUT_FOLDER_NAME] = "Nome cartella:",
[_L_INPUT_AMIIBO_NAME] = "Nome Amiibo:",
- [_L_DELETE] = "Elimina",
+ [_L_DELETE_FILE] = "Eliminare %s ?",
+ [_L_DELETE] = "Elimina...",
+ [_L_TIPS] = "Conferma",
[_L_INPUT_NEW_NAME] = "Nuovo nome:",
[_L_INVALID_INPUT] = "Input non valido",
- [_L_CREATE_NEW_FOLDER] = "Crea cartella..",
- [_L_CREATE_NEW_TAG] = "Crea Amiibo..",
- [_L_CREATE_NEW_TAG_BATCH] = "Crea Amiibo in serie..",
+ [_L_CREATE_NEW_FOLDER] = "Crea cartella...",
+ [_L_CREATE_NEW_TAG] = "Crea Amiibo...",
+ [_L_CREATE_NEW_TAG_BATCH] = "Crea Amiibo in serie...",
[_L_INPUT_TAG_NUM] = "Numero di tag:",
[_L_CREATE_TOO_MANY_NUM] = "Numero max di %d tag in serie.",
[_L_CREATING_TAG_BATCH] = "Creazione tag",
[_L_CREATING_TAG_FAILED] = "Creazione tag %s fallita!",
- [_L_RENAME] = "Rinomina",
+ [_L_RENAME] = "Rinomina...",
[_L_OPEN_FOLDER_FAILED] = "Errore nell'apertura della cartella",
[_L_RENAME_FAILED] = "Errore nella rinomina\nCodice errore",
[_L_MAIN_RETURN] = "[Torna indietro]",
@@ -97,35 +99,36 @@ const char * const lang_it_IT[_L_COUNT] = {
[_L_MODE_RANDOM_AUTO_GEN] = "Auto. casuale",
[_L_BLANK_TAG] = "Amiibo non assegnato",
[_L_APP_AMIIDB] = "Database Amiibo",
- [_L_APP_AMMIDB_BROWSER] = "Esplora..",
- [_L_APP_AMIIDB_SEARCH] = "Cerca..",
- [_L_APP_AMIIDB_MY_FAVORITES] = "I miei preferiti..",
- [_L_APP_AMIIDB_MY_TAGS] = "I miei Amiibo..",
- [_L_APP_AMIIDB_SETTINGS] = "Impostazioni..",
+ [_L_APP_AMMIDB_BROWSER] = "Esplora...",
+ [_L_APP_AMIIDB_SEARCH] = "Cerca...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "I miei preferiti...",
+ [_L_APP_AMIIDB_MY_TAGS] = "I miei Amiibo...",
+ [_L_APP_AMIIDB_SETTINGS] = "Impostazioni...",
[_L_APP_AMIIDB_EXIT] = "[Menu principale]",
[_L_APP_AMIIDB_BACK] = "[Torna indietro]",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Chiavi",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Caricate",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NON caricate",
[_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Num. slot",
- [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Preferito..",
- [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Assegna a..",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Preferito...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Assegna a...",
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Torna ai dettagli]",
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Torna alla lista]",
[_L_APP_AMIIDB_SEARCH_HEAD] = "Cerca:",
- [_L_APP_AMIIDB_MORE] = "[Più..]",
+ [_L_APP_AMIIDB_MORE] = "[Più...]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "",
[_L_APP_AMIIDB_EMPTY_TAG] = "",
- [_L_APP_AMIIDB_SLOT_DELETE] = "Elimina..",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "Elimina...",
[_L_APP_AMIIDB_CONFIRM] = "Conferma",
[_L_APP_AMIIDB_CANCEL] = "Annulla",
[_L_APP_AMIIDB_TIPS] = "Conferma",
- [_L_APP_AMIIDB_NEW] = "Nuovo..",
- [_L_APP_AMIIDB_EMPTY] = "Svuota..",
- [_L_APP_AMIIDB_DELETE] = "Cancella..",
+ [_L_APP_AMIIDB_NEW] = "Nuovo...",
+ [_L_APP_AMIIDB_EMPTY] = "Svuota...",
+ [_L_APP_AMIIDB_DELETE] = "Cancella...",
[_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nuova cart. preferiti:",
[_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Svuotare cart. preferiti?",
[_L_APP_AMIIDB_FAV_DELETE_MSG] = "Conferma cancellazione?",
- [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selez. cart. preferiti..",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selez. cart. preferiti...",
[_L_APP_AMIIDB_FAV_SUCCESS] = "Preferito aggiunto!",
[_L_APP_AMIIDB_FAV_FAILED] = "Preferito non aggiunto!",
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Assegnazione corretta",
@@ -135,21 +138,21 @@ const char * const lang_it_IT[_L_COUNT] = {
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Nega",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignora",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache",
- [_L_APP_CHAMELEON_INITIALIZING] = "Inizializzazione ambiente.\nPer favore attendi..",
+ [_L_APP_CHAMELEON_INITIALIZING] = "Inizializzazione ambiente.\nPer favore attendi...",
[_L_APP_CHAMELEON_CARD_SLOT] = "Slot",
[_L_APP_CHAMELEON_CARD_NICK] = "Nickname",
[_L_APP_CHAMELEON_CARD_ID] = "ID",
[_L_APP_CHAMELEON_CARD_TYPE] = "Tipo",
- [_L_APP_CHAMELEON_CARD_DATA] = "Dati..",
- [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avanzato..",
- [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Impostazioni..",
- [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Num. slot..",
+ [_L_APP_CHAMELEON_CARD_DATA] = "Dati...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avanzato...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Impostazioni...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Num. slot...",
[_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Cambio nickname riuscito.",
[_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Cambio nickname fallito!",
[_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Nickname:",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Carica..",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Salva..",
- [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Inizializza..",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Carica...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Salva...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Inizializza...",
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Dati inizializzati!",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "File non trovato",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Dimensione file non corretta",
diff --git a/fw/application/src/i18n/ja_JP.c b/fw/application/src/i18n/ja_JP.c
index 19546c56..030ae4c2 100644
--- a/fw/application/src/i18n/ja_JP.c
+++ b/fw/application/src/i18n/ja_JP.c
@@ -51,7 +51,7 @@ const char * const lang_ja_JP[_L_COUNT] = {
[_L_FORMAT] = "フォーマット",
[_L_FORMAT_STORAGE] = "保存領域フォーマット",
[_L_DELETE_ALL_DATA] = "これですべてのデータが削除されます。よろしいですか?",
- [_L_DELETING_MESSAGE] = "書式設定 ..",
+ [_L_DELETING_MESSAGE] = "書式設定 ...",
[_L_MESSAGE] = "メッセージ",
[_L_CONFIRM] = "確認",
[_L_CANCEL] = "キャンセル",
@@ -65,17 +65,19 @@ const char * const lang_ja_JP[_L_COUNT] = {
[_L_READ_FILE_FAILED] = "ファイルの読み込みに失敗しました",
[_L_INPUT_FOLDER_NAME] = "入力フォルダ名:",
[_L_INPUT_AMIIBO_NAME] = "入力Amiibo名:",
- [_L_DELETE] = "削除",
+ [_L_DELETE_FILE] = "%s を削除しますか ?",
+ [_L_DELETE] = "削除...",
+ [_L_TIPS] = "確認する",
[_L_INPUT_NEW_NAME] = "新しい名前を入力してください:",
[_L_INVALID_INPUT] = "無効な入力",
- [_L_CREATE_NEW_FOLDER] = "新しいフォルダを作成..",
- [_L_CREATE_NEW_TAG] = "新規タグ作成..",
- [_L_CREATE_NEW_TAG_BATCH] = "新規タグの一括作成..",
+ [_L_CREATE_NEW_FOLDER] = "新しいフォルダを作成...",
+ [_L_CREATE_NEW_TAG] = "新規タグ作成...",
+ [_L_CREATE_NEW_TAG_BATCH] = "新規タグの一括作成...",
[_L_INPUT_TAG_NUM] = "タグ番号を入力:",
[_L_CREATE_TOO_MANY_NUM] = "1つのバッチで作成されるタグの数はは最大 %d までです。",
[_L_CREATING_TAG_BATCH] = "タグの作成",
[_L_CREATING_TAG_FAILED] = "タグ %s の作成に失敗しました!",
- [_L_RENAME] = "名前の変更",
+ [_L_RENAME] = "名前の変更...",
[_L_OPEN_FOLDER_FAILED] = "フォルダを開けませんでした",
[_L_RENAME_FAILED] = "名前の変更に失敗しました。\nエラーコード",
[_L_MAIN_RETURN] = "[リターン]",
@@ -97,35 +99,36 @@ const char * const lang_ja_JP[_L_COUNT] = {
[_L_MODE_RANDOM_AUTO_GEN] = "ランダム化(自動)",
[_L_BLANK_TAG] = "ブランクNFCタグ",
[_L_APP_AMIIDB] = "Amiiboデータベース",
- [_L_APP_AMMIDB_BROWSER] = "ブラウザ..",
- [_L_APP_AMIIDB_SEARCH] = "検索..",
- [_L_APP_AMIIDB_MY_FAVORITES] = "お気に入り..",
- [_L_APP_AMIIDB_MY_TAGS] = "マイAmiibo..",
- [_L_APP_AMIIDB_SETTINGS] = "設定..",
+ [_L_APP_AMMIDB_BROWSER] = "ブラウザ...",
+ [_L_APP_AMIIDB_SEARCH] = "検索...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "お気に入り...",
+ [_L_APP_AMIIDB_MY_TAGS] = "マイAmiibo...",
+ [_L_APP_AMIIDB_SETTINGS] = "設定...",
[_L_APP_AMIIDB_EXIT] = "[終了]",
[_L_APP_AMIIDB_BACK] = "[戻る]",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "キー",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "ロードされました",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "ロードされていません",
[_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "スロット番号",
- [_L_APP_AMIIDB_DETAIL_FAVORITE] = "お気に入り..",
- [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "名前を付けて保存..",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "お気に入り...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "名前を付けて保存...",
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[詳細に戻る]",
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[リストに戻る]",
[_L_APP_AMIIDB_SEARCH_HEAD] = "検索する:",
- [_L_APP_AMIIDB_MORE] = "[もっと見る..]",
+ [_L_APP_AMIIDB_MORE] = "[もっと見る...]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "",
[_L_APP_AMIIDB_EMPTY_TAG] = "",
- [_L_APP_AMIIDB_SLOT_DELETE] = "リセット..",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "リセット...",
[_L_APP_AMIIDB_CONFIRM] = "確認する",
[_L_APP_AMIIDB_CANCEL] = "キャンセルする",
[_L_APP_AMIIDB_TIPS] = "確認する",
- [_L_APP_AMIIDB_NEW] = "新規..",
- [_L_APP_AMIIDB_EMPTY] = "空..",
- [_L_APP_AMIIDB_DELETE] = "削除..",
+ [_L_APP_AMIIDB_NEW] = "新規...",
+ [_L_APP_AMIIDB_EMPTY] = "空...",
+ [_L_APP_AMIIDB_DELETE] = "削除...",
[_L_APP_AMIIDB_FAV_NEW_HEAD] = "新しいお気に入りフォルダ:",
[_L_APP_AMIIDB_FAV_EMPTY_MSG] = "お気に入りフォルダを空にしますか?",
[_L_APP_AMIIDB_FAV_DELETE_MSG] = "削除してよろしいですか?",
- [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "お気に入りフォルダを選択..",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "お気に入りフォルダを選択...",
[_L_APP_AMIIDB_FAV_SUCCESS] = "お気に入りに追加されました",
[_L_APP_AMIIDB_FAV_FAILED] = "お気に入りに追加できませんでした!",
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "保存されました",
@@ -135,21 +138,21 @@ const char * const lang_ja_JP[_L_COUNT] = {
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "拒否",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "無視",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "キャッシュ",
- [_L_APP_CHAMELEON_INITIALIZING] = "データの初期化 ..",
+ [_L_APP_CHAMELEON_INITIALIZING] = "データの初期化 ...",
[_L_APP_CHAMELEON_CARD_SLOT] = "スロット",
[_L_APP_CHAMELEON_CARD_NICK] = "ニックネーム",
[_L_APP_CHAMELEON_CARD_ID] = "ID",
[_L_APP_CHAMELEON_CARD_TYPE] = "タイプ",
- [_L_APP_CHAMELEON_CARD_DATA] = "データ..",
- [_L_APP_CHAMELEON_CARD_ADVANCED] = "詳細設定..",
- [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "スロット設定..",
- [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "スロット番号..",
+ [_L_APP_CHAMELEON_CARD_DATA] = "データ...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "詳細設定...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "スロット設定...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "スロット番号...",
[_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "ニックネームが設定されました",
[_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "ニックネームが設定できませんでした!",
[_L_APP_CHAMELEON_CARD_INPUT_NICK] = "ニックネームを入力してください:",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "ロード..",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "保存..",
- [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "初期化..",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "ロード...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "保存...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "初期化...",
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "初期化成功",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "ファイルが見つかりません",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "ファイルサイズが一致しません",
diff --git a/fw/application/src/i18n/language.c b/fw/application/src/i18n/language.c
index 7e861989..3b49b9b7 100644
--- a/fw/application/src/i18n/language.c
+++ b/fw/application/src/i18n/language.c
@@ -8,10 +8,11 @@ typedef struct {
const LanguageData const languageData[LANGUAGE_COUNT] = {
[LANGUAGE_ZH_HANS] = {.strings = lang_zh_Hans}, [LANGUAGE_EN_US] = {.strings = lang_en_US},
[LANGUAGE_ZH_TW] = {.strings = lang_zh_TW}, [LANGUAGE_ES_ES] = {.strings = lang_es_ES},
- [LANGUAGE_IT_IT] = {.strings = lang_it_IT}, [LANGUAGE_HU_HU] = {.strings = lang_hu_HU},
- [LANGUAGE_DE_DE] = {.strings = lang_de_DE}, [LANGUAGE_FR_FR] = {.strings = lang_fr_FR},
- [LANGUAGE_NL_NL] = {.strings = lang_nl_NL}, [LANGUAGE_PT_BR] = {.strings = lang_pt_BR},
+ [LANGUAGE_IT_IT] = {.strings = lang_it_IT}, [LANGUAGE_HU_HU] = {.strings = lang_hu_HU},
+ [LANGUAGE_DE_DE] = {.strings = lang_de_DE}, [LANGUAGE_FR_FR] = {.strings = lang_fr_FR},
+ [LANGUAGE_NL_NL] = {.strings = lang_nl_NL}, [LANGUAGE_PT_BR] = {.strings = lang_pt_BR},
[LANGUAGE_JA_JP] = {.strings = lang_ja_JP}, [LANGUAGE_PT_PT] = {.strings = lang_pt_PT},
+ [LANGUAGE_RU_RU] = {.strings = lang_ru_RU},
};
// 当前语言设置 (Current language setting)
@@ -31,32 +32,35 @@ const char *getLangString(L_StringID stringID) {
void setLanguage(Language lang) { currentLanguage = lang; }
const char *getLangDesc(Language lang) {
- if (lang == LANGUAGE_ZH_HANS) {
- return "简体中文";
- } else if (lang == LANGUAGE_EN_US) {
- return "English";
- } else if (lang == LANGUAGE_ZH_TW) {
- return "繁體中文(臺灣)";
- } else if (lang == LANGUAGE_ES_ES) {
- return "Español";
- } else if (lang == LANGUAGE_IT_IT) {
- return "Italiano";
- } else if (lang == LANGUAGE_HU_HU) {
- return "Magyar";
- } else if (lang == LANGUAGE_DE_DE) {
- return "Deutsch";
- } else if (lang == LANGUAGE_FR_FR) {
- return "Français";
- } else if (lang == LANGUAGE_NL_NL) {
- return "Dutch (Nederlands)";
- } else if (lang == LANGUAGE_PT_BR) {
- return "Português(Brazil)";
- } else if (lang == LANGUAGE_JA_JP) {
- return "日本語";
- } else if (lang == LANGUAGE_PT_PT) {
- return "Português(Portugal)";
- } else {
- return "@@LANG@@";
+ switch (lang) {
+ case LANGUAGE_ZH_HANS:
+ return "简体中文";
+ case LANGUAGE_EN_US:
+ return "English";
+ case LANGUAGE_ZH_TW:
+ return "繁體中文(臺灣)";
+ case LANGUAGE_ES_ES:
+ return "Español";
+ case LANGUAGE_IT_IT:
+ return "Italiano";
+ case LANGUAGE_HU_HU:
+ return "Magyar";
+ case LANGUAGE_DE_DE:
+ return "Deutsch";
+ case LANGUAGE_FR_FR:
+ return "Français";
+ case LANGUAGE_NL_NL:
+ return "Dutch (Nederlands)";
+ case LANGUAGE_PT_BR:
+ return "Português(Brazil)";
+ case LANGUAGE_JA_JP:
+ return "日本語";
+ case LANGUAGE_PT_PT:
+ return "Português(Portugal)";
+ case LANGUAGE_RU_RU:
+ return "Русский";
+ default:
+ return "@@LANG@@";
}
}
diff --git a/fw/application/src/i18n/language.h b/fw/application/src/i18n/language.h
index 42a2bb72..eaca12f5 100644
--- a/fw/application/src/i18n/language.h
+++ b/fw/application/src/i18n/language.h
@@ -23,6 +23,7 @@ typedef enum {
LANGUAGE_JA_JP,
LANGUAGE_PT_PT,
LANGUAGE_IT_IT,
+ LANGUAGE_RU_RU,
LANGUAGE_COUNT
} Language;
@@ -38,6 +39,7 @@ extern const char* lang_pt_BR[_L_COUNT];
extern const char* lang_ja_JP[_L_COUNT];
extern const char* lang_pt_PT[_L_COUNT];
extern const char* lang_it_IT[_L_COUNT];
+extern const char* lang_ru_RU[_L_COUNT];
// 获取字符串的函数 (Get language string function)
const char* getLangString(L_StringID stringID);
diff --git a/fw/application/src/i18n/nl_NL.c b/fw/application/src/i18n/nl_NL.c
index b979dfee..ab983593 100644
--- a/fw/application/src/i18n/nl_NL.c
+++ b/fw/application/src/i18n/nl_NL.c
@@ -51,7 +51,7 @@ const char * const lang_nl_NL[_L_COUNT] = {
[_L_FORMAT] = "Formatteren",
[_L_FORMAT_STORAGE] = "Opslag Formatteren",
[_L_DELETE_ALL_DATA] = "Hierdoor worden alle gegevens gewist. Formatteren bevestigen?",
- [_L_DELETING_MESSAGE] = "Formatteren ..",
+ [_L_DELETING_MESSAGE] = "Formatteren ...",
[_L_MESSAGE] = "Bericht",
[_L_CONFIRM] = "Bevestigen",
[_L_CANCEL] = "Annuleren",
@@ -65,17 +65,19 @@ const char * const lang_nl_NL[_L_COUNT] = {
[_L_READ_FILE_FAILED] = "Lezen van het bestand is mislukt",
[_L_INPUT_FOLDER_NAME] = "Naam Invoermap:",
[_L_INPUT_AMIIBO_NAME] = "Naam Amiibo Invoeren:",
- [_L_DELETE] = "Verwijder",
+ [_L_DELETE_FILE] = "%s verwijderen ?",
+ [_L_DELETE] = "Verwijder...",
+ [_L_TIPS] = "Bevestigen",
[_L_INPUT_NEW_NAME] = "Nieuwe Naam Invoeren:",
[_L_INVALID_INPUT] = "Ongeldige Invoer",
- [_L_CREATE_NEW_FOLDER] = "Nieuwe Map Maken..",
- [_L_CREATE_NEW_TAG] = "Nieuwe Tag Aanmaken..",
- [_L_CREATE_NEW_TAG_BATCH] = "Nieuwe Tags in een Batch Aanmaken..",
+ [_L_CREATE_NEW_FOLDER] = "Nieuwe Map Maken...",
+ [_L_CREATE_NEW_TAG] = "Nieuwe Tag Aanmaken...",
+ [_L_CREATE_NEW_TAG_BATCH] = "Nieuwe Tags in een Batch Aanmaken...",
[_L_INPUT_TAG_NUM] = "Labelnummer Invoeren:",
[_L_CREATE_TOO_MANY_NUM] = "Maximum %d tags aangemaakt in een batch.",
[_L_CREATING_TAG_BATCH] = "Tag aanmaken",
[_L_CREATING_TAG_FAILED] = "Aanmaken tag %s mislukt!",
- [_L_RENAME] = "Hernoem",
+ [_L_RENAME] = "Hernoem...",
[_L_OPEN_FOLDER_FAILED] = "Kan map niet openen",
[_L_RENAME_FAILED] = "Hernoemen mislukt.\nFoutcode",
[_L_MAIN_RETURN] = "[TERUG]",
@@ -97,35 +99,36 @@ const char * const lang_nl_NL[_L_COUNT] = {
[_L_MODE_RANDOM_AUTO_GEN] = "Willekeurig (Automatisch)",
[_L_BLANK_TAG] = "Lege NFC-tag",
[_L_APP_AMIIDB] = "Amiibo-Database",
- [_L_APP_AMMIDB_BROWSER] = "Browser..",
- [_L_APP_AMIIDB_SEARCH] = "Zoeken..",
- [_L_APP_AMIIDB_MY_FAVORITES] = "Mijn Favorieten..",
- [_L_APP_AMIIDB_MY_TAGS] = "Mijn Amiibo..",
- [_L_APP_AMIIDB_SETTINGS] = "Instellingen..",
+ [_L_APP_AMMIDB_BROWSER] = "Browser...",
+ [_L_APP_AMIIDB_SEARCH] = "Zoeken...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "Mijn Favorieten...",
+ [_L_APP_AMIIDB_MY_TAGS] = "Mijn Amiibo...",
+ [_L_APP_AMIIDB_SETTINGS] = "Instellingen...",
[_L_APP_AMIIDB_EXIT] = "[Afsluiten]",
[_L_APP_AMIIDB_BACK] = "[Terug]",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Toetsen",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Geladen",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NIET Geladen",
[_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Slotnummer",
- [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favoriet..",
- [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Opslaan Als..",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favoriet...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Opslaan Als...",
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Terug naar Detail]",
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Terug naar Lijst].",
[_L_APP_AMIIDB_SEARCH_HEAD] = "Zoeken:",
- [_L_APP_AMIIDB_MORE] = "[Meer..]",
+ [_L_APP_AMIIDB_MORE] = "[Meer...]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "",
[_L_APP_AMIIDB_EMPTY_TAG] = "",
- [_L_APP_AMIIDB_SLOT_DELETE] = "Reset..",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "Reset...",
[_L_APP_AMIIDB_CONFIRM] = "Bevestigen",
[_L_APP_AMIIDB_CANCEL] = "Annuleren",
[_L_APP_AMIIDB_TIPS] = "Bevestigen",
- [_L_APP_AMIIDB_NEW] = "Nieuw..",
- [_L_APP_AMIIDB_EMPTY] = "Leeg..",
- [_L_APP_AMIIDB_DELETE] = "Verwijderen..",
+ [_L_APP_AMIIDB_NEW] = "Nieuw...",
+ [_L_APP_AMIIDB_EMPTY] = "Leeg...",
+ [_L_APP_AMIIDB_DELETE] = "Verwijderen...",
[_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nieuwe Favoriete Map:",
[_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Favoriete Map Leegmaken?",
[_L_APP_AMIIDB_FAV_DELETE_MSG] = "Verwijderen Bevestigen?",
- [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selecteer Favoriete Map..",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selecteer Favoriete Map...",
[_L_APP_AMIIDB_FAV_SUCCESS] = "Favoriet Geslaagd",
[_L_APP_AMIIDB_FAV_FAILED] = "Favoriet Mislukt!",
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Opslaan Succes",
@@ -135,21 +138,21 @@ const char * const lang_nl_NL[_L_COUNT] = {
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Weigeren",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Negeren",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache",
- [_L_APP_CHAMELEON_INITIALIZING] = "Gegevens Initialiseren ..",
+ [_L_APP_CHAMELEON_INITIALIZING] = "Gegevens Initialiseren ...",
[_L_APP_CHAMELEON_CARD_SLOT] = "Slot",
[_L_APP_CHAMELEON_CARD_NICK] = "Bijnaam",
[_L_APP_CHAMELEON_CARD_ID] = "ID",
[_L_APP_CHAMELEON_CARD_TYPE] = "Type",
- [_L_APP_CHAMELEON_CARD_DATA] = "Gegevens..",
- [_L_APP_CHAMELEON_CARD_ADVANCED] = "Geavanceerd..",
- [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Slot Instellingen..",
- [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Slotnummer..",
+ [_L_APP_CHAMELEON_CARD_DATA] = "Gegevens...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "Geavanceerd...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Slot Instellingen...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Slotnummer...",
[_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Bijnaam Instellen Succes",
[_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Bijnaam Instellen Mislukt!",
[_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Voer Bijnaam In:",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Laden..",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Opslaan..",
- [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Terugzetten Naar Standaard..",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Laden...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Opslaan...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Terugzetten Naar Standaard...",
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Fabriekgegeven terugzetten Succesvol",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Bestand Niet Gevonden",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Bestandsgrootte Komt Niet Overeen",
diff --git a/fw/application/src/i18n/pt_BR.c b/fw/application/src/i18n/pt_BR.c
index 5ca2a0da..270a1805 100644
--- a/fw/application/src/i18n/pt_BR.c
+++ b/fw/application/src/i18n/pt_BR.c
@@ -51,7 +51,7 @@ const char * const lang_pt_BR[_L_COUNT] = {
[_L_FORMAT] = "Formatar",
[_L_FORMAT_STORAGE] = "Formatar Armazenamento",
[_L_DELETE_ALL_DATA] = "Isso excluirá todos os dados. Confirmar a formatação?",
- [_L_DELETING_MESSAGE] = "Formatando ..",
+ [_L_DELETING_MESSAGE] = "Formatando ...",
[_L_MESSAGE] = "Mensagem",
[_L_CONFIRM] = "Confirmar",
[_L_CANCEL] = "Cancelar",
@@ -65,17 +65,19 @@ const char * const lang_pt_BR[_L_COUNT] = {
[_L_READ_FILE_FAILED] = "Falha na Leitura do Arquivo",
[_L_INPUT_FOLDER_NAME] = "Nome da Pasta de Entrada:",
[_L_INPUT_AMIIBO_NAME] = "Nome do Amiibo de Entrada:",
- [_L_DELETE] = "Excluir",
+ [_L_DELETE_FILE] = "Excluir %s ?",
+ [_L_DELETE] = "Excluir...",
+ [_L_TIPS] = "Confirmar",
[_L_INPUT_NEW_NAME] = "Novo Nome de Entrada:",
[_L_INVALID_INPUT] = "Entrada Inválida",
- [_L_CREATE_NEW_FOLDER] = "Criar Nova Pasta..",
- [_L_CREATE_NEW_TAG] = "Criar Nova Tag..",
- [_L_CREATE_NEW_TAG_BATCH] = "Criar Novas Tags em Lote..",
+ [_L_CREATE_NEW_FOLDER] = "Criar Nova Pasta...",
+ [_L_CREATE_NEW_TAG] = "Criar Nova Tag...",
+ [_L_CREATE_NEW_TAG_BATCH] = "Criar Novas Tags em Lote...",
[_L_INPUT_TAG_NUM] = "Número da Tag de Entrada:",
[_L_CREATE_TOO_MANY_NUM] = "Somente no máximo %d tags criadas em um lote.",
[_L_CREATING_TAG_BATCH] = "Criando tag",
[_L_CREATING_TAG_FAILED] = "Falha ao criar a tag %s!",
- [_L_RENAME] = "Renomear",
+ [_L_RENAME] = "Renomear...",
[_L_OPEN_FOLDER_FAILED] = "Falha ao abrir a pasta",
[_L_RENAME_FAILED] = "Falha ao renomear\nCódigo de erro",
[_L_MAIN_RETURN] = "[RETORNO]",
@@ -97,35 +99,36 @@ const char * const lang_pt_BR[_L_COUNT] = {
[_L_MODE_RANDOM_AUTO_GEN] = "Randomização (Automática)",
[_L_BLANK_TAG] = "Tag NFC em Branco",
[_L_APP_AMIIDB] = "Banco de Dados Amiibo",
- [_L_APP_AMMIDB_BROWSER] = "Navegador..",
- [_L_APP_AMIIDB_SEARCH] = "Pesquisar..",
- [_L_APP_AMIIDB_MY_FAVORITES] = "Meus Favoritos..",
- [_L_APP_AMIIDB_MY_TAGS] = "Meu Amiibo..",
- [_L_APP_AMIIDB_SETTINGS] = "Configurações..",
+ [_L_APP_AMMIDB_BROWSER] = "Navegador...",
+ [_L_APP_AMIIDB_SEARCH] = "Pesquisar...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "Meus Favoritos...",
+ [_L_APP_AMIIDB_MY_TAGS] = "Meu Amiibo...",
+ [_L_APP_AMIIDB_SETTINGS] = "Configurações...",
[_L_APP_AMIIDB_EXIT] = "[Sair]",
[_L_APP_AMIIDB_BACK] = "[Retornar]",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Teclas",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Carregado",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NÃO Carregadas",
[_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Número do Slot",
- [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorito..",
- [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Salvar como..",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorito...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Salvar como...",
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Voltar Para Detalhes]",
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Voltar Para a Lista]",
[_L_APP_AMIIDB_SEARCH_HEAD] = "Pesquisar:",
- [_L_APP_AMIIDB_MORE] = "[Mais..]",
+ [_L_APP_AMIIDB_MORE] = "[Mais...]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "",
[_L_APP_AMIIDB_EMPTY_TAG] = "",
- [_L_APP_AMIIDB_SLOT_DELETE] = "Reiniciar..",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "Reiniciar...",
[_L_APP_AMIIDB_CONFIRM] = "Confirmar",
[_L_APP_AMIIDB_CANCEL] = "Cancelar",
[_L_APP_AMIIDB_TIPS] = "Confirmar",
- [_L_APP_AMIIDB_NEW] = "Novo..",
- [_L_APP_AMIIDB_EMPTY] = "Vazio..",
- [_L_APP_AMIIDB_DELETE] = "Excluir..",
+ [_L_APP_AMIIDB_NEW] = "Novo...",
+ [_L_APP_AMIIDB_EMPTY] = "Vazio...",
+ [_L_APP_AMIIDB_DELETE] = "Excluir...",
[_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nova Pasta de Favoritos:",
[_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Esvaziar Pasta de Favoritos?",
[_L_APP_AMIIDB_FAV_DELETE_MSG] = "Confirmar Exclusão?",
- [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selecionar Pasta Favorita..",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selecionar Pasta Favorita...",
[_L_APP_AMIIDB_FAV_SUCCESS] = "Favorito Bem-Sucedido",
[_L_APP_AMIIDB_FAV_FAILED] = "Favorito Falhou!",
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Salvar Com Êxito",
@@ -135,21 +138,21 @@ const char * const lang_pt_BR[_L_COUNT] = {
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Negar",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignorar",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache",
- [_L_APP_CHAMELEON_INITIALIZING] = "Inicialização de Dados ..",
+ [_L_APP_CHAMELEON_INITIALIZING] = "Inicialização de Dados ...",
[_L_APP_CHAMELEON_CARD_SLOT] = "Slot",
[_L_APP_CHAMELEON_CARD_NICK] = "Apelido",
[_L_APP_CHAMELEON_CARD_ID] = "ID",
[_L_APP_CHAMELEON_CARD_TYPE] = "Tipo de Dados",
- [_L_APP_CHAMELEON_CARD_DATA] = "Dados..",
- [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avançado..",
- [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Configurações de Slots..",
- [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Número do Slot..",
+ [_L_APP_CHAMELEON_CARD_DATA] = "Dados...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avançado...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Configurações de Slots...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Número do Slot...",
[_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Apelido Definido com Sucesso",
[_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Falha ao Definir Apelido!",
[_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Insira o Apelido:",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Carregar..",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Salvar..",
- [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Restaurar Padrões..",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Carregar...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Salvar...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Restaurar Padrões...",
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Restauração de Dados Bem-Sucedida",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Arquivo Não Encontrado",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Tamanho do Arquivo Não Corresponde",
diff --git a/fw/application/src/i18n/ru_RU.c b/fw/application/src/i18n/ru_RU.c
new file mode 100644
index 00000000..b4cbb811
--- /dev/null
+++ b/fw/application/src/i18n/ru_RU.c
@@ -0,0 +1,172 @@
+#include "string_id.h"
+const char * const lang_ru_RU[_L_COUNT] = {
+ [_L_ON] = "Включено",
+ [_L_OFF] = "Выключено",
+ [_L_ON_F] = "[Вкл]",
+ [_L_OFF_F] = "[Выкл]",
+ [_L_BACK] = "[Назад]",
+ [_L_ERR] = "Ошибка",
+ [_L_ERR_CODE] = "Код ошибки",
+ [_L_APP_AMIIBO] = "Эмулятор Amiibo",
+ [_L_APP_AMIIBOLINK] = "AmiiboLink",
+ [_L_APP_BLE] = "Передача файлов",
+ [_L_APP_BLE_TITLE] = "по Bluetooth",
+ [_L_APP_PLAYER] = "Видеоплеер",
+ [_L_APP_SET] = "Настройки",
+ [_L_APP_SET_VERSION] = "Версия",
+ [_L_APP_SET_STORAGE_USED] = "Занято",
+ [_L_APP_SET_STORAGE] = "Накопитель",
+ [_L_APP_SET_OLED_CONTRAST] = "Контрастность",
+ [_L_APP_SET_OLED_CONTRAST_TITLE] = "Контраст OLED",
+ [_L_APP_SET_LCD_BACKLIGHT] = "Подсветка",
+ [_L_APP_SET_LCD_BACKLIGHT_TITLE] = "Яркость подсветки",
+ [_L_APP_SET_ANIM] = "Анимация меню",
+ [_L_APP_SET_LIPO_BAT] = "Батарея LiPO",
+ [_L_APP_SET_SHOW_MEM_USAGE] = "Статус памяти",
+ [_L_APP_SET_HIBERNATE] = "Гибернация",
+ [_L_APP_SET_SLEEP_TIMEOUT] = "Таймаут сна",
+ [_L_APP_SET_LANGUAGE] = "Язык",
+ [_L_APP_SET_DFU] = "Обновление ПО",
+ [_L_APP_SET_REBOOT] = "Перезагрузка",
+ [_L_APP_SET_RESET_DEFAULT] = "Сброс настроек",
+ [_L_APP_SET_RESET_DEFAULT_SUCCESS] = "Сброс выполнен",
+ [_L_APP_SET_RESET_DEFAULT_CONFIRM] = "Выполнить?",
+ [_L_15S] = "15 секунд",
+ [_L_30S] = "30 секунд",
+ [_L_45S] = "45 секунд",
+ [_L_1MIN] = "1 минута",
+ [_L_2MIN] = "2 минуты",
+ [_L_3MIN] = "3 минуты",
+ [_L_AMIIBO_KEY_UNLOADED] = "Отсутствует файл ключа",
+ [_L_UPLOAD_KEY_RETAIL_BIN] = "Поместите key_retail.bin\n в корень накопителя",
+ [_L_KNOW] = "[Понятно]",
+ [_L_RANDOM_GENERATION] = "Сгенерировать UUID",
+ [_L_AUTO_RANDOM_GENERATION] = "Автогенерация",
+ [_L_SHOW_QRCODE] = "QR-код",
+ [_L_DELETE_TAG] = "Удалить тег",
+ [_L_DELETE_TAG_CONFIRM] = "Удалить %s?",
+ [_L_BACK_TO_DETAILS] = "[Назад к деталям]",
+ [_L_BACK_TO_FILE_LIST] = "[Назад к списку]",
+ [_L_BACK_TO_MAIN_MENU] = "[В главное меню]",
+ [_L_FORMAT] = "Отформатировать",
+ [_L_FORMAT_STORAGE] = "Форматирование",
+ [_L_DELETE_ALL_DATA] = "Это удалит все данные.\nВыполнить?",
+ [_L_DELETING_MESSAGE] = "Форматирование...",
+ [_L_MESSAGE] = "Сообщение",
+ [_L_CONFIRM] = "Да",
+ [_L_CANCEL] = "Отмена",
+ [_L_BACK_TO_LIST] = "[Назад к списку]",
+ [_L_NOT_MOUNTED] = "==[Не подключён]==",
+ [_L_MOUNTED_LFS] = "==Подключён[LFS]==",
+ [_L_MOUNTED_FFS] = "==Подключён[FFS]==",
+ [_L_TOTAL_SPACE] = "Ёмкость",
+ [_L_AVAILABLE_SPACE] = "Свободно",
+ [_L_NOT_AMIIBO_FILE] = "Этот файл не Amiibo",
+ [_L_READ_FILE_FAILED] = "Ошибка чтения файла",
+ [_L_INPUT_FOLDER_NAME] = "Задайте имя папки:",
+ [_L_INPUT_AMIIBO_NAME] = "Задайте имя Amiibo:",
+ [_L_DELETE_FILE] = "Удалить %s?",
+ [_L_DELETE] = "Удалить...",
+ [_L_TIPS] = "Внимание",
+ [_L_INPUT_NEW_NAME] = "Задайте новое имя:",
+ [_L_INVALID_INPUT] = "Недопустимый ввод",
+ [_L_CREATE_NEW_FOLDER] = "Создать новую папку...",
+ [_L_CREATE_NEW_TAG] = "Создать новый тег...",
+ [_L_CREATE_NEW_TAG_BATCH] = "Создать группу тегов...",
+ [_L_INPUT_TAG_NUM] = "Задайте число тегов:",
+ [_L_CREATE_TOO_MANY_NUM] = "За раз можно создать\n не более %d тегов",
+ [_L_CREATING_TAG_BATCH] = "Создание тега",
+ [_L_CREATING_TAG_FAILED] = "Ошибка создания тега %s",
+ [_L_RENAME] = "Переименовать...",
+ [_L_OPEN_FOLDER_FAILED] = "Ошибка открытия папки",
+ [_L_RENAME_FAILED] = "Ошибка переименования",
+ [_L_MAIN_RETURN] = "[Назад]",
+ [_L_RANDOM_MODE_MANUAL] = "Ручная генерация UUID",
+ [_L_RANDOM_MODE_AUTO] = "Автогенерация UUID",
+ [_L_SEQUENCE_MODE] = "Последовательный",
+ [_L_READ_WRITE_MODE] = "Чтение-запись",
+ [_L_AMIIBOLINK_V1] = "V1",
+ [_L_AMIIBOLINK_V2] = "V2",
+ [_L_AMILOOP] = "AmiLoop",
+ [_L_MODE] = "Режим",
+ [_L_AUTO_RANDOM] = "Автогенерация",
+ [_L_COMPATIBLE_MODE] = "Совместимость",
+ [_L_TAG_DETAILS] = "[Назад к деталям]",
+ [_L_MAIN_MENU] = "[В главное меню]",
+ [_L_MODE_RANDOM] = "Ручная генерация",
+ [_L_MODE_CYCLE] = "Последовательный",
+ [_L_MODE_NTAG] = "Чтение-запись",
+ [_L_MODE_RANDOM_AUTO_GEN] = "Автогенерация",
+ [_L_BLANK_TAG] = "Пустой тег",
+ [_L_APP_AMIIDB] = "База данных Amiibo",
+ [_L_APP_AMMIDB_BROWSER] = "Обозреватель...",
+ [_L_APP_AMIIDB_SEARCH] = "Поиск...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "Моё избранное...",
+ [_L_APP_AMIIDB_MY_TAGS] = "Мои Amiibo...",
+ [_L_APP_AMIIDB_SETTINGS] = "Настройки...",
+ [_L_APP_AMIIDB_EXIT] = "[Выход]",
+ [_L_APP_AMIIDB_BACK] = "[Назад]",
+ [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Ключ",
+ [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Загружен",
+ [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "Отсутствует",
+ [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Число ячеек",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "В избранное...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Сохранить как...",
+ [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Назад к деталям]",
+ [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Назад к списку]",
+ [_L_APP_AMIIDB_SEARCH_HEAD] = "Поиск:",
+ [_L_APP_AMIIDB_MORE] = "[Дальше...]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "Очень много совпадений.\nУточните запрос.",
+ [_L_APP_AMIIDB_EMPTY_TAG] = "<пустой тег>",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "Сброс...",
+ [_L_APP_AMIIDB_CONFIRM] = "Да",
+ [_L_APP_AMIIDB_CANCEL] = "Отмена",
+ [_L_APP_AMIIDB_TIPS] = "Внимание",
+ [_L_APP_AMIIDB_NEW] = "Новая папка...",
+ [_L_APP_AMIIDB_EMPTY] = "Очистить...",
+ [_L_APP_AMIIDB_DELETE] = "Удалить...",
+ [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Новая папка избранного:",
+ [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Выполнить удаление\n избранного?",
+ [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Выполнить удаление?",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Выбрать папку избранного...",
+ [_L_APP_AMIIDB_FAV_SUCCESS] = "Добавлено",
+ [_L_APP_AMIIDB_FAV_FAILED] = "Ошибка добавления",
+ [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Сохранено",
+ [_L_APP_AMIIDB_SLOT_SAVE_FAILED] = "Ошибка сохранения",
+ [_L_APP_CHAMELEON] = "Эмулятор карт",
+ [_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL] = "Разрешена",
+ [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Запрещена",
+ [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Игнорируется",
+ [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "В кэш",
+ [_L_APP_CHAMELEON_INITIALIZING] = "Инициализация...",
+ [_L_APP_CHAMELEON_CARD_SLOT] = "Ячейка",
+ [_L_APP_CHAMELEON_CARD_NICK] = "Название",
+ [_L_APP_CHAMELEON_CARD_ID] = "ID",
+ [_L_APP_CHAMELEON_CARD_TYPE] = "Тип",
+ [_L_APP_CHAMELEON_CARD_DATA] = "Данные...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "Дополнительно...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Управление ячейками...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Число ячеек...",
+ [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Название задано",
+ [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Недопустимое название",
+ [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Задайте название карты:",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Загрузка...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Сохранение...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Сброс...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Данные сброшены",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Файл не обнаружен",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Файл несоразмерен",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED] = "Ошибка загрузки файла",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS] = "Данные загружены",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME] = "Задайте имя файла:",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED] = "Ошибка сохранения файла",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS] = "Данные сохранены",
+ [_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE] = "Заказной режим",
+ [_L_APP_CHAMELEON_CARD_GEN1A_MODE] = "Gen1A",
+ [_L_APP_CHAMELEON_CARD_GENERATE_UID] = "Сгенерировать UID",
+ [_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS] = "UID сгенерирован",
+ [_L_APP_CHAMELEON_CARD_GEN2_MODE] = "Gen2",
+ [_L_APP_CHAMELEON_CARD_WRITE_MODE] = "Запись",
+ [_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT] = "Недопустимый ввод",
+ [_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM] = "Тип карты изменен.\nСбросить данные карты?",
+};
diff --git a/fw/application/src/i18n/string_id.h b/fw/application/src/i18n/string_id.h
index 30f18c3e..f675f8a3 100644
--- a/fw/application/src/i18n/string_id.h
+++ b/fw/application/src/i18n/string_id.h
@@ -66,7 +66,9 @@ typedef enum {
_L_READ_FILE_FAILED,
_L_INPUT_FOLDER_NAME,
_L_INPUT_AMIIBO_NAME,
+ _L_DELETE_FILE,
_L_DELETE,
+ _L_TIPS,
_L_INPUT_NEW_NAME,
_L_INVALID_INPUT,
_L_CREATE_NEW_FOLDER,
@@ -115,6 +117,7 @@ typedef enum {
_L_APP_AMIIDB_DETAIL_BACK_LIST,
_L_APP_AMIIDB_SEARCH_HEAD,
_L_APP_AMIIDB_MORE,
+ _L_APP_AMIIDB_MORE_MESSAGE,
_L_APP_AMIIDB_EMPTY_TAG,
_L_APP_AMIIDB_SLOT_DELETE,
_L_APP_AMIIDB_CONFIRM,
diff --git a/fw/application/src/i18n/zh_Hans.c b/fw/application/src/i18n/zh_Hans.c
index c17bed0b..82823369 100644
--- a/fw/application/src/i18n/zh_Hans.c
+++ b/fw/application/src/i18n/zh_Hans.c
@@ -51,7 +51,7 @@ const char * const lang_zh_Hans[_L_COUNT] = {
[_L_FORMAT] = "格式化",
[_L_FORMAT_STORAGE] = "格式化存储",
[_L_DELETE_ALL_DATA] = "将删除所有数据。\n确认格式化?",
- [_L_DELETING_MESSAGE] = "格式化中..",
+ [_L_DELETING_MESSAGE] = "格式化中...",
[_L_MESSAGE] = "提示",
[_L_CONFIRM] = "确定",
[_L_CANCEL] = "取消",
@@ -65,17 +65,19 @@ const char * const lang_zh_Hans[_L_COUNT] = {
[_L_READ_FILE_FAILED] = "读取文件失败",
[_L_INPUT_FOLDER_NAME] = "输入文件夹名:",
[_L_INPUT_AMIIBO_NAME] = "输入amiibo名:",
- [_L_DELETE] = "删除",
+ [_L_DELETE_FILE] = "删除 %s ?",
+ [_L_DELETE] = "删除...",
+ [_L_TIPS] = "提示",
[_L_INPUT_NEW_NAME] = "输入新名:",
[_L_INVALID_INPUT] = "无效的输入",
- [_L_CREATE_NEW_FOLDER] = "新建文件夹..",
- [_L_CREATE_NEW_TAG] = "新建标签..",
- [_L_CREATE_NEW_TAG_BATCH] = "批量创建标签..",
+ [_L_CREATE_NEW_FOLDER] = "新建文件夹...",
+ [_L_CREATE_NEW_TAG] = "新建标签...",
+ [_L_CREATE_NEW_TAG_BATCH] = "批量创建标签...",
[_L_INPUT_TAG_NUM] = "输入标签数量:",
[_L_CREATE_TOO_MANY_NUM] = "一次最多只能创建%d个标签",
[_L_CREATING_TAG_BATCH] = "创建标签",
[_L_CREATING_TAG_FAILED] = "写入 %s 标签失败",
- [_L_RENAME] = "重命名",
+ [_L_RENAME] = "重命名...",
[_L_OPEN_FOLDER_FAILED] = "打开文件夹失败",
[_L_RENAME_FAILED] = "重命名失败",
[_L_MAIN_RETURN] = "[返回]",
@@ -97,35 +99,36 @@ const char * const lang_zh_Hans[_L_COUNT] = {
[_L_MODE_RANDOM_AUTO_GEN] = "随机(自动)",
[_L_BLANK_TAG] = "空标签",
[_L_APP_AMIIDB] = "Amiibo数据库",
- [_L_APP_AMMIDB_BROWSER] = "查看..",
- [_L_APP_AMIIDB_SEARCH] = "搜索..",
- [_L_APP_AMIIDB_MY_FAVORITES] = "我的收藏..",
- [_L_APP_AMIIDB_MY_TAGS] = "我的数据..",
- [_L_APP_AMIIDB_SETTINGS] = "设置..",
+ [_L_APP_AMMIDB_BROWSER] = "查看...",
+ [_L_APP_AMIIDB_SEARCH] = "搜索...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "我的收藏...",
+ [_L_APP_AMIIDB_MY_TAGS] = "我的数据...",
+ [_L_APP_AMIIDB_SETTINGS] = "设置...",
[_L_APP_AMIIDB_EXIT] = "[退出]",
[_L_APP_AMIIDB_BACK] = "[返回]",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "密钥文件",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "已加载",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "未加载",
[_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "数据槽位",
- [_L_APP_AMIIDB_DETAIL_FAVORITE] = "收藏..",
- [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "保存为..",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "收藏...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "保存为...",
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[返回详情]",
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[返回列表]",
[_L_APP_AMIIDB_SEARCH_HEAD] = "搜索:",
[_L_APP_AMIIDB_MORE] = "[更多]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "搜索结果过多,尝试增加搜索词。",
[_L_APP_AMIIDB_EMPTY_TAG] = "<空标签>",
- [_L_APP_AMIIDB_SLOT_DELETE] = "重置..",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "重置...",
[_L_APP_AMIIDB_CONFIRM] = "确认",
[_L_APP_AMIIDB_CANCEL] = "取消",
[_L_APP_AMIIDB_TIPS] = "提示",
- [_L_APP_AMIIDB_NEW] = "新建..",
- [_L_APP_AMIIDB_EMPTY] = "清空..",
- [_L_APP_AMIIDB_DELETE] = "删除..",
+ [_L_APP_AMIIDB_NEW] = "新建...",
+ [_L_APP_AMIIDB_EMPTY] = "清空...",
+ [_L_APP_AMIIDB_DELETE] = "删除...",
[_L_APP_AMIIDB_FAV_NEW_HEAD] = "新建收藏夹:",
[_L_APP_AMIIDB_FAV_EMPTY_MSG] = "确认清空收藏夹?",
[_L_APP_AMIIDB_FAV_DELETE_MSG] = "确认删除?",
- [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "选择收藏夹..",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "选择收藏夹...",
[_L_APP_AMIIDB_FAV_SUCCESS] = "收藏成功",
[_L_APP_AMIIDB_FAV_FAILED] = "收藏失败",
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "保存成功",
@@ -135,21 +138,21 @@ const char * const lang_zh_Hans[_L_COUNT] = {
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "拒绝",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "忽略",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "缓存",
- [_L_APP_CHAMELEON_INITIALIZING] = "初始化, 请稍后..",
+ [_L_APP_CHAMELEON_INITIALIZING] = "初始化, 请稍后...",
[_L_APP_CHAMELEON_CARD_SLOT] = "卡槽",
[_L_APP_CHAMELEON_CARD_NICK] = "卡名",
[_L_APP_CHAMELEON_CARD_ID] = "ID",
[_L_APP_CHAMELEON_CARD_TYPE] = "卡类型",
- [_L_APP_CHAMELEON_CARD_DATA] = "卡数据..",
- [_L_APP_CHAMELEON_CARD_ADVANCED] = "卡高级设置..",
- [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "卡槽管理..",
- [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "卡槽数量..",
+ [_L_APP_CHAMELEON_CARD_DATA] = "卡数据...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "卡高级设置...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "卡槽管理...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "卡槽数量...",
[_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "设置卡名成功",
[_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "设置卡名失败",
[_L_APP_CHAMELEON_CARD_INPUT_NICK] = "输入卡名:",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "加载..",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "导出..",
- [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "重置..",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "加载...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "导出...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "重置...",
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "卡片初始化成功",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "文件不存在",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "文件大小不匹配",
diff --git a/fw/application/src/i18n/zh_TW.c b/fw/application/src/i18n/zh_TW.c
index aed23d52..f275109c 100644
--- a/fw/application/src/i18n/zh_TW.c
+++ b/fw/application/src/i18n/zh_TW.c
@@ -51,7 +51,7 @@ const char * const lang_zh_TW[_L_COUNT] = {
[_L_FORMAT] = "格式化",
[_L_FORMAT_STORAGE] = "格式化儲存",
[_L_DELETE_ALL_DATA] = "將刪除所有資料。\n確認格式化?",
- [_L_DELETING_MESSAGE] = "格式化中..",
+ [_L_DELETING_MESSAGE] = "格式化中...",
[_L_MESSAGE] = "提示",
[_L_CONFIRM] = "確定",
[_L_CANCEL] = "取消",
@@ -65,17 +65,19 @@ const char * const lang_zh_TW[_L_COUNT] = {
[_L_READ_FILE_FAILED] = "讀取檔案失敗",
[_L_INPUT_FOLDER_NAME] = "輸入資料夾名稱:",
[_L_INPUT_AMIIBO_NAME] = "輸入amiibo名稱:",
- [_L_DELETE] = "刪除",
+ [_L_DELETE_FILE] = "刪除 %s ?",
+ [_L_DELETE] = "刪除...",
+ [_L_TIPS] = "提示",
[_L_INPUT_NEW_NAME] = "輸入新名稱:",
[_L_INVALID_INPUT] = "無效的輸入",
- [_L_CREATE_NEW_FOLDER] = "新建資料夾..",
- [_L_CREATE_NEW_TAG] = "新建標籤..",
- [_L_CREATE_NEW_TAG_BATCH] = "批量創建標簽..",
+ [_L_CREATE_NEW_FOLDER] = "新建資料夾...",
+ [_L_CREATE_NEW_TAG] = "新建標籤...",
+ [_L_CREATE_NEW_TAG_BATCH] = "批量創建標簽...",
[_L_INPUT_TAG_NUM] = "輸入標簽數量:",
[_L_CREATE_TOO_MANY_NUM] = "一次最多只能創建%d個標簽",
[_L_CREATING_TAG_BATCH] = "創建標簽",
[_L_CREATING_TAG_FAILED] = "寫入 %s 標簽失敗",
- [_L_RENAME] = "重新命名",
+ [_L_RENAME] = "重新命名...",
[_L_OPEN_FOLDER_FAILED] = "開啟資料夾失敗",
[_L_RENAME_FAILED] = "重新命名失敗",
[_L_MAIN_RETURN] = "[返回]",
@@ -97,35 +99,36 @@ const char * const lang_zh_TW[_L_COUNT] = {
[_L_MODE_RANDOM_AUTO_GEN] = "隨機(自動)",
[_L_BLANK_TAG] = "空標籤",
[_L_APP_AMIIDB] = "Amiibo數據庫",
- [_L_APP_AMMIDB_BROWSER] = "查看..",
- [_L_APP_AMIIDB_SEARCH] = "搜索..",
- [_L_APP_AMIIDB_MY_FAVORITES] = "我的收藏..",
- [_L_APP_AMIIDB_MY_TAGS] = "我的數據..",
- [_L_APP_AMIIDB_SETTINGS] = "設置..",
+ [_L_APP_AMMIDB_BROWSER] = "查看...",
+ [_L_APP_AMIIDB_SEARCH] = "搜索...",
+ [_L_APP_AMIIDB_MY_FAVORITES] = "我的收藏...",
+ [_L_APP_AMIIDB_MY_TAGS] = "我的數據...",
+ [_L_APP_AMIIDB_SETTINGS] = "設置...",
[_L_APP_AMIIDB_EXIT] = "[退出]",
[_L_APP_AMIIDB_BACK] = "[返回]",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "密鑰文件",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "已加載",
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "未加載",
[_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "數據槽位",
- [_L_APP_AMIIDB_DETAIL_FAVORITE] = "收藏..",
- [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "保存爲..",
+ [_L_APP_AMIIDB_DETAIL_FAVORITE] = "收藏...",
+ [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "保存爲...",
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[返回詳情]",
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[返回列表]",
[_L_APP_AMIIDB_SEARCH_HEAD] = "搜索:",
[_L_APP_AMIIDB_MORE] = "[更多]",
+ [_L_APP_AMIIDB_MORE_MESSAGE] = "搜索結果過多,嘗試增加搜索詞。",
[_L_APP_AMIIDB_EMPTY_TAG] = "<空標簽>",
- [_L_APP_AMIIDB_SLOT_DELETE] = "重置..",
+ [_L_APP_AMIIDB_SLOT_DELETE] = "重置...",
[_L_APP_AMIIDB_CONFIRM] = "確認",
[_L_APP_AMIIDB_CANCEL] = "取消",
[_L_APP_AMIIDB_TIPS] = "提示",
- [_L_APP_AMIIDB_NEW] = "新建..",
- [_L_APP_AMIIDB_EMPTY] = "清空..",
- [_L_APP_AMIIDB_DELETE] = "删除..",
+ [_L_APP_AMIIDB_NEW] = "新建...",
+ [_L_APP_AMIIDB_EMPTY] = "清空...",
+ [_L_APP_AMIIDB_DELETE] = "删除...",
[_L_APP_AMIIDB_FAV_NEW_HEAD] = "新建收藏夾:",
[_L_APP_AMIIDB_FAV_EMPTY_MSG] = "確認清空收藏夾?",
[_L_APP_AMIIDB_FAV_DELETE_MSG] = "確認刪除?",
- [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "選擇收藏夾..",
+ [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "選擇收藏夾...",
[_L_APP_AMIIDB_FAV_SUCCESS] = "收藏成功",
[_L_APP_AMIIDB_FAV_FAILED] = "收藏失敗",
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "保存成功",
@@ -135,21 +138,21 @@ const char * const lang_zh_TW[_L_COUNT] = {
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "拒絕",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "忽略",
[_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "緩存",
- [_L_APP_CHAMELEON_INITIALIZING] = "初始化, 請稍後..",
+ [_L_APP_CHAMELEON_INITIALIZING] = "初始化, 請稍後...",
[_L_APP_CHAMELEON_CARD_SLOT] = "卡槽",
[_L_APP_CHAMELEON_CARD_NICK] = "卡名",
[_L_APP_CHAMELEON_CARD_ID] = "ID",
[_L_APP_CHAMELEON_CARD_TYPE] = "卡類型",
- [_L_APP_CHAMELEON_CARD_DATA] = "卡數據..",
- [_L_APP_CHAMELEON_CARD_ADVANCED] = "卡高級設置..",
- [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "卡槽管理..",
- [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "卡槽數量..",
+ [_L_APP_CHAMELEON_CARD_DATA] = "卡數據...",
+ [_L_APP_CHAMELEON_CARD_ADVANCED] = "卡高級設置...",
+ [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "卡槽管理...",
+ [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "卡槽數量...",
[_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "設置卡名成功",
[_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "設置卡名失敗",
[_L_APP_CHAMELEON_CARD_INPUT_NICK] = "輸入卡名:",
- [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "加載..",
- [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "導出..",
- [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "重置..",
+ [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "加載...",
+ [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "導出...",
+ [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "重置...",
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "卡片初始化成功",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "文件不存在",
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "文件大小不匹配",
diff --git a/fw/application/src/mod/vfs/vfs_driver_spiffs.c b/fw/application/src/mod/vfs/vfs_driver_spiffs.c
index fcb682ae..d4e145cc 100644
--- a/fw/application/src/mod/vfs/vfs_driver_spiffs.c
+++ b/fw/application/src/mod/vfs/vfs_driver_spiffs.c
@@ -49,16 +49,28 @@ static s32_t vfs_spiffs_map_error_code(s32_t err) {
return VFS_ERR_FAIL;
}
-static int32_t vfs_check_file_path(const char* file_path){
- if(strlen(file_path) >= VFS_MAX_PATH_LEN){
+static int32_t vfs_check_file_path(const char *file_path) {
+ if (strlen(file_path) >= VFS_MAX_PATH_LEN) {
return VFS_ERR_MAXNM;
}
- const char* basename;
+ const char *basename;
size_t length;
cwk_path_get_basename(file_path, &basename, &length);
- if(length <= 0 || length >= VFS_MAX_NAME_LEN){
+ if (length <= 0 || length >= VFS_MAX_NAME_LEN) {
+ return VFS_ERR_MAXNM;
+ }
+ return VFS_OK;
+}
+
+static int32_t vfs_check_folder_path(const char *file_path) {
+ int32_t ret = vfs_check_file_path(file_path);
+ if (ret != VFS_OK) {
+ return ret;
+ }
+ if (strlen(file_path) + strlen(VFS_SPIFFS_FOLDER_NAME) + 1 >= VFS_MAX_PATH_LEN) {
return VFS_ERR_MAXNM;
}
+
return VFS_OK;
}
@@ -160,6 +172,11 @@ int32_t vfs_spiffs_stat_file(const char *file, vfs_obj_t *obj) {
char path[SPIFFS_OBJ_NAME_LEN];
memset(obj, 0, sizeof(vfs_obj_t));
+ int res = vfs_check_file_path(file);
+ if (res != VFS_OK) {
+ return res;
+ }
+
if (SPIFFS_stat(&fs, file, &s) == SPIFFS_OK) {
cwk_path_get_basename(s.name, &basename, &length);
@@ -289,12 +306,15 @@ int32_t vfs_spiffs_close_dir(vfs_dir_t *fd) {
int32_t vfs_spiffs_create_dir(const char *dir) {
char path[VFS_MAX_PATH_LEN];
- NRF_LOG_INFO("create dir %s\n", nrf_log_push(dir));
- int res = vfs_check_file_path(dir);
- if(res != VFS_OK){
+ NRF_LOG_INFO("create dir %s, %d\n", nrf_log_push(dir), strlen(dir));
+ int res = vfs_check_folder_path(dir);
+ if (res != VFS_OK) {
+ NRF_LOG_INFO("folder path check failed: %d", res);
return res;
}
+
snprintf(path, sizeof(path), "%s/%s", dir, VFS_SPIFFS_FOLDER_NAME);
+
res = SPIFFS_creat(&fs, path, 0);
return vfs_spiffs_map_error_code(res);
}
@@ -335,13 +355,13 @@ int32_t vfs_spiffs_rename_dir_internal(const char *dir_name, const char *new_dir
vfs_spiffs_dir_t *p_dir = &dir;
int32_t err_code = VFS_OK;
- int ret = vfs_check_file_path(dir_name);
- if( ret != VFS_OK){
+ int ret = vfs_check_folder_path(dir_name);
+ if (ret != VFS_OK) {
return ret;
}
- int ret2 = vfs_check_file_path(new_dir_name);
- if( ret2 != VFS_OK){
+ int ret2 = vfs_check_folder_path(new_dir_name);
+ if (ret2 != VFS_OK) {
return ret;
}
@@ -396,7 +416,7 @@ int32_t vfs_spiffs_rename_dir(const char *dir_name, const char *new_dir_name) {
/**file operations*/
int32_t vfs_spiffs_open_file(const char *file, vfs_file_t *fd, uint32_t flags) {
int ret = vfs_check_file_path(file);
- if( ret != VFS_OK){
+ if (ret != VFS_OK) {
return ret;
}
fd->handle = SPIFFS_open(&fs, file, flags, 0);
@@ -464,7 +484,7 @@ int32_t vfs_spiffs_write_file_data(const char *file, void *buff, size_t buff_siz
NRF_LOG_INFO("write file data %s\n", nrf_log_push(file));
int ret = vfs_check_file_path(file);
- if( ret != VFS_OK){
+ if (ret != VFS_OK) {
return ret;
}
@@ -499,10 +519,16 @@ int32_t vfs_spiffs_read_file_data(const char *file, void *buff, size_t buff_size
}
int32_t vfs_spiffs_rename_file(const char *file, const char *new_file) {
- if (strlen(new_file) >= SPIFFS_OBJ_NAME_LEN) {
- NRF_LOG_INFO("rename file error, file %s new file %s is too long");
- return VFS_ERR_MAXNM;
+ int32_t ret = vfs_check_file_path(file);
+ if (ret != VFS_OK) {
+ return ret;
}
+
+ ret = vfs_check_file_path(new_file);
+ if (ret != VFS_OK) {
+ return ret;
+ }
+
NRF_LOG_INFO("rename file %s => %s\n", nrf_log_push(file), nrf_log_push(new_file));
int res = SPIFFS_rename(&fs, file, new_file);
return vfs_spiffs_map_error_code(res);
diff --git a/fw/application/src/mui/mui_resource.c b/fw/application/src/mui/mui_resource.c
index 740ae582..cd92fd36 100644
--- a/fw/application/src/mui/mui_resource.c
+++ b/fw/application/src/mui/mui_resource.c
@@ -4,14 +4,14 @@
//** /resources/bmp/app_amiibo_database_32x32.bmp
//************************************************************************
const uint8_t app_amiibo_database_32x32_data[] = {
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x1f,0x00,0x80,0xff,0xff,
-0x01,0xc0,0x0f,0xf0,0x03,0xf0,0x00,0x00,0x0f,0x78,0x00,0x00,0x1e,0x18,0x00,
-0x38,0x18,0x18,0x00,0x38,0x18,0x18,0x00,0x38,0x18,0x78,0x00,0x00,0x1e,0xf8,
-0x00,0x00,0x1f,0xd8,0x0f,0xf0,0x1b,0x98,0xff,0xff,0x19,0x18,0xf8,0x1f,0x18,
-0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x78,0x00,0x00,0x1e,0xf8,0x00,0x00,
-0x1f,0xd8,0x0f,0xf0,0x1b,0x98,0xff,0xff,0x19,0x18,0xf8,0x1f,0x18,0x18,0x00,
-0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x78,0x00,0x00,0x1e,0xf0,
-0x00,0x00,0x0f,0xc0,0x0f,0xf0,0x03,0x80,0xff,0xff,0x01,0x00,0xf8,0x1f,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0x20,0x00,0x00,0x04,0xa0,0x3e,
+0x00,0x04,0x20,0x00,0x00,0x04,0x20,0x00,0x00,0x04,0xc0,0xff,0xff,0x03,0x80,
+0xff,0xff,0x01,0xc0,0xff,0xff,0x03,0x20,0x00,0x00,0x04,0xa0,0x3e,0x1e,0x04,
+0x20,0x00,0x3f,0x04,0x20,0x80,0x73,0x04,0xc0,0xbf,0x61,0x03,0x80,0xbf,0x61,
+0x01,0xc0,0xbf,0x63,0x03,0x20,0x00,0x6f,0x04,0xa0,0x3e,0x6e,0x04,0x20,0x00,
+0x00,0x04,0x20,0x00,0x00,0x04,0xc0,0xff,0xff,0x03,0x80,0xff,0xff,0x01,0x68,
+0xff,0xff,0x1a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
const xbm_t app_amiibo_database_32x32 = {.width = 32, .height = 32, .data = app_amiibo_database_32x32_data};
diff --git a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c
index 5d8e7a1d..90fa8c12 100644
--- a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c
+++ b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c
@@ -1,1253 +1,1281 @@
-
-#include "mui_u8g2.h"
-
-#include "u8x8.h"
-
-
-/*
- Fontname: -wenquanyi-wenquanyi bitmap song-medium-r-normal--12-120-75-75-P-119-ISO10646-1
- Copyright: (null)
- Glyphs: 1552/30503
- BBX Build Mode: 0
-*/
-#ifdef U8G2_USE_LARGE_GB2312_FONT
-const uint8_t u8g2_font_wqy12_t_gb2312a[39601] U8G2_FONT_SECTION("u8g2_font_wqy12_t_gb2312a") =
- "\20\0\3\2\4\4\4\4\5\14\15\0\376\10\376\12\377\1d\2\332\5n \5\0\230\26!\7\221\212"
- "\26\247\0\42\7\64\371\26\221)#\16\226\210\67Q\313\260D\275\14K\324\2$\17\245xV\331RQ"
- "\62QK\224\312\26\1%\20\226x\66Q\322EK\302\64\211\222.Z\2&\16\205\210VY\22%Y"
- "eJ\242H\11'\6\61\372\25\3(\13\263yVI\224D\335\242,)\14\263y\26Y\224E]\242"
- "$\2*\14u\210V\225\312AY\232\42\0+\13w\210xqm\30\262\270\6,\7\62z\26\212\2"
- "-\7\25\310\26\203\0.\6!\212\25\2/\14\304xvMY)+e\65\0\60\12\205\210\66K\346"
- "[\262\0\61\11\205\210\26c\237\6\1\62\13\205\210\66K\26\326\332\6\1\63\15\205\210\26C\32&k"
- "\30\16\12\0\64\16\206\210wZ\22u\311\222aL\23\0\65\15\205\210\26C\22\206C\32\206\203\2\66"
- "\15\205\210\66K\30\16IfK\26\0\67\13\205\210\26\203X\13\263\260\4\70\15\205\210\66K\246%K"
- "fK\26\0\71\15\205\210\66KfK\206PK\26\0:\7a\210\22\222\0;\11\202z\26C\254("
- "\0<\10\225\210\226Y\327\16=\10\65\270\26\203:\10>\11\225\210\26i\267\216\0\77\15\225\210\66K"
- "\246\205\221\226Ca\4@\24\247xX[%\221\264DR\224\212R\221\22%\313&\0A\16\207\210x"
- "q\232\204IV\32\224T\15B\15\206\210\27\203\22\212\303\22\32\207\5C\14\206\210\67C\22\252\35\223"
- "!\1D\15\207\210\30\203\24&\251\307d\220\0E\13\205\210\26\307p\30\213\203\0F\13\205\210\26\307"
- "pH\302F\0G\15\206\210\67C\22\252\265QL\6\1H\13\206\210\27\241q\30D\307\0I\11\203"
- "\210\24K\324\313\0J\10\243hT\375i\1K\16\205\210\26\231\224\224\64-\211*Y\0L\11\205\210"
- "\26a\37\7\1M\20\207\210\30\332\220-\25\245\42ER\244\252\1N\15\206\210\27\341\246DR\242\215"
- "\306\0O\14\207\210X[%uM\262l\2P\14\205\210\26C\222\331\6%,\2Q\16\227xX["
- "%uM\262l\7\22\0R\20\206\210\27C\224%Y\222%C\324\226\204\1S\14\205\210\66\203\230\256"
- "a\70(\0T\12\207\210\30\207,\356\33\0U\12\206\210\27\241\37\223!\1V\17\207\210\30\251\232d"
- "QV\11\223\64\316\0W\21\211\210\32Y\246eZ\245S\322\224\264\25\263\10X\16\206\210\27\241\230D"
- "\231\26\265\204b\0Y\14\207\210\30i\222U\322\270\33\0Z\12\207\210\30\207\264\317\303\20[\11\263z"
- "\26C\324\237\6\134\15\245x\26a\32\246a\32\246a\0]\11\263y\26S\177\32\2^\10\65\350V"
- "YR\13_\7\25x\26\203\0`\7\62\371\25I\24a\14e\210\66K\226\14\232\226\14\1b\14\205"
- "\210\26a\70$\231\333\240\0c\10d\210\65C\326\70d\13\205\210\226\225AsK\206\0e\13e\210"
- "\66K\66\14a:\4f\11\203\210\64\323\20u\2g\14\205h\66\203\346\226\14a\262\0h\13\205\210"
- "\26a\70$\231\267\0i\7\201\210\22\311\60j\11\242h\63Y\322\313\0k\15\205\210\26a))i"
- "IT\311\2l\7\201\210\22\7\1m\16g\210\30\213\22ER$ER$\25n\11e\210\26C\222"
- "y\13o\12e\210\66K\346\226,\0p\14\205h\26C\222\271\15J\30\2q\13\205h\66\203\346\226"
- "\14a\1r\10c\210\24C\324\11s\14e\210\66K\226\250I\226,\0t\12\203\210\24Q\64Dm"
- "\2u\11e\210\26\231\267d\10v\14e\210\26\231\226\224\222,\214\0w\17g\210\30Q$EJE"
- "\351\26e\11\0x\13e\210\26YR\253\324\264\0y\15\205h\26\231\226\224\222,\314\302\14z\12e"
- "\210\26\203\230\265\15\2{\13\243xTIT\311\242\266\0|\7\261z\25\17\2}\13\243x\24YT"
- "K\242\226\10~\7&\270\67\222\5\200\17\225\210VR%\33\242l\210\302(R\0\241\7\201\210\22\311"
- "\60\277\12\204\210U\71\220E\265p\301\20\267\210\230i\16W\223\60\311J\203\222\252\1\303\21\267\210X"
- "JTG\343\64\11\223\254\64(\251\32\311\14\265\210vu\340\30\16cq\20\312\15\265\210VY\22\17"
- "c\70\214\305A\315\12\263\210TI\270D\275\14\326\16\247\210XI\16n\225\324\65\311\262\11\332\14\266"
- "\210wa\16\205~L\206\4\334\14\246\210\67Q\16\204~L\206\4\337\15\205\210\66R%JJ\225\314"
- "\224\0\340\15\225\210\66i\216\254\311\240i\311\20\341\15\225\210vudM\6MK\206\0\343\15\225\210"
- "\66\246\34X\223A\323\222!\344\15\205\210\66u`M\6MK\206\0\347\13\204h\65C\326\70%\22"
- "\0\350\15\225\210\66i\216,\331\60\204\351\20\351\15\225\210vud\311\206!L\207\0\352\16\225\210V"
- "Y\222\3K\66\14a:\4\353\15\205\210\66u`\311\206!L\207\0\355\11\222\210\63Z\322\13\0\361"
- "\13\225\210\66\246xH\62o\1\363\13\225\210vud\311\334\222\5\365\16\246\210\66\222\35\31\222\320c"
- "\62$\0\366\13\205\210\66u`\311\334\222\5\372\13\225\210vu \363\226\14\1\374\12\205\210\66\345\314"
- "[\62\4\0\0\0\70N\11\7\270P\31\12 SN\12fWO\12P\134B\12\200`o\12\231e"
- "\317\13Pl\21\12\267t\366\13\14|s\12\257\202\371\12\375\214\23\12\343\224\303\13\63\377\377\1M\14"
- "\205\210\66;\260dn\311\2\1Q\15\225\210VI;\260dn\311\2 \23\10\33\311\34\17\2 \34"
- "\13E\376<\221\224(C\42 \35\14E\371\34\312\220(\221\224\0\60\1\10\63\210\34\231\24\60\2\13"
- "D\213\30\273x\34"
- "\273x\134\311\260\225\262R\62(\305,\231\262R\61RZ\244,\315\222,\322\2W@\35\273x\134a"
- "\32\246a\66,i\224\14Q%\215\222\64J\322!\311\264$\36\6\1WG\33\273x\134Y\234\305\321"
- "p\210\243b\224\225\222,\211\264h\323r,G\24\0WO\32\273x\134\71\226\14C\224F\203\26V"
- "C\61S\62\245\64\265\3\71\226\1WP\27\273x\274\71\20\25\243bTKz\333\322x\70\347X:"
- "\34\4WW\35\273x\134a\32\246\321\240\14R\222\205I\26&Y\62\14\221\226\211I\16d\241\32W"
- "[\32\273x\134\71\26\15Z\216\14\71\224\14C\24\246Y,\205Zq\30\304\64W\203\32\273x\134Y"
- "\34\246\321p\320\221(+eM\331\22%b\222c\361\60\4W\213\37\273x<\303\224%Q\222%Q"
- "\222\14\203\222%Q\222%a\24\231s\340\220\3\351p\20W\316\33\273x<\261\24'\245\341\255\264\64"
- "%]\224DR\232\224D\251U\244\254\0W\337\33\273x\134\251\226&Q\62\34\304\312RJ:%\213"
- "&F\232R\223\22\71\13W\372\30\273x|\305\341\230\305K\234\314Y\66\34\244&eP\324t\70\10"
- "X\2\32\273x\134\255Imx\207\224aH\242\64\34\206\34\310\201\203\234\16\7\1XT\35\273x\134"
- "\265\312\60D\225\312\240\24\243\254\222,Q\216\15\203\62e\361 g\11\0X^\31\273x\274\351\360\224"
- "E\311p\314\262\341\240U\243Z\62(q:\34\4X\203\36\273x\134a\232\14C\224%\321p\220j"
- "\245A\213\262L\31\24\61\311\201(\311D\1X\223\32\273x\34\17b\224\16C\230\206\303\20\246\321p"
- "\220\232\224AQ\343\341\2X\231\37\273x\32\273x\274"
- "\351pPs *F\265\244\267-Lr K\323A\7\22\0YG\33\273x\274\361pMr \313"
- "\206\203\216\204\203\22fI\70(\71\226C\22\0YH\27\273x\274\351p\320\252%ePtt\70\347"
- "@Tk\311\304\0YO\31\273x\274\361p\215\207\203V\35\206H\313\244a\210\223\34\310BU\1Y"
- "V\33\273x\34Q\26&\321\240%RfR\262\70\321\241t\70\210I\254I: YW\32\273x\234"
- "\361p\320\302pX\22%\316\6\71\7\36\304\34\12\303aP\0Ye\31\273x\234\71\360\224t\212\246"
- "h\70ES\245\313p\20\223\34\310\262uYs\30\273x\234\71\226c\361p\320\312Y\32\246K\16\351"
- "H\244\255\11\0Yy\36\273x\134a\32%\331\220$S\222,Q\262\224\222NIe\213\222T\11\223"
- "Fu\20Y}\33\273x\134\71\226\15\207\60K\262\60\311J\303\220\24C\261\222\225\262(\235\0Y\202"
- " \273x\134\71\226#\203\62HI-JjI\224dI\224d\221\224E\322\240DI\246c\0Y\231"
- "\34\273x\134a\32f\203\242d\211\22U\242JT\325\242,\315\222\254\232\205\42\0Y\256\35\273x<"
- "\331\260d\341\60\204IeX\232\223&)i\222\22Q)%QI\12\7Y\306 \273x<\331 e"
- "R\62$MI-J\206S\42%Q\322$e\231\62H\305$\7\24\0Y\313 \273x\134a\32f"
- "\203\22eI-J\206!\211r \211\6I\312\242\244\226D\311\260f\1Y\354\34\273x\134\321\60\65"
- "\15S\226T\246\244S\322)\351\26%\233\22e\221T\34\6Z\1 \273x\374@\222#Q\62\34\222"
- "\64L\226(\211Z\206!\211\222N\221\224H\221\262Da\0Z\3\34\273x\134a\32fC\62HI"
- "\26&\303)\13\223,\215\6M\13\243Z\70\14Z\5 \273x<\71\26\15\7)\311\222(\311\22\245"
- "\27KT\311\264$\314\222,\211\222(\33\206\0Z\34\42\273x<\311\220,QR\31\226\212\222,\211"
- "\322\242$\203\222(}JZ\224\312RJ\242J\24\1ZZ\37\273x\134\321\240E\245\341\240\64eI"
- "\42)\345\244\62hQ\226)\203\24iI\70(\0[P\30\273x\134\303\220C\71\224C\71\226\16\7"
- "\65\307r,G\352P\14[W\31\273x\274\361pHrD\32\224\34\310\241t\70\250\71\226c\71\262"
- "\2[X\31\273x\234\361p\320r(\31\266\64\23\263d\70\205i\230\206i\264\1[f\31\272y<"
- "QVJ\242\341\240#\321\260#\71\22\16\207\64\207r`\4[i\33\273x\34\203\24'\303\24\246Y"
- "\224)C\64F\265(\213\212\225\266J$\6[\203\30\273x\274\361pHrDJ\303\34\213\326\35\311"
- "\261\70\213\303a\10[\210\31\273x\274\71\230\16\207$\7\222\64\35\356@\234\345@\224c\71\62\2["
- "\211\30\273x\274\361pHrD\13\323x\70hU-\7v$\322V\1[\214\33\273x\274\361pH"
- "rD\32\224\34\36\16a\222\3Q\16DY\224U\322![\230\32\273x\274\361pHrD\32\206\260"
- ":\254\71\66\14a\32\16C\230&\0[\232\33\273x\274\361pHrDG\262a\220s \312\201h"
- "\10\243\70\251f\303\20[\235\32\273x\234\71\230\16\357P\64\14\71\220c\71p\310\201$G\242h\70"
- "\10[\236\31\273x\334\351pH\312Z\22eu J\207C\234CI\16d\331*[\242\30\272y\234"
- "\351p\220\322h\330\222(\313dI\32\16Q\330\70L\0[\243\31\273x\274\351\360\16E\303\220S\206"
- "!L\303a\10\323p\30\242\341 [\244\32\273x\274\351\360\16)\303\220\204\71\224\245\203\222\3\71p"
- "\310\201t\70\10[\253\30\272y\234\351p\320\221h\30\213\303\16\17\203\24G\303 \305\11\0[\263\32"
- "\273x\274\351\360\30*\303\220\244\71p\310\201t\70Hi\230\206\303\20\1[\264\31\272y\234\351pP"
- "\302D\31\226(\14\207\71\35\16Q\26\17\331\220\15[\266\31\273x\274\351\360\16)\303\220dIVi"
- "\215DeI\243\222VT\1[\271\30\273x\274\351\360\224E\335\242$\12\263\264\244\14\212V\316\342A"
- "\3[\275\32\273x\274\351\360\224E\311p\314\322a\10\243bTL\272E\331\20\16\1[\304\32\273x"
- "\274\351\360\30*\303\220d\265\341\240#\341\20\205Qq\210rd\2[\306\32\273x\274\351\360V\351-"
- "jL\242dH\6%\315\201\250\30\25\207!\2[\314\30\273x\274\351\360\16E\303\220\16r\26\16\247"
- "\254\64\234\262\322p\1[\337\35\273x\274\351\360\222e\312\220\14\211\22%Q\22V\206$\321\221d\270"
- "E%\233\0[\353\31\273x\274\351\360\226*\322\22\245\341\62\246\341pP\232*=%\211\2[\371\33"
- "\273x\374H\64\204\351p\12\263$,\25\263$K\302,\11\243\64\311\241\14[\373\33\273x<\303\240"
- "c\341\60\344X\66\14:\224\15\7)\214\263\34\251C!\0[\374\35\273x\134\303\20\246\341\60$Q"
- "\16d\303\240\3\331p\320\352@\224\3Q\16i\0\134\4\34\273x\134q\64hQV\32\16IV\32"
- "\246ZR\31\266R\26e\225LR\0\134\6\34\273x\134Y\34\15J\251\246$j\226\204QM\31\6"
- "%*fI\230\206\241\4\134\7\37\273x|\305$\32\224\236\222(\211\206,\11\243\312pPJ-Y"
- "\22%i\22e\13\0\134\15\35\273x\134I\230t\212\24-\31\16R\22F\203R\14\245A\13\323p"
- "\251\254\21\0\134\16\35\273x\34a\224%\303 V\244!\211*CTL\222\341\216D\303A\13\343H"
- "\2\134\17\30\273x\274\71\226c\71\20\25\243,\312JY(Vs\244\16\305\0\134\21\32\273x\274\71"
- "\226#\245\64\311Ja\222E\71\220\344P\16\345\210\274#\0\134\24\30\272y\134\71\64\14J\16\210Q"
- "\134J\302\250-\252eb\226\215\0\134$\32\273x\234Q\16dq<\34\304$G\352@\224\3Q\234"
- "U\302L\36\2\134\61\36\273x|\265a\251#Q\62\34\222(\251\15I\65J\262D\351EI\244J"
- "I\311\4\134<\33\273x\134\303\240\305Y\234\15\203\226cI\230%\221\230\254Q\232D\251\70\14\134="
- "\31\273x\134\303\20\246a\32\16C\230\305aI\312\302(\211\324:\30\2\134>\33\273x\134\303\240\305"
- "\331\60h\241\70\310\331\220\15r\66d\203\226\204\231:\10\134@\36\273x\134\303\240\305\331\60h\71\66"
- "\234r J\206\250\22U\242!J\242\222\16(\0\134B\33\273x\134\303\240\305\331\60h\71\226\14["
- "\216\15\247,\216jQ\230d\303\20\134E\34\273x\134\303\240\305\331\60h\345\341\224\305\311\260%a\226"
- "\204Q\64,Y\230\0\134O\31\273x\134\303)\7\242\341\224\204YT\34N\215\303\251-\312\242b\4"
- "\134U\31\273x<\303)\7\242\341\324\70\234\32\207CRj\311\244JT\22\5\134^\37\273x<\303"
- ")\7\242\341\224\3Q\62la\232\14C\224D\225d\70$Y\246$C\42\134q\27\271y\234\71\22"
- "f\231\226i\231\226i\231\226i\331p\320\201\0\134\201\30\272x \273x\134a\234e\303\62DY\224EImJ\262$J\262$+EZ\224DI\224"
- "\204\1e\77\37\273x\374@\66,q\66d\221\22%K)\311\222(\311\222(\11\263d\212\306$\326"
- "\2eE\33\273x|\345,\33\226!\253\204QiPJ-Q\255\224eC\224D\321\26eH\35\273"
- "x\134a\234e\303\62DI\242DY\322\26%Y\22%aKVM\212Z\0eL\34\273x|R"
- "\66\246\341p\211\262(\251\205I\62HI\255\224\225\6)\251m\1eO\37\273x\34\273x\134\303\20\246\341\60\204i\70\14q\222FI\224%\245,iN\302\341 fB\35\273"
- "x\374@\66$\203\22e\245,\33\236\302(\32NI\24\15Q\222c\71\62\1fZ\36\273x\274\351"
- "\64DI)K\206AYJI\247\244\62,\65mJ\242\60\252eC\0fh\36\273x\134\303\20\246"
- "\341\60\204i\66\34\222\34K\206!\312\261\341\220\224\222(\222\26\0fn\32\273x|\305\341T\211\262"
- "\244i\70\350\360\60\204i\70\14a\32\16C\4fz\37\272y<\71\64$\203\222E\303 E\322\220"
- "DI\244\14C\226f\303\220\245\331\60$\0f\202\37\273x\134q\62([\22\205\203\62hQ\22\15"
- "I\24\16C\230\206\303\20\246\341\60D\0f\227\36\273x\374@\66<%Y\22U\242\341)\7\242d"
- "P\206$K\242d\220\263xP\0f\362\27\272y|Q\34e\303A*I%\251\64<\225\244\322\360"
- "\216\4f\364\31\273x<\303!\216\207A+e\303\240\225\262aP\223\34\312\21\333:f\370\33\273x"
- "\134\303\220\3Q\64\34\324(\33\316\351p\220\322p\30\302\64\34\206\10f\374\32\272y\134\303\230Da"
- "\224D\303A*\15\7\35\35\326(\7\304!\32\2f\376\31\271y\134\265\341 EK\313p\310\261a"
- "\210\322h\30\242\64\32\206\4g\0\33\273x\134\303\20\246\341\60\204i\64\34\224(\7\236*Q\64D"
- "\246H\236\4g\10\32\271y\134\303\20\245Q\32\15C\224Fi\64\14Q\32\245I\230\310\11\0g\11"
- "\30\273x\234\361p\320rl\30\305,\31\246b:\254a\32\246\231\4g\13\36\273x\33\273x|\265a\211\263!\31\222,G*C\226c\321\60e"
- "IOMK\30kL\37\273x\34\227\34\210\262%\32\224\266aP\342,Z\262()%\311\22%i"
- "\222ec\0kb\27\272y\274\71\224Cq\24GC\26\305Q\34\305Q\34\205\303!kc\32\253x"
- "\34\17j\216\345@\224\3\321\240E\71\20\345@\224\3Q:\34\4kd\36\273x|\345,\316\242\244"
- "\226D\311\242%Y\230da\222\205I\26%\311\22\15\351\0ke\31\273x\274\71\20\15Z\224\3Q"
- ":\34\324\34\251\225ji\216\210\203\14kw\34\273x<\303!\311J\211\244EY\66\34\222(\253\234"
- "\224>\15ITL\206\3k{\30\273x\34\17Z\216\225\227\250\245$%R\245\16Dq\26\25\243y"
- "k\265\34\273x|\312\246%Y\230dK\264\344\330\62HY)L\242!\13+Y\244\11k\301\33\273"
- "x\34\213\262\204IEY\32\223d\270cC\62,\305,\11\253Ke+k\315\34\273x\134\303\20&"
- "Y\30\25\323h\70HI\26F\305\64\33\16\71\222#\32\0k\317\33\273x\134\71\66\134r(\32\326"
- "$\212\206\203\324\230%\331p\310\221\34\321\0k\322\30\273x\274\351pP\343\341\234\16\7\251i\70("
- "Y\224\15\207X\3k\324\25\272y\34aOI\230DC\242\205}Q\262-S\207\0k\333\27\273x"
- "\334\333\240c\71\66d\203\216\345\330\360\216\205i\30\17\2l\21\31\272y\34/\71\220\344@\62\134\262"
- "\64K\207\203XJ\62%\213\326\1l\24\32\273x|\71\66\14Y\16%\303\224\243\303\216\345X\224\3"
- "Q\216\324!\1l\27\33\273x|\71\66\14R\16%\303\220\344\340\60\350H\61\252jI\24Y\302,"
- "l\64\30\273x\274\71\226c\225!Q\322\244\234T\243bTk\211\222\260\14l\70\31\273x\274\71\30"
- "\17Y\34ECRN\344(I\243ZmJr(\6lB\32\273x\274Q\16d\311pPs \252"
- "&u`\7\222jT\322\62Q\5lI\33\273x<\71\220%\303 fQR\13\223\254%\314\222H"
- "\15+YS\242\6l_\32\273x<\71\30\15J\34&Y\234\245a\32fj\230\206\311\60(\71\4"
- "l`\37\273x\35\273x<\261\226\14\71\20n\311\226(\305\244SR\61%\265(\211Z\242J$\5m"
- "A\32\273x\34ie\30\324Z\313\60dq\226\64II-J:%=E\2mN\34\273x\32\273x\245\331pG\207\203\324d\23y\217\37\273x<\321\60D\71<(C\222"
- "\205\311\240\345\330pQ\242HI\206!J\242\226a\10y\273\33\273x\274\351p\220\222\306\250\230\64\16"
- "C\16\304\303\251%J\6%\212\25\0y\301\32\273x|\362\230\206\331 \245Y:\245J\61\211\262\312"
- "\60D\305(G\0y\315\33\273x|R\66\246\321\360\22\265D\221RJ\224aP\302\64L\303\64\314"
- "\0y\321\34\273x|b\262EY\230$\203\230\225\62-\211\224p\11\267H\312\342,N\0y\322\33"
- "\273x|\265\61\215\222\312\220\224Z\242d)*Q\244\304Y\32fj\242\2y\360\31\273x|J\270"
- "\305\321p\220\32\303\245IJz*iQ\61\315\64\0y\373\33\273x|\265\203T\34\226(\13-J"
- "\230DC\242eJ\224\324\322\60\332\0z\13\36\273x|\311\240LY)K\206d\320rL\31$%"
- "\12\245A)\246a\232\14C\0z\15\36\273x|R\64DI-\314\206C\26e\321\62H\212\226\224"
- "\6-\312JY)R\0z.\34\273x|\311\240\214i\64\274\324\242AS\332\222a\22\263$\32\264"
- "\60M\206!z\61\35\273x|\241\62M\225(\32\224\266h\320\224\266d\230\244\244\313\60D\265R\244"
- "\0z\77\36\273x|R\66\15S\26%\203\62d\71\66\234\222\64Q\222E\351)I\226(\11\5z"
- "v\30\273x\274\351\360\224E\325,\12\323\34\31v \212\263\250\30\315\3zz\30\273x\274\361pH"
- "rD\213\342\60\223\303a\7r,\307\342\341\20z\177\32\273x\274\351\360\224EJ\232$\303 f\351"
- "pMr \212\263P\32\1z\201\31\273x\274\361pH\242\222\24\226\222r\224\15\207\64\207\222X\223"
- "t@z\227\36\272y\274\341pP\302\244\224%\303!\211\262(\31\246)\211\42\251\22%\321\60(\0"
- "z\313\30\273x\274\71\230\16\207\234\20\246a\34\345@\224\3I\216\205\303Az\326\36\273x|\311 "
- "%\265(\211\222,\311\302$J\322$\223\323\341\230\345@\22\16\7\1z\331\34\273x\65"
- "&\215Z\0\226b\35\273x\34C\24FY%\31N\251\22\15J\224\3\321pHJ\225\250\242U\244"
- "T\226d\36\273x\34CV\252DI\224%R\262(a\26\15\247,\233\222\266(\222\262H\325\0\226"
- "\206 \273x\34C\222F\311\240T\264D\234\222D\233\222Z\224\14\7)K\242A\211\263h\30\4\226"
- "\217 \273x\34c\226(\303\220\64j\203R\213\222\344\220tJ\244dH\262$J\62\65\212\6\1\226"
- "\220\42\273x\34C\62D\225\250\222\14\213\222&\245A\211\322$J\6E\211\302$Q\232\222(\21\207"
- "\10\226\250!\273x\34CVR\206%*i\303\220\204IiY\242\244eH\222\245\224\264%Q\22e"
- "C\0\226\274\30\273x\134Y<\134\264\60\31\6\255<\14Zy\70\207\303A\16\1\226\276\35\273x\334"
- "I\64DI\232\14C\64eI)\214\206\251-I\206\245\251\30\345\300\1\226\304\37\273x|\345(\211"
- "\206\203\224%a\244dI\64(\245$*\15K\226\204I\333\220\14\2\226\306\34\273x|I\16d\351"
- "pP\242\34\70hQ\16\34\264(\35\16ZR\233\242\1\226\314\37\273x\134I\224&\215I\62,\203"
- "\22%\225a\351\224T\206\245S\62(\221\224\14r\10\226\350\30\273x\34\17j\216\305\303)+%\235"
- "\42O\225NY)\213\24\0\226\352\31\273x<\303\71\35\36CEI\224\34\35\356X\66\14:\26\15"
- "\27\0\226\366\31\273x<\303\71\35\236\222R\70k\222\226I\303\220C\71\260c\32\0\226\367\30\273x"
- "<\303\71\35\36CEI\224\64\36NYi\70e\245\341\2\226\373\30\273x<\303\71\35^\242J\62"
- "\234\262\322p\312J\303\71L\207\1\227\0\31\273x<\303\71\35^\224DI\323\341 \346\300S%j"
- "\211Z\22\5\227\6\34\273x<\303\71\35^\242\312\240\14Z\30.\203\230\205\311\60H\71\242\14\203\0"
- "\227\23\34\273x<\303\71\35^\242J\62\15Q\16DC\62D\71\20\15\307(\33\262A\227\36\32\273"
- "x<\303\71\35\236\222\322\260\14Q\61\32Na\24\15IT\325\242I\227\62\36\273x<\303\71\35\236"
- "\222\322 \15I\224H\311\220\211\221\264\34\222Z\224\14\321\220\0\227\70\34\273x<\303\71\35\236\222\322"
- "p\220*Q\62(C\322)\31\16Y)\213\42\5\227R\30\273x\274\361p\316\201C\16\244\303A\13"
- "\323a\15\323a\15#\0\227Y\37\273x\134a\66,[%\33\222!\13\223d\70(Q%R\222!"
- "J\244\60*&\66\0\227^\34\273x\234I\216\24\7e\20\223\34\251\16\311\220&\71R\34\224AL"
- "r\244\10\227`\34\273x\134u\340 e\351p\220\322p\30\342$\34\224AL\302A\31\304$\4\227"
- "b\30\272y\34\17a\216\304\303A*IC$\225\244!\222J\303;\22\227i\31\273x|\265\341\240"
- "\225\7\35\311\201C\30\25\207!\7\322\341\240\246\0\227\215\35\273x<\265l\70(\215\311\226\206\331\360"
- "RJ\222A\211\262P\32\244$\213\264\0\227\363\32\273x\274\361p\314r \11\207\203\16\17C\230\206"
- "\303\20\246\341\60D\0\227\365\35\273x\134Y\70(a\226\14J\343\260d\71\20\15\253\26)\303\240i"
- "\351\260)\0\230\30\36\273x|\311\60\211Y\224\14K\244\225\206C\222\205\311\240\224\262(\33\264\250\230"
- "\204\1\230^\36\273x\34IeP\306\332pH\262d\32\226\266(\33\16I\26e\203RKj[\0"
- "\230o\42\273x<\203\62$Y\224\15\312\220dI\224\14\312\220D\211\24)\311\220tJ\224aH\372"
- "\267\0\230u\31\273x\34\17j\16\34\302\64\214\212Q\61*FJ\34\305\241$'\0\230\177\35\273x"
- "\134\331 \245\321\240\14R\226)]\224.\303\322\224%\245$\13\265$\326\2\230\206\33\273x|\321\240"
- "\205\225(\224\206!\252\305IeH\32\223\266\260%\214\262\0\230\221\37\273x|\321\240\24\263d\30\224"
- "R\66\14J-J\272(-JE\252\224\302$\321\264\0\230\230!\273x\11\225\210\26i\267\216\0\77\15\225\210\66K"
+ "\246\205\221\226Ca\4@\24\247xX[%\221\264DR\224\212R\221\22%\313&\0A\16\207\210x"
+ "q\232\204IV\32\224T\15B\15\206\210\27\203\22\212\303\22\32\207\5C\14\206\210\67C\22\252\35\223"
+ "!\1D\15\207\210\30\203\24&\251\307d\220\0E\13\205\210\26\307p\30\213\203\0F\13\205\210\26\307"
+ "pH\302F\0G\15\206\210\67C\22\252\265QL\6\1H\13\206\210\27\241q\30D\307\0I\11\203"
+ "\210\24K\324\313\0J\10\243hT\375i\1K\16\205\210\26\231\224\224\64-\211*Y\0L\11\205\210"
+ "\26a\37\7\1M\20\207\210\30\332\220-\25\245\42ER\244\252\1N\15\206\210\27\341\246DR\242\215"
+ "\306\0O\14\207\210X[%uM\262l\2P\14\205\210\26C\222\331\6%,\2Q\16\227xX["
+ "%uM\262l\7\22\0R\20\206\210\27C\224%Y\222%C\324\226\204\1S\14\205\210\66\203\230\256"
+ "a\70(\0T\12\207\210\30\207,\356\33\0U\12\206\210\27\241\37\223!\1V\17\207\210\30\251\232d"
+ "QV\11\223\64\316\0W\21\211\210\32Y\246eZ\245S\322\224\264\25\263\10X\16\206\210\27\241\230D"
+ "\231\26\265\204b\0Y\14\207\210\30i\222U\322\270\33\0Z\12\207\210\30\207\264\317\303\20[\11\263z"
+ "\26C\324\237\6\134\15\245x\26a\32\246a\32\246a\0]\11\263y\26S\177\32\2^\10\65\350V"
+ "YR\13_\7\25x\26\203\0`\7\62\371\25I\24a\14e\210\66K\226\14\232\226\14\1b\14\205"
+ "\210\26a\70$\231\333\240\0c\10d\210\65C\326\70d\13\205\210\226\225AsK\206\0e\13e\210"
+ "\66K\66\14a:\4f\11\203\210\64\323\20u\2g\14\205h\66\203\346\226\14a\262\0h\13\205\210"
+ "\26a\70$\231\267\0i\7\201\210\22\311\60j\11\242h\63Y\322\313\0k\15\205\210\26a))i"
+ "IT\311\2l\7\201\210\22\7\1m\16g\210\30\213\22ER$ER$\25n\11e\210\26C\222"
+ "y\13o\12e\210\66K\346\226,\0p\14\205h\26C\222\271\15J\30\2q\13\205h\66\203\346\226"
+ "\14a\1r\10c\210\24C\324\11s\14e\210\66K\226\250I\226,\0t\12\203\210\24Q\64Dm"
+ "\2u\11e\210\26\231\267d\10v\14e\210\26\231\226\224\222,\214\0w\17g\210\30Q$EJE"
+ "\351\26e\11\0x\13e\210\26YR\253\324\264\0y\15\205h\26\231\226\224\222,\314\302\14z\12e"
+ "\210\26\203\230\265\15\2{\13\243xTIT\311\242\266\0|\7\261z\25\17\2}\13\243x\24YT"
+ "K\242\226\10~\7&\270\67\222\5\200\17\225\210VR%\33\242l\210\302(R\0\241\7\201\210\22\311"
+ "\60\277\12\204\210U\71\220E\265p\301\20\267\210\230i\16W\223\60\311J\203\222\252\1\303\21\267\210X"
+ "JTG\343\64\11\223\254\64(\251\32\311\14\265\210vu\340\30\16cq\20\312\15\265\210VY\22\17"
+ "c\70\214\305A\315\12\263\210TI\270D\275\14\326\16\247\210XI\16n\225\324\65\311\262\11\332\14\266"
+ "\210wa\16\205~L\206\4\334\14\246\210\67Q\16\204~L\206\4\337\15\205\210\66R%JJ\225\314"
+ "\224\0\340\15\225\210\66i\216\254\311\240i\311\20\341\15\225\210vudM\6MK\206\0\343\15\225\210"
+ "\66\246\34X\223A\323\222!\344\15\205\210\66u`M\6MK\206\0\347\13\204h\65C\326\70%\22"
+ "\0\350\15\225\210\66i\216,\331\60\204\351\20\351\15\225\210vud\311\206!L\207\0\352\16\225\210V"
+ "Y\222\3K\66\14a:\4\353\15\205\210\66u`\311\206!L\207\0\355\11\222\210\63Z\322\13\0\361"
+ "\13\225\210\66\246xH\62o\1\363\13\225\210vud\311\334\222\5\365\16\246\210\66\222\35\31\222\320c"
+ "\62$\0\366\13\205\210\66u`\311\334\222\5\371\13\225\210\66i\16d\336\222!\372\13\225\210vu "
+ "\363\226\14\1\374\12\205\210\66\345\314[\62\4\0\0\0\70\60\247\6\71N\272\10\241Q\267\12\220T\15"
+ "\12\77Y\231\12z^\253\12bb\354\13\21go\13\25on\12\350x\64\12\300\177\23\13\21\211\177"
+ "\12\270\217\203\13\22\377\377\1M\14\205\210\66;\260dn\311\2\1Q\15\225\210VI;\260dn\311"
+ "\2\4\1\15\245\210\66\345a\14\207\261\70\10\4\20\16\205\210VK\224D\232\66\14\231\26\4\21\15\205"
+ "\210\26\307pH\62\333\240\0\4\22\16\205\210\26C\222i\203\222\331\6\5\4\23\11\205\210\26\307>\2"
+ "\4\24\23\227xXC\26eQ\26eQ-\312\222aP\3\4\27\16\205\210\66K\26Fj\250%\13"
+ "\0\4\30\15\205\210\26\231\323\222(\311\244\5\4\32\17\205\210\26\231\224\224\246J\224dZ\0\4\34\21"
+ "\207\210\30\351\66dKE\251H\221\24\251\1\4\35\14\205\210\26\231m\30\62\267\0\4\36\13\205\210\66"
+ "K\346[\262\0\4\37\11\205\210\26\67\277\5\4 \15\205\210\26C\222i\203\22\66\2\4!\14\205\210"
+ "\66K&vK\26\0\4\42\12\205\210\26\203\24\366\11\4#\14\205\210\26\231\267d\10\7\5\4$\21"
+ "\207\210x\341\240D\221\24I\221T\31\304\14\4'\13\205\210\26\231[\62\204\15\4-\16\205\210\66K"
+ "\26&C\30j\311\2\4/\17\205\210\66\203\246%C\22%\221\246\5\4\60\13d\210\65b\62DR"
+ "\62\4\61\15\224\210u\211\222-\221S\242\0\4\62\15d\210\25K\64$\221\64$\0\4\63\11d\210"
+ "\25\203\326\15\4\64\17vxW[\222%Y\22U\206!\14\4\65\14d\210\65J\64lQ\242\0\4"
+ "\66\16g\210\30Q\245mK\232\42\251\0\4\67\13d\210\65JT\224\22\5\4\70\15e\210\26\231\264"
+ "$J\62i\1\4\71\17\225\210\66\265\34\310\244%Q\222I\13\4:\14d\210\25\221\222HII\12"
+ "\4;\12d\210\65K\277H\1\4<\14f\210\27\341\64D\213\307\0\4=\13d\210\25\221\64L\246"
+ "\0\4>\13d\210\65J\344\224(\0\4\77\11d\210\25\203\344)\4@\16\205h\26\211I\323&E"
+ "\11C\0\4A\13d\210\65J\244\225\22\5\4B\12e\210\26\203\24v\2\4C\14\204h\25\221\245"
+ "I\312\242\14\4D\23\247hxq\70(Q$ER$U\6\61\316\0\4E\14e\210\26YR\253"
+ "\324\264\0\4F\20ux\26Q\22%Q\22%Q\62\210\1\4G\12d\210\25\221)\331\12\4H\20"
+ "g\210\30Q$ER$ER\64\14\2\4I\22xx\31Q%\252D\225\250\22U\206A\7\2\4"
+ "K\16f\210\27\241\70DR\42%C\24\4L\14d\210\25Y\266D\322\220\0\4M\14d\210\65J"
+ "\24iR\242\0\4N\17f\210\27\221R\32\42%R\42\13\0\4O\14d\210\65C$%K\42\5"
+ "\4Q\16\204\210\25Q\252D\303\26%\12\0 \23\10\33\311\34\17\2 \34\13E\376<\221\224(C"
+ "\42 \35\14E\371\34\312\220(\221\224\0\60\1\10\63\210\34\231\24\60\2\13D\213\30\273x\34\273x\134\311\260\225\262R\62(\305,\231\262R"
+ "\61RZ\244,\315\222,\322\2W@\35\273x\134a\32\246a\66,i\224\14Q%\215\222\64J\322"
+ "!\311\264$\36\6\1WG\33\273x\134Y\234\305\321p\210\243b\224\225\222,\211\264h\323r,G"
+ "\24\0WO\32\273x\134\71\226\14C\224F\203\26VC\61S\62\245\64\265\3\71\226\1WP\27\273"
+ "x\274\71\20\25\243bTKz\333\322x\70\347X:\34\4WW\35\273x\134a\32\246\321\240\14R"
+ "\222\205I\26&Y\62\14\221\226\211I\16d\241\32W[\32\273x\134\71\26\15Z\216\14\71\224\14C"
+ "\24\246Y,\205Zq\30\304\64W\203\32\273x\134Y\34\246\321p\320\221(+eM\331\22%b\222"
+ "c\361\60\4W\213\37\273x<\303\224%Q\222%Q\222\14\203\222%Q\222%a\24\231s\340\220\3"
+ "\351p\20W\316\33\273x<\261\24'\245\341\255\264\64%]\224DR\232\224D\251U\244\254\0W\337"
+ "\33\273x\134\251\226&Q\62\34\304\312RJ:%\213&F\232R\223\22\71\13W\372\30\273x|\305"
+ "\341\230\305K\234\314Y\66\34\244&eP\324t\70\10X\2\32\273x\134\255Imx\207\224aH\242"
+ "\64\34\206\34\310\201\203\234\16\7\1XT\35\273x\134\265\312\60D\225\312\240\24\243\254\222,Q\216\15"
+ "\203\62e\361 g\11\0X^\31\273x\274\351\360\224E\311p\314\262\341\240U\243Z\62(q:\34"
+ "\4X\203\36\273x\134a\232\14C\224%\321p\220j\245A\213\262L\31\24\61\311\201(\311D\1X"
+ "\223\32\273x\34\17b\224\16C\230\206\303\20\246\321p\220\232\224AQ\343\341\2X\231\37\273x\32\273x\274\351pPs *F\265\244\267-Lr K"
+ "\323A\7\22\0YG\33\273x\274\361pMr \313\206\203\216\204\203\22fI\70(\71\226C\22\0"
+ "YH\27\273x\274\351p\320\252%ePtt\70\347@Tk\311\304\0YO\31\273x\274\361p\215"
+ "\207\203V\35\206H\313\244a\210\223\34\310BU\1YV\33\273x\34Q\26&\321\240%RfR\262"
+ "\70\321\241t\70\210I\254I: YW\32\273x\234\361p\320\302pX\22%\316\6\71\7\36\304\34"
+ "\12\303aP\0Ye\31\273x\234\71\360\224t\212\246h\70ES\245\313p\20\223\34\310\262uYs"
+ "\30\273x\234\71\226c\361p\320\312Y\32\246K\16\351H\244\255\11\0Yy\36\273x\134a\32%\331"
+ "\220$S\222,Q\262\224\222NIe\213\222T\11\223Fu\20Y}\33\273x\134\71\226\15\207\60K"
+ "\262\60\311J\303\220\24C\261\222\225\262(\235\0Y\202 \273x\134\71\226#\203\62HI-JjI"
+ "\224dI\224d\221\224E\322\240DI\246c\0Y\231\34\273x\134a\32f\203\242d\211\22U\242J"
+ "T\325\242,\315\222\254\232\205\42\0Y\256\35\273x<\331\260d\341\60\204IeX\232\223&)i\222"
+ "\22Q)%QI\12\7Y\306 \273x<\331 eR\62$MI-J\206S\42%Q\322$e"
+ "\231\62H\305$\7\24\0Y\313 \273x\134a\32f\203\22eI-J\206!\211r \211\6I\312"
+ "\242\244\226D\311\260f\1Y\354\34\273x\134\321\60\65\15S\226T\246\244S\322)\351\26%\233\22e"
+ "\221T\34\6Z\1 \273x\374@\222#Q\62\34\222\64L\226(\211Z\206!\211\222N\221\224H\221"
+ "\262Da\0Z\3\34\273x\134a\32fC\62HI\26&\303)\13\223,\215\6M\13\243Z\70\14"
+ "Z\5 \273x<\71\26\15\7)\311\222(\311\22\245\27KT\311\264$\314\222,\211\222(\33\206\0"
+ "Z\34\42\273x<\311\220,QR\31\226\212\222,\211\322\242$\203\222(}JZ\224\312RJ\242J"
+ "\24\1ZZ\37\273x\134\321\240E\245\341\240\64eI\42)\345\244\62hQ\226)\203\24iI\70("
+ "\0[P\30\273x\134\303\220C\71\224C\71\226\16\7\65\307r,G\352P\14[W\31\273x\274\361"
+ "pHrD\32\224\34\310\241t\70\250\71\226c\71\262\2[X\31\273x\234\361p\320r(\31\266\64"
+ "\23\263d\70\205i\230\206i\264\1[f\31\272y\33\273x\134\303\240\305\331\60h\241\70\310\331\220\15r\66d\203\226\204\231:\10\134@\36\273x"
+ "\134\303\240\305\331\60h\71\66\234r J\206\250\22U\242!J\242\222\16(\0\134B\33\273x\134\303"
+ "\240\305\331\60h\71\226\14[\216\15\247,\216jQ\230d\303\20\134E\34\273x\134\303\240\305\331\60h"
+ "\345\341\224\305\311\260%a\226\204Q\64,Y\230\0\134O\31\273x\134\303)\7\242\341\224\204YT\34"
+ "N\215\303\251-\312\242b\4\134U\31\273x<\303)\7\242\341\324\70\234\32\207CRj\311\244JT"
+ "\22\5\134^\37\273x<\303)\7\242\341\224\3Q\62la\232\14C\224D\225d\70$Y\246$C"
+ "\42\134q\27\271y\234\71\22f\231\226i\231\226i\231\226i\331p\320\201\0\134\201\30\272x \273x\134a\234e\303\62DY\224EImJ\262$J"
+ "\262$+EZ\224DI\224\204\1e\77\37\273x\374@\66,q\66d\221\22%K)\311\222(\311"
+ "\222(\11\263d\212\306$\326\2eE\33\273x|\345,\33\226!\253\204QiPJ-Q\255\224e"
+ "C\224D\321\26eH\35\273x\134a\234e\303\62DI\242DY\322\26%Y\22%aKVM\212"
+ "Z\0eL\34\273x|R\66\246\341p\211\262(\251\205I\62HI\255\224\225\6)\251m\1eO"
+ "\37\273x\34\273x\134\303\20\246\341\60\204i\70\14q\222FI\224%\245,"
+ "iN\302\341 fB\35\273x\374@\66$\203\22e\245,\33\236\302(\32NI\24\15Q\222c\71"
+ "\62\1fZ\36\273x\274\351\64DI)K\206AYJI\247\244\62,\65mJ\242\60\252eC\0"
+ "fh\36\273x\134\303\20\246\341\60\204i\66\34\222\34K\206!\312\261\341\220\224\222(\222\26\0fn"
+ "\32\273x|\305\341T\211\262\244i\70\350\360\60\204i\70\14a\32\16C\4fz\37\272y<\71\64"
+ "$\203\222E\303 E\322\220DI\244\14C\226f\303\220\245\331\60$\0f\202\37\273x\134q\62("
+ "[\22\205\203\62hQ\22\15I\24\16C\230\206\303\20\246\341\60D\0f\227\36\273x\374@\66<%"
+ "Y\22U\242\341)\7\242dP\206$K\242d\220\263xP\0f\362\27\272y|Q\34e\303A*"
+ "I%\251\64<\225\244\322\360\216\4f\364\31\273x<\303!\216\207A+e\303\240\225\262aP\223\34"
+ "\312\21\333:f\370\33\273x\134\303\220\3Q\64\34\324(\33\316\351p\220\322p\30\302\64\34\206\10f"
+ "\374\32\272y\134\303\230Da\224D\303A*\15\7\35\35\326(\7\304!\32\2f\376\31\271y\134\265"
+ "\341 EK\313p\310\261a\210\322h\30\242\64\32\206\4g\0\33\273x\134\303\20\246\341\60\204i\64"
+ "\34\224(\7\236*Q\64D\246H\236\4g\10\32\271y\134\303\20\245Q\32\15C\224Fi\64\14Q"
+ "\32\245I\230\310\11\0g\11\30\273x\234\361p\320rl\30\305,\31\246b:\254a\32\246\231\4g"
+ "\13\36\273x\33\273x|\265a\211\263!\31\222"
+ ",G*C\226c\321\60eIOMK\30kL\37\273x\34\227\34\210\262%\32\224\266aP\342,"
+ "Z\262()%\311\22%i\222ec\0kb\27\272y\274\71\224Cq\24GC\26\305Q\34\305Q"
+ "\34\205\303!kc\32\253x\34\17j\216\345@\224\3\321\240E\71\20\345@\224\3Q:\34\4kd"
+ "\36\273x|\345,\316\242\244\226D\311\242%Y\230da\222\205I\26%\311\22\15\351\0ke\31\273"
+ "x\274\71\20\15Z\224\3Q:\34\324\34\251\225ji\216\210\203\14kw\34\273x<\303!\311J\211"
+ "\244EY\66\34\222(\253\234\224>\15ITL\206\3k{\30\273x\34\17Z\216\225\227\250\245$%"
+ "R\245\16Dq\26\25\243yk\265\34\273x|\312\246%Y\230dK\264\344\330\62HY)L\242!"
+ "\13+Y\244\11k\301\33\273x\34\213\262\204IEY\32\223d\270cC\62,\305,\11\253Ke+"
+ "k\315\34\273x\134\303\20&Y\30\25\323h\70HI\26F\305\64\33\16\71\222#\32\0k\317\33\273"
+ "x\134\71\66\134r(\32\326$\212\206\203\324\230%\331p\310\221\34\321\0k\322\30\273x\274\351pP"
+ "\343\341\234\16\7\251i\70(Y\224\15\207X\3k\324\25\272y\34aOI\230DC\242\205}Q\262"
+ "-S\207\0k\333\27\273x\334\333\240c\71\66d\203\216\345\330\360\216\205i\30\17\2l\21\31\272y"
+ "\34/\71\220\344@\62\134\262\64K\207\203XJ\62%\213\326\1l\24\32\273x|\71\66\14Y\16%"
+ "\303\224\243\303\216\345X\224\3Q\216\324!\1l\27\33\273x|\71\66\14R\16%\303\220\344\340\60\350"
+ "H\61\252jI\24Y\302,l\64\30\273x\274\71\226c\225!Q\322\244\234T\243bTk\211\222\260"
+ "\14l\70\31\273x\274\71\30\17Y\34ECRN\344(I\243ZmJr(\6lB\32\273x\274"
+ "Q\16d\311pPs \252&u`\7\222jT\322\62Q\5lI\33\273x<\71\220%\303 f"
+ "QR\13\223\254%\314\222H\15+YS\242\6l_\32\273x<\71\30\15J\34&Y\234\245a\32"
+ "fj\230\206\311\60(\71\4l`\37\273x\35\273x<\261\226\14\71\20n\311\226(\305\244SR\61%"
+ "\265(\211Z\242J$\5mA\32\273x\34ie\30\324Z\313\60dq\226\64II-J:%="
+ "E\2mN\34\273x\32\273x\245\331pG\207\203\324d\23y\217\37\273x"
+ "<\321\60D\71<(C\222\205\311\240\345\330pQ\242HI\206!J\242\226a\10y\273\33\273x\274"
+ "\351p\220\222\306\250\230\64\16C\16\304\303\251%J\6%\212\25\0y\301\32\273x|\362\230\206\331 "
+ "\245Y:\245J\61\211\262\312\60D\305(G\0y\315\33\273x|R\66\246\321\360\22\265D\221RJ"
+ "\224aP\302\64L\303\64\314\0y\321\34\273x|b\262EY\230$\203\230\225\62-\211\224p\11\267"
+ "H\312\342,N\0y\322\33\273x|\265\61\215\222\312\220\224Z\242d)*Q\244\304Y\32fj\242"
+ "\2y\360\31\273x|J\270\305\321p\220\32\303\245IJz*iQ\61\315\64\0y\373\33\273x|"
+ "\265\203T\34\226(\13-J\230DC\242eJ\224\324\322\60\332\0z\13\36\273x|\311\240LY)"
+ "K\206d\320rL\31$%\12\245A)\246a\232\14C\0z\15\36\273x|R\64DI-\314\206"
+ "C\26e\321\62H\212\226\224\6-\312JY)R\0z.\34\273x|\311\240\214i\64\274\324\242A"
+ "S\332\222a\22\263$\32\264\60M\206!z\61\35\273x|\241\62M\225(\32\224\266h\320\224\266d"
+ "\230\244\244\313\60D\265R\244\0z\77\36\273x|R\66\15S\26%\203\62d\71\66\234\222\64Q\222"
+ "E\351)I\226(\11\5zv\30\273x\274\351\360\224E\325,\12\323\34\31v \212\263\250\30\315\3"
+ "zz\30\273x\274\361pHrD\213\342\60\223\303a\7r,\307\342\341\20z\177\32\273x\274\351\360"
+ "\224EJ\232$\303 f\351pMr \212\263P\32\1z\201\31\273x\274\361pH\242\222\24\226\222"
+ "r\224\15\207\64\207\222X\223t@z\227\36\272y\274\341pP\302\244\224%\303!\211\262(\31\246)"
+ "\211\42\251\22%\321\60(\0z\313\30\273x\274\71\230\16\207\234\20\246a\34\345@\224\3I\216\205\303"
+ "Az\326\36\273x|\311 %\265(\211\222,\311\302$J\322$\223\323\341\230\345@\22\16\7\1z"
+ "\331\34\273x\65&\215Z\0\226b\35"
+ "\273x\34C\24FY%\31N\251\22\15J\224\3\321pHJ\225\250\242U\244T\226d\36\273x\34"
+ "CV\252DI\224%R\262(a\26\15\247,\233\222\266(\222\262H\325\0\226\206 \273x\34C\222"
+ "F\311\240T\264D\234\222D\233\222Z\224\14\7)K\242A\211\263h\30\4\226\217 \273x\34c\226"
+ "(\303\220\64j\203R\213\222\344\220tJ\244dH\262$J\62\65\212\6\1\226\220\42\273x\34C\62"
+ "D\225\250\222\14\213\222&\245A\211\322$J\6E\211\302$Q\232\222(\21\207\10\226\250!\273x\34"
+ "CVR\206%*i\303\220\204IiY\242\244eH\222\245\224\264%Q\22eC\0\226\274\30\273x"
+ "\134Y<\134\264\60\31\6\255<\14Zy\70\207\303A\16\1\226\276\35\273x\334I\64DI\232\14C"
+ "\64eI)\214\206\251-I\206\245\251\30\345\300\1\226\304\37\273x|\345(\211\206\203\224%a\244d"
+ "I\64(\245$*\15K\226\204I\333\220\14\2\226\306\34\273x|I\16d\351pP\242\34\70hQ"
+ "\16\34\264(\35\16ZR\233\242\1\226\314\37\273x\134I\224&\215I\62,\203\22%\225a\351\224T"
+ "\206\245S\62(\221\224\14r\10\226\350\30\273x\34\17j\216\305\303)+%\235\42O\225NY)\213"
+ "\24\0\226\352\31\273x<\303\71\35\36CEI\224\34\35\356X\66\14:\26\15\27\0\226\366\31\273x"
+ "<\303\71\35\236\222R\70k\222\226I\303\220C\71\260c\32\0\226\367\30\273x<\303\71\35\36CE"
+ "I\224\64\36NYi\70e\245\341\2\226\373\30\273x<\303\71\35^\242J\62\234\262\322p\312J\303"
+ "\71L\207\1\227\0\31\273x<\303\71\35^\224DI\323\341 \346\300S%j\211Z\22\5\227\6\34"
+ "\273x<\303\71\35^\242\312\240\14Z\30.\203\230\205\311\60H\71\242\14\203\0\227\23\34\273x<\303"
+ "\71\35^\242J\62\15Q\16DC\62D\71\20\15\307(\33\262A\227\36\32\273x<\303\71\35\236\222"
+ "\322\260\14Q\61\32Na\24\15IT\325\242I\227\62\36\273x<\303\71\35\236\222\322 \15I\224H"
+ "\311\220\211\221\264\34\222Z\224\14\321\220\0\227\70\34\273x<\303\71\35\236\222\322p\220*Q\62(C"
+ "\322)\31\16Y)\213\42\5\227R\30\273x\274\361p\316\201C\16\244\303A\13\323a\15\323a\15#"
+ "\0\227Y\37\273x\134a\66,[%\33\222!\13\223d\70(Q%R\222!J\244\60*&\66\0"
+ "\227^\34\273x\234I\216\24\7e\20\223\34\251\16\311\220&\71R\34\224ALr\244\10\227`\34\273"
+ "x\134u\340 e\351p\220\322p\30\342$\34\224AL\302A\31\304$\4\227b\30\272y\34\17a"
+ "\216\304\303A*IC$\225\244!\222J\303;\22\227i\31\273x|\265\341\240\225\7\35\311\201C\30"
+ "\25\207!\7\322\341\240\246\0\227\215\35\273x<\265l\70(\215\311\226\206\331\360RJ\222A\211\262P"
+ "\32\244$\213\264\0\227\363\32\273x\274\361p\314r \11\207\203\16\17C\230\206\303\20\246\341\60D\0"
+ "\227\365\35\273x\134Y\70(a\226\14J\343\260d\71\20\15\253\26)\303\240i\351\260)\0\230\30\36"
+ "\273x|\311\60\211Y\224\14K\244\225\206C\222\205\311\240\224\262(\33\264\250\230\204\1\230^\36\273x"
+ "\34IeP\306\332pH\262d\32\226\266(\33\16I\26e\203RKj[\0\230o\42\273x<\203"
+ "\62$Y\224\15\312\220dI\224\14\312\220D\211\24)\311\220tJ\224aH\372\267\0\230u\31\273x"
+ "\34\17j\16\34\302\64\214\212Q\61*FJ\34\305\241$'\0\230\177\35\273x\134\331 \245\321\240\14"
+ "R\226)]\224.\303\322\224%\245$\13\265$\326\2\230\206\33\273x|\321\240\205\225(\224\206!\252"
+ "\305IeH\32\223\266\260%\214\262\0\230\221\37\273x|\321\240\24\263d\30\224R\66\14J-J\272"
+ "(-JE\252\224\302$\321\264\0\230\230!\273xuser_data;
const char *msg = string_get_cstr(p_toast_view->message);
+ mui_canvas_set_font(p_canvas, u8g2_font_wqy12_t_gb2312a);
if (p_toast_view->is_visible && string_size(p_toast_view->message) > 0) {
uint8_t mw = mui_canvas_get_width(p_canvas) - 16;
uint8_t th = mui_element_text_height(p_canvas, mw, msg);
diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv
index 29efa171..bcf47dbf 100644
--- a/fw/data/i18n.csv
+++ b/fw/data/i18n.csv
@@ -1,169 +1,172 @@
-CODE,en_US,zh_Hans,zh_TW,es_ES,hu_HU,de_DE,fr_FR,nl_NL,pt_BR,ja_JP,it_IT
-_L_ON,ON,开,開,SI,BE,AN,ACTIVÉ,AAN,LIGADO,オン,SI
-_L_OFF,OFF,关,關,NO,KI,AUS,DÉSACTIVÉ,UIT,DESLIGADO,オフ,NO
-_L_ON_F,[ON],[开],[開],[SI],[BE],[AN],[ACTIVÉ],[AAN],[LIGADO],[オン],[SI]
-_L_OFF_F,[OFF],[关],[關],[NO],[KI],[AUS],[DÉSACTIVÉ],[UIT],[DESLIGADO],[オフ],[NO]
-_L_BACK,Back,返回,返回,[Atrás],Vissza,[Zurück],Retour,Terug,Voltar,戻る,Indietro
-_L_ERR,Error,错误,錯誤,Error,Hiba,Fehler,Erreur,Fout,Erro,エラー,Errore
-_L_ERR_CODE,Error Code,错误码,錯誤碼,Código error,Hibakód,Fehlercode,Code d'Erreur,Foutcode,Código de Erro,エラーコード,Codice errore
-_L_APP_AMIIBO,Amiibo Emulator,Amiibo模拟器,Amiibo模擬器,Emulador de amiibo,Amiibo Emulátor,Amiibo-Emulator,Emulateur Amiibo,Amiibo-Emulator,Emulador de Amiibo,Amiiboエミュレータ,Emulatore Amiibo
-_L_APP_AMIIBOLINK,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink
-_L_APP_BLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE
-_L_APP_BLE_TITLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE
-_L_APP_PLAYER,Video Player,动画播放器,動畫播放器,Reproductor vídeo,Video Lejátszó,Videospieler,Lecteur Vidéo,Videospeler,Reprodutor de Vídeo,ビデオプレーヤー,Lettore video
-_L_APP_SET,Settings,系统设置,系統設定,Configuraciones,Beállítások,Einstellungen,Paramètres,Instellingen,Configurações,設定,Impostazioni
-_L_APP_SET_VERSION,Version,版本,版本,Versión,Verzió,Version,Version,Versie,Versão,バージョン,Versione
-_L_APP_SET_STORAGE_USED,Used,已用,已用,Usado,Használt,Belegt,Utilisé,Gebruikt,Usado,使用ストレージ,Usato
-_L_APP_SET_STORAGE,External Storage,外置存储,外置存儲,M. Flash,Külső Tároló,Speicher,Stockage Externe,Externe Opslag,Armazenamento Externo,外部ストレージ,Memoria esterna
-_L_APP_SET_OLED_CONTRAST,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED
-_L_APP_SET_OLED_CONTRAST_TITLE,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED
-_L_APP_SET_LCD_BACKLIGHT,Backlight,背光亮度,背光亮度,Brillo,Háttérvilágítás,Beleuchtung,Rétroéclairage,Achtergrondverlichting,Luz de Fundo,バックライト,Luminosità
-_L_APP_SET_LCD_BACKLIGHT_TITLE,Backlight Brightness,背光亮度,背光亮度,Brillo de fondo,Háttérvilágítás Fényerő,Helligkeit,Luminosité du Rétroéclairage,Helderheid Achtergrondverlichting,Brilho da Luz de Fundo,バックライトの明るさ,Luminosità schermo
-_L_APP_SET_ANIM,Menu Animation,动画效果,動畫效果,Animar menú,Menü Animáció,Menü-Animation,Animation du Menu,Menu-Animatie,Animação do Menu,メニュー アニメーション,Animazione menu
-_L_APP_SET_LIPO_BAT,LiPO Battery,LiPO电池,LiPO電池,Batería LiPO,LiPO Akkumulátor,LiPO-Batterie,Batterie LiPO,LiPO-Batterij,Bateria LiPO,LiPOバッテリー,Batteria LiPO
-_L_APP_SET_SHOW_MEM_USAGE,Memory Used,内存使用率,記憶體使用率,Mem. usada,Használt Memória,Speicheranzeige,Mémoire Utilisée,Gebruikt Geheugen,Memória Usada,使用メモリ,Memoria usata
-_L_APP_SET_HIBERNATE,Fast Wakeup,快速唤醒,快速喚醒,Hibernar,Gyors Ébresztés,Schnell-Wecken,Réveil Rapide,Snel Ontwaken,Despertar Rápido,高速起動,Risveglio rapido
-_L_APP_SET_SLEEP_TIMEOUT,Sleep Timeout,休眠时间,休眠時間,Dormir en:,Alvási Időkorlát,Schlaf-Timeout,Délai de mise en veille,Time-out Slaapstand,Tempo Limite de Suspensão,スリープタイムアウト,Timeout di sospensione
-_L_APP_SET_LANGUAGE,Language,系统语言,系統語言,Idioma,Nyelv,Sprache,Langue,Taal,Idioma,言語,Lingua
-_L_APP_SET_DFU,Firmware Update,固件更新,軟體升級,Actualizar firmware,Firmware Frissítés,Firmw.-Aktualisierung,Mise à Jour du Micrologiciel,Firmware Bijwerken,Atualização de Firmware,ファームウェア更新,Aggiornamento firmware
-_L_APP_SET_REBOOT,System Reboot,重启设备,重啟設備,Reiniciar,Rendszer Újraindítása,System-Neustart,Redémarrage du Système,Systeem Herstarten,Reinicialização do Sistema,システム再起動,Riavvio del sistema
-_L_APP_SET_RESET_DEFAULT,Reset Default Setting,重置默认配置,重置默認配置,Restablecer config.,Alapért. Beállítás Visszaállítása,Standardeinstellungen,Rétablir les Paramètres par Défaut,Terugzetten Naar Standaardwaarden,Restaurar Configurações Padrão,デフォルト設定に戻す,Ripristina impostazioni predefinite
-_L_APP_SET_RESET_DEFAULT_SUCCESS,Reset Success!,重置成功,重置成功,¡Configuración Restablecida!,Alapért. Beállítások Visszaállítása,Einstellungen zurückgesetzt!,Réinitialiser les Paramètres Par Défaut,Standaardinstellingen Herstellen,Redefinir a Configuração Padrão,設定を初期化,Ripristino riuscito!
-_L_APP_SET_RESET_DEFAULT_CONFIRM,Confirm Reset Settings?,确认重置默认设置?,确认重置默认设置?,,,Auf Standardeinstellungen zurücksetzen?,,,,,Conferma il ripristino delle impostazioni?
-_L_15S,15 Seconds,15秒,15秒,15 segundos,15 sec.,15 Sekunden,15 sec.,15 sec.,15 seg.,15秒,15 secondi
-_L_30S,30 Seconds,30秒,30秒,30 segundos,30 sec.,30 Sekunden,30 sec.,30 sec.,30 seg.,30秒,30 secondi
-_L_45S,45 Seconds,45秒,45秒,45 segundos,45 sec.,45 Sekunden,45 sec.,45 sec.,45 seg.,45秒,45 secondi
-_L_1MIN,1 Minute,1分钟,1分鐘,1 minuto,1 min.,1 Minute,1 min.,1 min.,1 min.,1分,1 minuto
-_L_2MIN,2 Minutes,2分钟,2分鐘,2 minutos,2 min.,2 Minuten,2 min.,2 min.,2 min.,2分,2 minuti
-_L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 min.,3 Min,3 min.,3 min.,3 min.,3分,3 minuti
-_L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Amiibo kulcs nincs betöltve,Schlüssel nicht gefunden,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない,Chiave Amiibo non caricata
-_L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Laden Sie die Datei key_retail.bin in das Stammverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。,Carica il file key_retail.bin nella directory root della memoria.
-_L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris (NOTE please feel free to simply change any entry as needed),Begrepen,Entendi,了解,Ho Capito
-_L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufällige Tag-Nummer,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化,Tag casuale
-_L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Autom. random.,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Casuale automatico
-_L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,QR-kód Megjelenítése,QR-Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示,Mostra codice QR
-_L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo..,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除,Elimina tag
-_L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Törlés Megerősítése?,Bestätigen Sie das\nLöschen %s?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか?,Conferma eliminazione %s\n?
-_L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],Vissza a Címke Részletkhez,Zurück zu Tag-Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る,[Torna ai dettagli del tag]
-_L_BACK_TO_FILE_LIST,Back to File List,返回文件列表,返回檔案清單,[Lista Archivos],Vissza a Fájl Listához,[Zurück zur Liste],Retour à La Liste Des Fichiers,Terug naar Bestandslijst,Voltar Para a Lista de Arquivos,ファイル一覧に戻る,[Torna alla lista dei file]
-_L_BACK_TO_MAIN_MENU,Back to Main Menu,返回主菜单,返回主選單,[Menú Principal],Vissza a Főmenübe,[Hauptmenü],Retour au Menu Principal,Terug naar Hoofdmenu,Voltar ao Menu Principal,メインメニューに戻る,[Torna al menu principale]
-_L_FORMAT,Format,格式化,格式化,Formatear..,"Formátum ",Formatieren,Format,Formatteren,Formatar,フォーマット,Formatta..
-_L_FORMAT_STORAGE,Format Storage,格式化存储,格式化儲存,Formatear mem. Flash,Formátum Tárolás,Speicher formatieren,Format de Stockage,Opslag Formatteren,Formatar Armazenamento,保存領域フォーマット,Formatta memoria
-_L_DELETE_ALL_DATA,This will delete all data. Confirm format?,将删除所有数据。\n确认格式化?,將刪除所有資料。\n確認格式化?,Se borrará todos los\ndatos.,Minden adatot töröl. Formázás megerősítése?,Alle Daten löschen?,Cette opération efface toutes les données. Confirmer le formatage?,Hierdoor worden alle gegevens gewist. Formatteren bevestigen?,Isso excluirá todos os dados. Confirmar a formatação?,これですべてのデータが削除されます。よろしいですか?,Questo cancellerà tutti i dati.\nConferma la formattazione?
-_L_DELETING_MESSAGE,Formatting ..,格式化中..,格式化中..,Formateando..,Formázás ..,Formatierung..,Formatage ..,Formatteren ..,Formatando ..,書式設定 ..,Formattazione in corso ..
-_L_MESSAGE,Message,提示,提示,Inicializar,Üzenet,Nachricht,Message,Bericht,Mensagem,メッセージ,Messaggio
-_L_CONFIRM,Confirm,确定,確定,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認,Conferma
-_L_CANCEL,Cancel,取消,取消,Cancelar,Megszüntet,Abbrechen,Annuler,Annuleren,Cancelar,キャンセル,Annulla
-_L_BACK_TO_LIST,Back List,返回列表,返回清單,[Voler a lista],Vissza a Listához,[Zurück zur Liste],Retour à La Liste,Terug naar Lijst,Voltar à Lista,バックリスト,[Torna alla lista]
-_L_NOT_MOUNTED,Not Mounted,未挂载,未掛載,No montado,Nincs Felszerelve,Speicher nicht ausgerüstet,Stockage non Monté,Niet Gekoppeld,Não Montado,ストレージがマウントされていません,Non montato
-_L_MOUNTED_LFS,===Mounted[LFS]===,===已挂载[LFS]===,===已掛載[LFS]===,===[LFS]Montado===,===Szerelt[LFS]===,===Speicher [LFS]===,===Monté[LFS]===,===Gekoppeld[LFS]===,===Montado[LFS]===,===ストレージマウント[LFS]===,===Montato[LFS]===
-_L_MOUNTED_FFS,===Mounted[FFS]===,===已挂载[FFS]===,===已掛載[FFS]===,===[FFS]Montado===,===Szerelt[FFS]===,===Speicher [FFS]===,===Monté[FFS]===,===Gekoppeld[FFS]===,===Montado[FFS]===,===ストレージマウント[FFS]===,===Montato[FFS]===
-_L_TOTAL_SPACE,Total,总空间,總空間,Capacidad,Össz.,Gesamt,Total,Totaal,Total,トータル容量,Totale
-_L_AVAILABLE_SPACE,Free,可用空间,可用空間,Libre,Ingyenes,Frei,Libre,Vrij,Livre,空き容量,Libero
-_L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo檔案,Este no es un archivo\namiibo válido,Ez nem Amiibo Fájl,Dies ist keine Amiibo-Datei,Ce n'est pas un fichier Amiibo,Dit is geen Amiibo-bestand,Este Não é um Arquivo Amiibo,これはAmiiboファイルではありません,Questo non è un file\nAmiibo valido
-_L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました,Errore nella lettura del file
-_L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名:,Nome cartella:
-_L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Amiibo Neve:,Amiibo-Name eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名:,Nome Amiibo:
-_L_DELETE,Delete,删除,刪除,Borrar,Töröl,Löschen,Supprimer,Verwijder,Excluir,削除,Elimina
-_L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください:,Nuovo nome:
-_L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力,Input non valido
-_L_CREATE_NEW_FOLDER,Create New Folder..,新建文件夹..,新建資料夾..,Crear carpeta..,Új Mappa Létrehozása..,Neuer Ordner..,Créer un Nouveau Dossier..,Nieuwe Map Maken..,Criar Nova Pasta..,新しいフォルダを作成..,Crea cartella..
-_L_CREATE_NEW_TAG,Create New Tag..,新建标签..,新建標籤..,Crear amiibo..,Új Címke Létrehozása..,Neuer Tag..,Créer une Nouvelle Étiquette..,Nieuwe Tag Aanmaken..,Criar Nova Tag..,新規タグ作成..,Crea Amiibo..
-_L_CREATE_NEW_TAG_BATCH,Batch Create New Tag..,批量创建标签..,批量創建標簽..,Crear amiibo en lote..,Kötegelt Új Címke Létrehozása..,Mehrere Tags..,Créer de Nouvelles Étiquettes Par Lot..,Nieuwe Tags in een Batch Aanmaken..,Criar Novas Tags em Lote..,新規タグの一括作成..,Crea Amiibo in serie..
-_L_INPUT_TAG_NUM,Input Tag Number:,输入标签数量:,輸入標簽數量:,¿Cuántos?,Beviteli Címke Száma:,Tag-Anzahl eingeben:,Saisir le Numéro de l'Étiquette:,Labelnummer Invoeren:,Número da Tag de Entrada:,タグ番号を入力:,Numero di tag:
-_L_CREATE_TOO_MANY_NUM,Only max %d tags created in a batch.,一次最多只能创建%d个标签,一次最多只能創建%d個標簽,Sólo se puede crear %d en lote,Max. létrehozható címke egy kötegben %d,Nur maximal %d Tags in einem Stapel erstellt.,Seulement %d balises maximum créées dans un lot.,Maximum %d tags aangemaakt in een batch.,Somente no máximo %d tags criadas em um lote.,1つのバッチで作成されるタグの数はは最大 %d までです。,Numero max di %d tag in serie.
-_L_CREATING_TAG_BATCH,Creating tag,创建标签,創建標簽,Creando,Címke létrehozása,Tag erstellen,Création d'une balise,Tag aanmaken,Criando tag,タグの作成,Creazione tag
-_L_CREATING_TAG_FAILED,Create tag %s failed!,写入 %s 标签失败,寫入 %s 標簽失敗,¡Error al crear %s!,Címke létrehozása %s sikertelen!,Erstellen von Tag %s fehlgeschlagen!,La création de la balise %s a échoué!,Aanmaken tag %s mislukt!,Falha ao criar a tag %s!,タグ %s の作成に失敗しました!,Creazione tag %s fallita!
-_L_RENAME,Rename,重命名,重新命名,Renombrar,Átnevezés,Umbenennen,Renommer,Hernoem,Renomear,名前の変更,Rinomina
-_L_OPEN_FOLDER_FAILED,Failed to open folder,打开文件夹失败,開啟資料夾失敗,Fallo al abrir carpeta,"Mappa megnyitása sikertelen ",Ordner konnte nicht geöffnet werden,Échec de l'ouverture du dossier,Kan map niet openen,Falha ao abrir a pasta,フォルダを開けませんでした,Errore nell'apertura della cartella
-_L_RENAME_FAILED,Failed to rename\nError code,重命名失败,重新命名失敗,Fallo al renombrar\nCódigo de error,Átnevezés Sikertelen\nHibakód,Umbenennen fehlgeschlagen\nFehlercode,Échec du renommage.\nCode d'Erreur,Hernoemen mislukt.\nFoutcode,Falha ao renomear\nCódigo de erro,名前の変更に失敗しました。\nエラーコード,Errore nella rinomina\nCodice errore
-_L_MAIN_RETURN,[RETURN],[返回],[返回],[Volver],[VISSZA],[Zurück],[RETOUR],[TERUG],[RETORNO],[リターン],[Torna indietro]
-_L_RANDOM_MODE_MANUAL,Randomize (Manual),随机模式(手动),隨機模式(手動),Aleatorio (Manual),Randomizálás (Kézi),Zufällig (Manuell),Randomiser (Manuel),Willekeurig (Handmatig),Randomizar (Manual),ランダム化 (手動),Casuale (Manuale)
-_L_RANDOM_MODE_AUTO,Randomize (Auto),随机模式(自动),隨機模式(自動),Aleatorio (Auto.),Randomizálás (Automat.),Zufällig (Automatisch),Randomiser (Automatique),Willekeurig (Automatisch),Randomizar (Automático),ランダム化(自動),Casuale (Automatico)
-_L_SEQUENCE_MODE,Sequential mode,按序模式,按序模式,Modo Secuencial,Szekvenciális Mód,Sequentieller Modus,Mode Séquentiel,Sequentiële Modus,Modo Sequencial,シーケンシャルモード,Modo sequenziale
-_L_READ_WRITE_MODE,Read-write mode,读写模式,讀寫模式,Modo Lectura/Escrit.,Olvasás-írás Mód,Lese-Schreib-Modus,Mode Lecture-Écriture,Lees-Schrijfmodus,Modo de Leitura e Gravação,読み書きモード,Modo lettura/scrittura
-_L_AMIIBOLINK_V1,V1,V1(历史版本),V1(歷史版本),V1,V1,V1,V1,V1,V1,V1,V1
-_L_AMIIBOLINK_V2,V2,V2(最新版本),V2(最新版本),V2,V2,V2,V2,V2,V2,V2,V2
-_L_AMILOOP,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop
-_L_MODE,Mode,模式,模式,Modo,Mód,Modus,Mode,Modus,Modo,モード,Modalità
-_L_AUTO_RANDOM,Auto Random.,自动随机,自動隨機,Aleat. autom.,Automat. Randomizálás,Autom. randomisieren,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Auto. casuale
-_L_COMPATIBLE_MODE,Compati. Mode,兼容模式,相容模式,Compatibil.,Kompatibilis Mód,Kompat. Modus,Mode Compatible,Compatibiliteitsmodus,Modo Compatível,互換モード,Mod. Compatibilità
-_L_TAG_DETAILS,[Tag Details],[标签详情],[標籤詳情],[Volver a Detalles],[Tag Részletek],[Zurück zu Details],[Détails de l'Étiquette],[Tag Details],[Detalhes da Tag],[タグ詳細],[Torna ai dettagli]
-_L_MAIN_MENU,[Main Menu],[主菜单],[主選單],[Menú Principal],[Főmenü],[Hauptmenü],[Menu Principal],[Hoofdmenu],[Menu Principal],[メインメニュー],[Menu principale]
-_L_MODE_RANDOM,Rand. (Manual),随机(手动),隨機(手動),Aleat. man.,Random (Kézi),Manuell,Aléatoire (Manuel),Willekeurig (Handmatig),Randomização (Manual),ランダム化(手動),Casuale man.
-_L_MODE_CYCLE,Sequential,按序,按序,Secuencial,Szekvenciális,Sequentiell,Séquentiel,Sequentieel,Sequencial,シーケンシャル,Sequenziale
-_L_MODE_NTAG,Read/Write,读写,讀寫,Lect./Escr.,Olvasás/Írás,Lese/Schreib,Lecture/Écriture,Lezen/Schrijven,Leitura/gravação,リード/ライト,Lett./Scritt.
-_L_MODE_RANDOM_AUTO_GEN,Rand. (Auto),随机(自动),隨機(自動),Aleat. auto.,Random (Automat.),Automatisch,Aléatoire (Automatique),Willekeurig (Automatisch),Randomização (Automática),ランダム化(自動),Auto. casuale
-_L_BLANK_TAG,Blank NFC tag,空标签,空標籤,Amiibo no asignado,Üres NFC Címke,Leerer NFC-Tag,Étiquette NFC vierge,Lege NFC-tag,Tag NFC em Branco,ブランクNFCタグ,Amiibo non assegnato
-_L_APP_AMIIDB,Amiibo Database,Amiibo数据库,Amiibo數據庫,Base datos amiibo,Amiibo Adatbázis,Amiibo-Datenbank,Base de Données Amiibo,Amiibo-Database,Banco de Dados Amiibo,Amiiboデータベース,Database Amiibo
-_L_APP_AMMIDB_BROWSER,Browser..,查看..,查看..,Explorar..,Böngésző..,Browser..,Naviguer..,Browser..,Navegador..,ブラウザ..,Esplora..
-_L_APP_AMIIDB_SEARCH,Search..,搜索..,搜索..,Buscar..,Keresés..,Suche..,Recherche..,Zoeken..,Pesquisar..,検索..,Cerca..
-_L_APP_AMIIDB_MY_FAVORITES,My Favorites..,我的收藏..,我的收藏..,Mis Favoritos..,Kedvencek..,Meine Favoriten..,Mes Favoris..,Mijn Favorieten..,Meus Favoritos..,お気に入り..,I miei preferiti..
-_L_APP_AMIIDB_MY_TAGS,My Amiibo..,我的数据..,我的數據..,Mis amiibo..,Amiiboim..,Meine Amiibo..,Mes Amiibo..,Mijn Amiibo..,Meu Amiibo..,マイAmiibo..,I miei Amiibo..
-_L_APP_AMIIDB_SETTINGS,Settings..,设置..,設置..,Configuraciones..,Beállítások..,Einstellungen..,Paramètres..,Instellingen..,Configurações..,設定..,Impostazioni..
-_L_APP_AMIIDB_EXIT,[Exit],[退出],[退出],[Menú Principal],[Kilépés],[Beenden],[Quitter],[Afsluiten],[Sair],[終了],[Menu principale]
-_L_APP_AMIIDB_BACK,[Back],[返回],[返回],[Volver],[Vissza],[Zurück],[Retour],[Terug],[Retornar],[戻る],[Torna indietro]
-_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY,Keys,密钥文件,密鑰文件,Llaves,Kulcsok,Schlüssel,Touches,Toetsen,Teclas,キー,Chiavi
-_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED,Loaded,已加载,已加載,Cargadas,Betöltve,geladen,Chargée,Geladen,Carregado,ロードされました,Caricate
-_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED,NOT Loaded,未加载,未加載,NO cargadas,NINCS betöltve,fehlend,NON Chargée,NIET Geladen,NÃO Carregadas,ロードされていません,NON caricate
-_L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Slot Száma,Steckplatznummer,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号,Num. slot
-_L_APP_AMIIDB_DETAIL_FAVORITE,Favorite..,收藏..,收藏..,Favorito..,Kedvenc..,Favorit..,Favorite..,Favoriet..,Favorito..,お気に入り..,Preferito..
-_L_APP_AMIIDB_DETAIL_SAVE_AS,Save As..,保存为..,保存爲..,Asignar en..,Mentés Másként..,Speichern unter..,Enregistrer Sous..,Opslaan Als..,Salvar como..,名前を付けて保存..,Assegna a..
-_L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情],[Volver a Detalles],[Vissza a Részletekhez],[Zurück zu Details],[Retour au Détail],[Terug naar Detail],[Voltar Para Detalhes],[詳細に戻る],[Torna ai dettagli]
-_L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る],[Torna alla lista]
-_L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する:,Cerca:
-_L_APP_AMIIDB_MORE,[More..],[更多],[更多],[Más..],[Bővebben..],[Mehr..],[Plus..],[Meer..],[Mais..],[もっと見る..],[Più..]
-_L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,,
-_L_APP_AMIIDB_SLOT_DELETE,Reset..,重置..,重置..,Borrar..,Újraindítás..,Zurücksetzen..,Réinitialiser..,Reset..,Reiniciar..,リセット..,Elimina..
-_L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma
-_L_APP_AMIIDB_CANCEL,Cancel,取消,取消,Cancelar,Törlés,Abbrechen,Annuler,Annuleren,Cancelar,キャンセルする,Annulla
-_L_APP_AMIIDB_TIPS,Confirm,提示,提示,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma
-_L_APP_AMIIDB_NEW,New..,新建..,新建..,Nueva..,Új..,Neu..,Nouveau..,Nieuw..,Novo..,新規..,Nuovo..
-_L_APP_AMIIDB_EMPTY,Empty..,清空..,清空..,Vaciar..,Üres..,Leeren..,Vider..,Leeg..,Vazio..,空..,Svuota..
-_L_APP_AMIIDB_DELETE,Delete..,删除..,删除..,Borrar..,Törlés..,Löschen..,Supprimer..,Verwijderen..,Excluir..,削除..,Cancella..
-_L_APP_AMIIDB_FAV_NEW_HEAD,New Fav. Folder:,新建收藏夹:,新建收藏夾:,Nueva Carp. Favoritos:,Új Kedvenc Mappa:,Neuer Favoriten-Ordner:,Nouveau Dossier Favori:,Nieuwe Favoriete Map:,Nova Pasta de Favoritos:,新しいお気に入りフォルダ:,Nuova cart. preferiti:
-_L_APP_AMIIDB_FAV_EMPTY_MSG,Empty Fav. Folder?,确认清空收藏夹?,確認清空收藏夾?,¿Vaciar Carp. Favoritos?,Üres Kedvenc Mappa?,Favoritenordner leeren?,Vider le Dossier Favori?,Favoriete Map Leegmaken?,Esvaziar Pasta de Favoritos?,お気に入りフォルダを空にしますか?,Svuotare cart. preferiti?
-_L_APP_AMIIDB_FAV_DELETE_MSG,Confirm Delete?,确认删除?,確認刪除?,¿Confirma borrado?,Törlés Megerősítése?,Favoritenordner löschen?,Confirmer la Suppression?,Verwijderen Bevestigen?,Confirmar Exclusão?,削除してよろしいですか?,Conferma cancellazione?
-_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder..,选择收藏夹..,選擇收藏夾..,Selec. carp. favoritos..,Kedvenc Mappa Kiválasztása..,Fav.-Ordner auswählen..,Sélectionner le Dossier Favori..,Selecteer Favoriete Map..,Selecionar Pasta Favorita..,お気に入りフォルダを選択..,Selez. cart. preferiti..
-_L_APP_AMIIDB_FAV_SUCCESS,Favorite Success,收藏成功,收藏成功,¡Favorito correcto!,Kedvenc Sikeres,"Favorit erstellt ",Succès du Favori,Favoriet Geslaagd,Favorito Bem-Sucedido,お気に入りに追加されました,Preferito aggiunto!
-_L_APP_AMIIDB_FAV_FAILED,Favorite Failed!,收藏失败,收藏失敗,¡Favorito fallido!,Kedvenc Sikertelen!,Favorit fehlgeschlagen!,Échec du Favori!,Favoriet Mislukt!,Favorito Falhou!,お気に入りに追加できませんでした!,Preferito non aggiunto!
-_L_APP_AMIIDB_SLOT_SAVE_SUCCESS,Save Success,保存成功,保存成功,Asignación correcta,Sikeresen Mentve,Speichern erfolgreich,Sauvegarder Succès,Opslaan Succes,Salvar Com Êxito,保存されました,Assegnazione corretta
-_L_APP_AMIIDB_SLOT_SAVE_FAILED,Save Failed!,保存失败,保存失敗,¡Asignación fallida!,Mentés Sikertelen!,Speichern fehlgeschlagen!,Sauvegarde Échouée!,Opslaan Mislukt!,Falha ao Salvar!,保存に失敗しました!,Assegnazione fallita!
-_L_APP_CHAMELEON,Card Emulator,卡模拟器,卡模擬器,Emular Etiqueta RFID,Kártya Emulátor,Karten-Emulator,Emulateur de Carte,Kaart Emulator,Emulador de Cartão,カードエミュレータ,Emula tag RFID
-_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL,Normal,正常,正常,Normal,Normál,Normal,Normal,Normaal,Normal,通常,Normale
-_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED,Deny,拒绝,拒絕,Negar,Tagadni,Verweigern,Refuser,Weigeren,Negar,拒否,Nega
-_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE,Ignore,忽略,忽略,Ignorar,Figyelmen Kívül Hagyni,Ignorieren,Ignorer,Negeren,Ignorar,無視,Ignora
-_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW,Cache,缓存,緩存,Caché,Elrejt,Cache,Zwischenspeicher,Cache,Cache,キャッシュ,Cache
-_L_APP_CHAMELEON_INITIALIZING,Initializing data ..,"初始化, 请稍后..","初始化, 請稍後..",Inicializando ambiente.\nPor favor espere..,Az adatok inicializálása ..,Daten initialisieren..,Initialisation des données ..,Gegevens Initialiseren ..,Inicialização de Dados ..,データの初期化 ..,Inizializzazione ambiente.\nPer favore attendi..
-_L_APP_CHAMELEON_CARD_SLOT,Slot,卡槽,卡槽,Ranura,Cella,Steckplatz,Fente,Slot,Slot,スロット,Slot
-_L_APP_CHAMELEON_CARD_NICK,Nick,卡名,卡名,Apodo,Becenév,Spitzname,Pseudo,Bijnaam,Apelido,ニックネーム,Nickname
-_L_APP_CHAMELEON_CARD_ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID
-_L_APP_CHAMELEON_CARD_TYPE,Type,卡类型,卡類型,Tipo,Típus,Typ,Type de Données,Type,Tipo de Dados,タイプ,Tipo
-_L_APP_CHAMELEON_CARD_DATA,Data..,卡数据..,卡數據..,Datos..,Adatok..,Daten..,Données..,Gegevens..,Dados..,データ..,Dati..
-_L_APP_CHAMELEON_CARD_ADVANCED,Advanced..,卡高级设置..,卡高級設置..,Avanzado..,Fejlett..,Erweitert..,Avancé..,Geavanceerd..,Avançado..,詳細設定..,Avanzato..
-_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings..,卡槽管理..,卡槽管理..,Configuración..,Cella Beállításai..,Steckplätze..,Paramètres des Emplacements..,Slot Instellingen..,Configurações de Slots..,スロット設定..,Impostazioni..
-_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num..,卡槽数量..,卡槽數量..,Cant. ranuras..,Cella Száma..,Steckplätze,Numéro d'Emplacement..,Slotnummer..,Número do Slot..,スロット番号..,Num. slot..
-_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS,Set Nick Success,设置卡名成功,設置卡名成功,Apodo cambiado.,Becenév Beállítása Sikeres,Spitzname erfolgreich,Définir le Pseudo Succès,Bijnaam Instellen Succes,Apelido Definido com Sucesso,ニックネームが設定されました,Cambio nickname riuscito.
-_L_APP_CHAMELEON_CARD_SET_NICK_FAILED,Set Nick Failed!,设置卡名失败,設置卡名失敗,¡Falló cambio apodo!,Becenév Beállítása Sikertelen!,Spitzname fehlgeschlagen!,Définir le Pseudo a Échoué!,Bijnaam Instellen Mislukt!,Falha ao Definir Apelido!,ニックネームが設定できませんでした!,Cambio nickname fallito!
-_L_APP_CHAMELEON_CARD_INPUT_NICK,Input Nick:,输入卡名:,輸入卡名:,Apodo:,Becenév Bevitele:,Spitzname eingeben:,Entrer le Pseudo:,Voer Bijnaam In:,Insira o Apelido:,ニックネームを入力してください:,Nickname:
-_L_APP_CHAMELEON_CARD_DATA_LOAD,Load..,加载..,加載..,Cargar..,Betöltés..,Laden..,Charger..,Laden..,Carregar..,ロード..,Carica..
-_L_APP_CHAMELEON_CARD_DATA_SAVE,Save..,导出..,導出..,Guardar..,Mentés..,Speichern..,Sauvegarder..,Opslaan..,Salvar..,保存..,Salva..
-_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory..,重置..,重置..,Inicializar..,Visszaállítás..,Zurücksetzen..,Rétablir Les Valeurs Par Défaut..,Terugzetten Naar Standaard..,Restaurar Padrões..,初期化..,Inizializza..
-_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS,Data Factory Success,卡片初始化成功,卡片初始化成功,¡Datos inicializados!,Adatok Visszaállítása Sikeres,Daten zurückgesetzt,Réinitialisation des Données Succès,Fabriekgegeven terugzetten Succesvol,Restauração de Dados Bem-Sucedida,初期化成功,Dati inizializzati!
-_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND,File Not Found,文件不存在,文件不存在,Archivo no encontrado,Fájl Nem Található,Datei nicht gefunden,Fichier Non Trouvé,Bestand Niet Gevonden,Arquivo Não Encontrado,ファイルが見つかりません,File non trovato
-_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH,File Size Not Match,文件大小不匹配,文件大小不匹配,Tamaño archivo incorrecto,Fájl Mérete Nem Egyezik,Dateigröße inkorrekt,La Taille du Fichier ne Correspond Pas,Bestandsgrootte Komt Niet Overeen,Tamanho do Arquivo Não Corresponde,ファイルサイズが一致しません,Dimensione file non corretta
-_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED,Load File Failed,读取文件失败,讀取文件失敗,Falla carga archivo,Fájl betöltése Sikertelen,Laden fehlgeschlagen,Échec du Chargement du Fichier,Bestand Laden Mislukt,Falha no Carregamento do Arquivo,ファイルの読み込み失敗,Caricamento file fallito
-_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS,Load File Success,加载卡片数据成功,加載卡片數據成功,Carga archivo correcta,Fájl Betöltése Sikeres,Laden erfolgreich,Chargement du Fichier Réussi,Laad Bestand Succesvol,Sucesso no Carregamento do Arquivo,ファイルの読み込みに成功,Caricamento file riuscito
-_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME,Input File Name:,输入文件名,輸入文件名,Nombre archivo:,Bemeneti Fájl Neve:,Dateinamen eingeben:,Saisir le Nom du Fichier:,Bestandsnaam Invoeren:,Nome do Arquivo de Entrada:,入力ファイル名:,Nome file:
-_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED,Save File Failed!,写入文件失败,寫入文件失敗,¡Error al guardar!,Fájl Mentése Sikertelen!,Speichern fehlgeschlagen!,Échec de l'Enregistrement du Fichier!,Bestand Opslaan Mislukt!,Falha ao Salvar o Arquivo!,ファイルの保存に失敗しました!,Errore nel salvataggio!
-_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS,Save File Success,导出卡片数据成功,導出卡片數據成功,Guardado correcto,Fájl Mentése Sikeres,Speichern erfolgreich,Sauvegarde du Fichier Réussie,Bestand Opslaan Gelukt,Arquivo Salvo com êxito,ファイルが保存されました,Salvataggio riuscito
-_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE,Custom Mode,自定义模式,自定義模式,Modo personali.,Egyéni Mód,Benutzermodus,Mode Personnalisé,Aangepaste Modus,Modo Personalizado,カスタムモード,Modalità personalizzata
-_L_APP_CHAMELEON_CARD_GEN1A_MODE,Gen1A Enabled,Gen1A模式,Gen1A模式,Gen1A habilitada,Gen1A Engedélyezve,Gen1A aktiv,Gen1A Activé,Gen1A Ingeschakeld,Gen1A Ativada,Gen1A 有効,Gen1A abilitata
-_L_APP_CHAMELEON_CARD_GENERATE_UID,Rand. UID,生成UID,生成UID,Generar nuevo UID,Véletlen UID,Randomisierte UID,Randomiser l'UID,Willekeurige UID,UID Aleatório,UIDのランダム化,Genera nuovo UID
-_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS,UID Generated,UID已生成,UID已生成,UID generado,Generált UID,UID generiert,UID Généré,UID Gegenereerd,UID Gerado,UID 生成,UID generato
-_L_APP_CHAMELEON_CARD_GEN2_MODE,Gen2 Enabled,Gen2模式,Gen2模式,Gen2 habilitada,Gen2 Engedélyezve,Gen2 aktiv,Gen2 Activé,Gen2 Ingeschakeld,Gen2 Ativado,Gen2 有効,Gen2 abilitata
-_L_APP_CHAMELEON_CARD_WRITE_MODE,Write Mode,写入模式,寫入模式,Modo escrit.,Írási Mód,Schreibmodus,Mode d'Écriture,Schrijfmodus,Modo de Gravação,書き込みモード,Modalità scrittura
-_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT,Invalid Input!,无效的输入!,無效的輸入!,¡Entrada inválida!,Érvénytelen bemenet!,Ungültige Eingabe!,Entrée Invalide!,Ongeldige Invoer!,Entrada Inválida!,無効な入力,Input non valido!
-_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM,Card type changed. \nFactory card data?,卡类型已修改\n重置卡数据?,卡類型已修改\n重置卡數據?,Tipo tarjeta modificado\n¿Inicializar tarjeta?,A kártya típusa megváltozott.\nGyári kártyaadatok?,Kartentyp geändert. \nKartendaten zurücksetzen?,Le Type de Carte a Été Modifié. \nRéinitialiser les Données de la Carte?,Kaarttype gewijzigd. \nGegevens terugzetten naar standaard?,O tipo de cartão foi alterado. \nRedefinir dados do cartão?,カードの種類が変更されました。\nカードデータを初期化しますか?,Tipo di carta modificato\nInizializzare carta?
+CODE,en_US,zh_Hans,zh_TW,es_ES,hu_HU,de_DE,fr_FR,nl_NL,pt_BR,ja_JP,it_IT,ru_RU
+_L_ON,ON,开,開,SI,BE,AN,ACTIVÉ,AAN,LIGADO,オン,SI,Включено
+_L_OFF,OFF,关,關,NO,KI,AUS,DÉSACTIVÉ,UIT,DESLIGADO,オフ,NO,Выключено
+_L_ON_F,[ON],[开],[開],[SI],[BE],[AN],[ACTIVÉ],[AAN],[LIGADO],[オン],[SI],[Вкл]
+_L_OFF_F,[OFF],[关],[關],[NO],[KI],[AUS],[DÉSACTIVÉ],[UIT],[DESLIGADO],[オフ],[NO],[Выкл]
+_L_BACK,Back,返回,返回,[Atrás],Vissza,Zurück,Retour,Terug,Voltar,戻る,Indietro,[Назад]
+_L_ERR,Error,错误,錯誤,Error,Hiba,Fehler,Erreur,Fout,Erro,エラー,Errore,Ошибка
+_L_ERR_CODE,Error Code,错误码,錯誤碼,Código error,Hibakód,Fehlercode,Code d'Erreur,Foutcode,Código de Erro,エラーコード,Codice errore,Код ошибки
+_L_APP_AMIIBO,Amiibo Emulator,Amiibo模拟器,Amiibo模擬器,Emulador de amiibo,Amiibo Emulátor,Amiibo Emulator,Emulateur Amiibo,Amiibo-Emulator,Emulador de Amiibo,Amiiboエミュレータ,Emulatore Amiibo,Эмулятор Amiibo
+_L_APP_AMIIBOLINK,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink
+_L_APP_BLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE,Передача файлов
+_L_APP_BLE_TITLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE,по Bluetooth
+_L_APP_PLAYER,Video Player,动画播放器,動畫播放器,Reproductor vídeo,Video Lejátszó,Videoplayer,Lecteur Vidéo,Videospeler,Reprodutor de Vídeo,ビデオプレーヤー,Lettore video,Видеоплеер
+_L_APP_SET,Settings,系统设置,系統設定,Configuraciones,Beállítások,Einstellungen,Paramètres,Instellingen,Configurações,設定,Impostazioni,Настройки
+_L_APP_SET_VERSION,Version,版本,版本,Versión,Verzió,Version,Version,Versie,Versão,バージョン,Versione,Версия
+_L_APP_SET_STORAGE_USED,Used,已用,已用,Usado,Használt,Belegt,Utilisé,Gebruikt,Usado,使用ストレージ,Usato,Занято
+_L_APP_SET_STORAGE,External Storage,外置存储,外置存儲,M. Flash,Külső Tároló,Externer Speicher,Stockage Externe,Externe Opslag,Armazenamento Externo,外部ストレージ,Memoria esterna,Накопитель
+_L_APP_SET_OLED_CONTRAST,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED,Контрастность
+_L_APP_SET_OLED_CONTRAST_TITLE,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED,Контраст OLED
+_L_APP_SET_LCD_BACKLIGHT,Backlight,背光亮度,背光亮度,Brillo,Háttérvilágítás,Beleuchtung,Rétroéclairage,Achtergrondverlichting,Luz de Fundo,バックライト,Luminosità,Подсветка
+_L_APP_SET_LCD_BACKLIGHT_TITLE,Backlight Brightness,背光亮度,背光亮度,Brillo de fondo,Háttérvilágítás Fényerő,Helligkeit,Luminosité du Rétroéclairage,Helderheid Achtergrondverlichting,Brilho da Luz de Fundo,バックライトの明るさ,Luminosità schermo,Яркость подсветки
+_L_APP_SET_ANIM,Menu Animation,动画效果,動畫效果,Animar menú,Menü Animáció,Menü Animation,Animation du Menu,Menu-Animatie,Animação do Menu,メニュー アニメーション,Animazione menu,Анимация меню
+_L_APP_SET_LIPO_BAT,LiPO Battery,LiPO电池,LiPO電池,Batería LiPO,LiPO Akkumulátor,LiPO Batterie,Batterie LiPO,LiPO-Batterij,Bateria LiPO,LiPOバッテリー,Batteria LiPO,Батарея LiPO
+_L_APP_SET_SHOW_MEM_USAGE,Memory Used,内存使用率,記憶體使用率,Mem. usada,Használt Memória,Speicheranzeige,Mémoire Utilisée,Gebruikt Geheugen,Memória Usada,使用メモリ,Memoria usata,Статус памяти
+_L_APP_SET_HIBERNATE,Fast Wakeup,快速唤醒,快速喚醒,Hibernar,Gyors Ébresztés,Schnelles Aufwachen,Réveil Rapide,Snel Ontwaken,Despertar Rápido,高速起動,Risveglio rapido,Гибернация
+_L_APP_SET_SLEEP_TIMEOUT,Sleep Timeout,休眠时间,休眠時間,Dormir en:,Alvási Időkorlát,Standby nach,Délai de mise en veille,Time-out Slaapstand,Tempo Limite de Suspensão,スリープタイムアウト,Timeout di sospensione,Таймаут сна
+_L_APP_SET_LANGUAGE,Language,系统语言,系統語言,Idioma,Nyelv,Sprache,Langue,Taal,Idioma,言語,Lingua,Язык
+_L_APP_SET_DFU,Firmware Update,固件更新,軟體升級,Actualizar firmware,Firmware Frissítés,Firmw. Aktualisierung,Mise à Jour du Micrologiciel,Firmware Bijwerken,Atualização de Firmware,ファームウェア更新,Aggiornamento firmware,Обновление ПО
+_L_APP_SET_REBOOT,System Reboot,重启设备,重啟設備,Reiniciar,Rendszer Újraindítása,System Neustart,Redémarrage du Système,Systeem Herstarten,Reinicialização do Sistema,システム再起動,Riavvio del sistema,Перезагрузка
+_L_APP_SET_RESET_DEFAULT,Reset Default Setting,重置默认配置,重置默認配置,Restablecer config.,Alapért. Beállítás Visszaállítása,Standardeinstellungen,Rétablir les Paramètres par Défaut,Terugzetten Naar Standaardwaarden,Restaurar Configurações Padrão,デフォルト設定に戻す,Ripristina impostazioni predefinite,Сброс настроек
+_L_APP_SET_RESET_DEFAULT_SUCCESS,Reset Success!,重置成功,重置成功,¡Configuración Restablecida!,Alapért. Beállítások Visszaállítása,Einstellungen zurückgesetzt!,Réinitialiser les Paramètres Par Défaut,Standaardinstellingen Herstellen,Redefinir a Configuração Padrão,設定を初期化,Ripristino riuscito!,Сброс выполнен
+_L_APP_SET_RESET_DEFAULT_CONFIRM,Confirm Reset Settings?,确认重置默认设置?,确认重置默认设置?,,,Auf Standardeinstellungen zurücksetzen?,,,,,Conferma il ripristino delle impostazioni?,Выполнить?
+_L_15S,15 Seconds,15秒,15秒,15 segundos,15 sec.,15 Sekunden,15 sec.,15 sec.,15 seg.,15秒,15 secondi,15 секунд
+_L_30S,30 Seconds,30秒,30秒,30 segundos,30 sec.,30 Sekunden,30 sec.,30 sec.,30 seg.,30秒,30 secondi,30 секунд
+_L_45S,45 Seconds,45秒,45秒,45 segundos,45 sec.,45 Sekunden,45 sec.,45 sec.,45 seg.,45秒,45 secondi,45 секунд
+_L_1MIN,1 Minute,1分钟,1分鐘,1 minuto,1 min.,1 Minute,1 min.,1 min.,1 min.,1分,1 minuto,1 минута
+_L_2MIN,2 Minutes,2分钟,2分鐘,2 minutos,2 min.,2 Minuten,2 min.,2 min.,2 min.,2分,2 minuti,2 минуты
+_L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 min.,3 Minuten,3 min.,3 min.,3 min.,3分,3 minuti,3 минуты
+_L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Amiibo kulcs nincs betöltve,Amiibo Schlüssel fehlt,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない,Chiave Amiibo non caricata,Отсутствует файл ключа
+_L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Platzieren Sie die Datei key_retail.bin im Hauptverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。,Carica il file key_retail.bin nella directory root della memoria.,Поместите key_retail.bin\n в корень накопителя
+_L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris,Begrepen,Entendi,了解,Ho Capito,[Понятно]
+_L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufällige UUID,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化,Tag casuale,Сгенерировать UUID
+_L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Zufällige UUID (Automatisch),Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Casuale automatico,Автогенерация
+_L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,QR-kód Megjelenítése,QR Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示,Mostra codice QR,QR-код
+_L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo...,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除,Elimina tag,Удалить тег
+_L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Törlés Megerősítése?,Löschen von %s bestätigen?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか?,Conferma eliminazione %s\n?,Удалить %s?
+_L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],Vissza a Címke Részletkhez,Zurück zu Tag Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る,[Torna ai dettagli del tag],[Назад к деталям]
+_L_BACK_TO_FILE_LIST,Back to File List,返回文件列表,返回檔案清單,[Lista Archivos],Vissza a Fájl Listához,Zurück zur Liste,Retour à La Liste Des Fichiers,Terug naar Bestandslijst,Voltar Para a Lista de Arquivos,ファイル一覧に戻る,[Torna alla lista dei file],[Назад к списку]
+_L_BACK_TO_MAIN_MENU,Back to Main Menu,返回主菜单,返回主選單,[Menú Principal],Vissza a Főmenübe,Hauptmenü,Retour au Menu Principal,Terug naar Hoofdmenu,Voltar ao Menu Principal,メインメニューに戻る,[Torna al menu principale],[В главное меню]
+_L_FORMAT,Format,格式化,格式化,Formatear...,Formátum ,Formatieren,Format,Formatteren,Formatar,フォーマット,Formatta...,Отформатировать
+_L_FORMAT_STORAGE,Format Storage,格式化存储,格式化儲存,Formatear mem. Flash,Formátum Tárolás,Speicher formatieren,Format de Stockage,Opslag Formatteren,Formatar Armazenamento,保存領域フォーマット,Formatta memoria,Форматирование
+_L_DELETE_ALL_DATA,This will delete all data. Confirm format?,将删除所有数据。\n确认格式化?,將刪除所有資料。\n確認格式化?,Se borrará todos los\ndatos.,Minden adatot töröl. Formázás megerősítése?,Alle Daten löschen?,Cette opération efface toutes les données. Confirmer le formatage?,Hierdoor worden alle gegevens gewist. Formatteren bevestigen?,Isso excluirá todos os dados. Confirmar a formatação?,これですべてのデータが削除されます。よろしいですか?,Questo cancellerà tutti i dati.\nConferma la formattazione?,Это удалит все данные.\nВыполнить?
+_L_DELETING_MESSAGE,Formatting ...,格式化中...,格式化中...,Formateando...,Formázás ...,Formatiere...,Formatage ...,Formatteren ...,Formatando ...,書式設定 ...,Formattazione in corso ...,Форматирование...
+_L_MESSAGE,Message,提示,提示,Inicializar,Üzenet,Meldung,Message,Bericht,Mensagem,メッセージ,Messaggio,Сообщение
+_L_CONFIRM,Confirm,确定,確定,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認,Conferma,Да
+_L_CANCEL,Cancel,取消,取消,Cancelar,Megszüntet,Abbrechen,Annuler,Annuleren,Cancelar,キャンセル,Annulla,Отмена
+_L_BACK_TO_LIST,Back List,返回列表,返回清單,[Voler a lista],Vissza a Listához,Zurück zur Liste,Retour à La Liste,Terug naar Lijst,Voltar à Lista,バックリスト,[Torna alla lista],[Назад к списку]
+_L_NOT_MOUNTED,Not Mounted,未挂载,未掛載,No montado,Nincs Felszerelve,Speicher nicht eingebunden,Stockage non Monté,Niet Gekoppeld,Não Montado,ストレージがマウントされていません,Non montato,==[Не подключён]==
+_L_MOUNTED_LFS,===Mounted[LFS]===,===已挂载[LFS]===,===已掛載[LFS]===,===[LFS]Montado===,===Szerelt[LFS]===,===Speicher [LFS]===,===Monté[LFS]===,===Gekoppeld[LFS]===,===Montado[LFS]===,===ストレージマウント[LFS]===,===Montato[LFS]===,==Подключён[LFS]==
+_L_MOUNTED_FFS,===Mounted[FFS]===,===已挂载[FFS]===,===已掛載[FFS]===,===[FFS]Montado===,===Szerelt[FFS]===,===Speicher [FFS]===,===Monté[FFS]===,===Gekoppeld[FFS]===,===Montado[FFS]===,===ストレージマウント[FFS]===,===Montato[FFS]===,==Подключён[FFS]==
+_L_TOTAL_SPACE,Total,总空间,總空間,Capacidad,Össz.,Gesamt,Total,Totaal,Total,トータル容量,Totale,Ёмкость
+_L_AVAILABLE_SPACE,Free,可用空间,可用空間,Libre,Ingyenes,Frei,Libre,Vrij,Livre,空き容量,Libero,Свободно
+_L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo檔案,Este no es un archivo\namiibo válido,Ez nem Amiibo Fájl,Keine Amiibo Datei,Ce n'est pas un fichier Amiibo,Dit is geen Amiibo-bestand,Este Não é um Arquivo Amiibo,これはAmiiboファイルではありません,Questo non è un file\nAmiibo valido,Этот файл не Amiibo
+_L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました,Errore nella lettura del file,Ошибка чтения файла
+_L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名:,Nome cartella:,Задайте имя папки:
+_L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Amiibo Neve:,Amiibo Namen eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名:,Nome Amiibo:,Задайте имя Amiibo:
+_L_DELETE_FILE,Delete %s ?,删除 %s ?,刪除 %s ?,¿Borrar el %s ?,Törli a %s fájlt?,%s löschen ?,Supprimer le %s ?,%s verwijderen ?,Excluir %s ?,%s を削除しますか ?,Eliminare %s ?,Удалить %s?
+_L_DELETE,Delete...,删除...,刪除...,Borrar...,Töröl...,Löschen...,Supprimer...,Verwijder...,Excluir...,削除...,Elimina...,Удалить...
+_L_TIPS,Confirm,提示,提示,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma,Внимание
+_L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください:,Nuovo nome:,Задайте новое имя:
+_L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力,Input non valido,Недопустимый ввод
+_L_CREATE_NEW_FOLDER,Create New Folder...,新建文件夹...,新建資料夾...,Crear carpeta...,Új Mappa Létrehozása...,Neuer Ordner...,Créer un Nouveau Dossier...,Nieuwe Map Maken...,Criar Nova Pasta...,新しいフォルダを作成...,Crea cartella...,Создать новую папку...
+_L_CREATE_NEW_TAG,Create New Tag...,新建标签...,新建標籤...,Crear amiibo...,Új Címke Létrehozása...,Neuer Tag...,Créer une Nouvelle Étiquette...,Nieuwe Tag Aanmaken...,Criar Nova Tag...,新規タグ作成...,Crea Amiibo...,Создать новый тег...
+_L_CREATE_NEW_TAG_BATCH,Batch Create New Tag...,批量创建标签...,批量創建標簽...,Crear amiibo en lote...,Kötegelt Új Címke Létrehozása...,Mehrere Tags erstellen...,Créer de Nouvelles Étiquettes Par Lot...,Nieuwe Tags in een Batch Aanmaken...,Criar Novas Tags em Lote...,新規タグの一括作成...,Crea Amiibo in serie...,Создать группу тегов...
+_L_INPUT_TAG_NUM,Input Tag Number:,输入标签数量:,輸入標簽數量:,¿Cuántos?,Beviteli Címke Száma:,Tag Anzahl eingeben:,Saisir le Numéro de l'Étiquette:,Labelnummer Invoeren:,Número da Tag de Entrada:,タグ番号を入力:,Numero di tag:,Задайте число тегов:
+_L_CREATE_TOO_MANY_NUM,Only max %d tags created in a batch.,一次最多只能创建%d个标签,一次最多只能創建%d個標簽,Sólo se puede crear %d en lote,Max. létrehozható címke egy kötegben %d,Sie können nur maximal %d Tags auf einmal erstellen.,Seulement %d balises maximum créées dans un lot.,Maximum %d tags aangemaakt in een batch.,Somente no máximo %d tags criadas em um lote.,1つのバッチで作成されるタグの数はは最大 %d までです。,Numero max di %d tag in serie.,За раз можно создать\n не более %d тегов
+_L_CREATING_TAG_BATCH,Creating tag,创建标签,創建標簽,Creando,Címke létrehozása,Tag erstellen,Création d'une balise,Tag aanmaken,Criando tag,タグの作成,Creazione tag,Создание тега
+_L_CREATING_TAG_FAILED,Create tag %s failed!,写入 %s 标签失败,寫入 %s 標簽失敗,¡Error al crear %s!,Címke létrehozása %s sikertelen!,Erstellen von Tag %s fehlgeschlagen!,La création de la balise %s a échoué!,Aanmaken tag %s mislukt!,Falha ao criar a tag %s!,タグ %s の作成に失敗しました!,Creazione tag %s fallita!,Ошибка создания тега %s
+_L_RENAME,Rename...,重命名...,重新命名...,Renombrar...,Átnevezés...,Umbenennen...,Renommer...,Hernoem...,Renomear...,名前の変更...,Rinomina...,Переименовать...
+_L_OPEN_FOLDER_FAILED,Failed to open folder,打开文件夹失败,開啟資料夾失敗,Fallo al abrir carpeta,Mappa megnyitása sikertelen ,Ordner konnte nicht geöffnet werden,Échec de l'ouverture du dossier,Kan map niet openen,Falha ao abrir a pasta,フォルダを開けませんでした,Errore nell'apertura della cartella,Ошибка открытия папки
+_L_RENAME_FAILED,Failed to rename\nError code,重命名失败,重新命名失敗,Fallo al renombrar\nCódigo de error,Átnevezés Sikertelen\nHibakód,Umbenennen fehlgeschlagen\nFehlercode,Échec du renommage.\nCode d'Erreur,Hernoemen mislukt.\nFoutcode,Falha ao renomear\nCódigo de erro,名前の変更に失敗しました。\nエラーコード,Errore nella rinomina\nCodice errore,Ошибка переименования
+_L_MAIN_RETURN,[RETURN],[返回],[返回],[Volver],[VISSZA],[Zurück],[RETOUR],[TERUG],[RETORNO],[リターン],[Torna indietro],[Назад]
+_L_RANDOM_MODE_MANUAL,Randomize (Manual),随机模式(手动),隨機模式(手動),Aleatorio (Manual),Randomizálás (Kézi),Zufällige UUID (Manuell),Randomiser (Manuel),Willekeurig (Handmatig),Randomizar (Manual),ランダム化 (手動),Casuale (Manuale),Ручная генерация UUID
+_L_RANDOM_MODE_AUTO,Randomize (Auto),随机模式(自动),隨機模式(自動),Aleatorio (Auto.),Randomizálás (Automat.),Zufällige UUID (Automatisch),Randomiser (Automatique),Willekeurig (Automatisch),Randomizar (Automático),ランダム化(自動),Casuale (Automatico),Автогенерация UUID
+_L_SEQUENCE_MODE,Sequential mode,按序模式,按序模式,Modo Secuencial,Szekvenciális Mód,Sequentieller Modus,Mode Séquentiel,Sequentiële Modus,Modo Sequencial,シーケンシャルモード,Modo sequenziale,Последовательный
+_L_READ_WRITE_MODE,Read-write mode,读写模式,讀寫模式,Modo Lectura/Escrit.,Olvasás-írás Mód,Lese-Schreibmodus,Mode Lecture-Écriture,Lees-Schrijfmodus,Modo de Leitura e Gravação,読み書きモード,Modo lettura/scrittura,Чтение-запись
+_L_AMIIBOLINK_V1,V1,V1(历史版本),V1(歷史版本),V1,V1,V1,V1,V1,V1,V1,V1,V1
+_L_AMIIBOLINK_V2,V2,V2(最新版本),V2(最新版本),V2,V2,V2,V2,V2,V2,V2,V2,V2
+_L_AMILOOP,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop
+_L_MODE,Mode,模式,模式,Modo,Mód,Modus,Mode,Modus,Modo,モード,Modalità,Режим
+_L_AUTO_RANDOM,Auto Random.,自动随机,自動隨機,Aleat. autom.,Automat. Randomizálás,Zufällige UUID (Automatisch),Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Auto. casuale,Автогенерация
+_L_COMPATIBLE_MODE,Compati. Mode,兼容模式,相容模式,Compatibil.,Kompatibilis Mód,Kompabilitäts Modus,Mode Compatible,Compatibiliteitsmodus,Modo Compatível,互換モード,Mod. Compatibilità,Совместимость
+_L_TAG_DETAILS,[Tag Details],[标签详情],[標籤詳情],[Volver a Detalles],[Tag Részletek],[Zurück zu Details],[Détails de l'Étiquette],[Tag Details],[Detalhes da Tag],[タグ詳細],[Torna ai dettagli],[Назад к деталям]
+_L_MAIN_MENU,[Main Menu],[主菜单],[主選單],[Menú Principal],[Főmenü],[Hauptmenü],[Menu Principal],[Hoofdmenu],[Menu Principal],[メインメニュー],[Menu principale],[В главное меню]
+_L_MODE_RANDOM,Rand. (Manual),随机(手动),隨機(手動),Aleat. man.,Random (Kézi),Zufällige UUID (Manuell),Aléatoire (Manuel),Willekeurig (Handmatig),Randomização (Manual),ランダム化(手動),Casuale man.,Ручная генерация
+_L_MODE_CYCLE,Sequential,按序,按序,Secuencial,Szekvenciális,Sequentiell,Séquentiel,Sequentieel,Sequencial,シーケンシャル,Sequenziale,Последовательный
+_L_MODE_NTAG,Read/Write,读写,讀寫,Lect./Escr.,Olvasás/Írás,Lesen/Schreiben,Lecture/Écriture,Lezen/Schrijven,Leitura/gravação,リード/ライト,Lett./Scritt.,Чтение-запись
+_L_MODE_RANDOM_AUTO_GEN,Rand. (Auto),随机(自动),隨機(自動),Aleat. auto.,Random (Automat.),Zufällig (Auto.),Aléatoire (Automatique),Willekeurig (Automatisch),Randomização (Automática),ランダム化(自動),Auto. casuale,Автогенерация
+_L_BLANK_TAG,Blank NFC tag,空标签,空標籤,Amiibo no asignado,Üres NFC Címke,Leerer NFC Tag,Étiquette NFC vierge,Lege NFC-tag,Tag NFC em Branco,ブランクNFCタグ,Amiibo non assegnato,Пустой тег
+_L_APP_AMIIDB,Amiibo Database,Amiibo数据库,Amiibo數據庫,Base datos amiibo,Amiibo Adatbázis,Amiibo Datenbank,Base de Données Amiibo,Amiibo-Database,Banco de Dados Amiibo,Amiiboデータベース,Database Amiibo,База данных Amiibo
+_L_APP_AMMIDB_BROWSER,Browser...,查看...,查看...,Explorar...,Böngésző...,Navigieren...,Naviguer...,Browser...,Navegador...,ブラウザ...,Esplora...,Обозреватель...
+_L_APP_AMIIDB_SEARCH,Search...,搜索...,搜索...,Buscar...,Keresés...,Suche...,Recherche...,Zoeken...,Pesquisar...,検索...,Cerca...,Поиск...
+_L_APP_AMIIDB_MY_FAVORITES,My Favorites...,我的收藏...,我的收藏...,Mis Favoritos...,Kedvencek...,Meine Favoriten...,Mes Favoris...,Mijn Favorieten...,Meus Favoritos...,お気に入り...,I miei preferiti...,Моё избранное...
+_L_APP_AMIIDB_MY_TAGS,My Amiibo...,我的数据...,我的數據...,Mis amiibo...,Amiiboim...,Meine Amiibo...,Mes Amiibo...,Mijn Amiibo...,Meu Amiibo...,マイAmiibo...,I miei Amiibo...,Мои Amiibo...
+_L_APP_AMIIDB_SETTINGS,Settings...,设置...,設置...,Configuraciones...,Beállítások...,Einstellungen...,Paramètres...,Instellingen...,Configurações...,設定...,Impostazioni...,Настройки...
+_L_APP_AMIIDB_EXIT,[Exit],[退出],[退出],[Menú Principal],[Kilépés],[Beenden],[Quitter],[Afsluiten],[Sair],[終了],[Menu principale],[Выход]
+_L_APP_AMIIDB_BACK,[Back],[返回],[返回],[Volver],[Vissza],[Zurück],[Retour],[Terug],[Retornar],[戻る],[Torna indietro],[Назад]
+_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY,Keys,密钥文件,密鑰文件,Llaves,Kulcsok,Schlüssel,Touches,Toetsen,Teclas,キー,Chiavi,Ключ
+_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED,Loaded,已加载,已加載,Cargadas,Betöltve,geladen,Chargée,Geladen,Carregado,ロードされました,Caricate,Загружен
+_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED,NOT Loaded,未加载,未加載,NO cargadas,NINCS betöltve,NICHT geladen,NON Chargée,NIET Geladen,NÃO Carregadas,ロードされていません,NON caricate,Отсутствует
+_L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Slot Száma,Steckplatzanzahl,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号,Num. slot,Число ячеек
+_L_APP_AMIIDB_DETAIL_FAVORITE,Favorite...,收藏...,收藏...,Favorito...,Kedvenc...,Favorit...,Favorite...,Favoriet...,Favorito...,お気に入り...,Preferito...,В избранное...
+_L_APP_AMIIDB_DETAIL_SAVE_AS,Save As...,保存为...,保存爲...,Asignar en...,Mentés Másként...,Speichern unter...,Enregistrer Sous...,Opslaan Als...,Salvar como...,名前を付けて保存...,Assegna a...,Сохранить как...
+_L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情],[Volver a Detalles],[Vissza a Részletekhez],[Zurück zu Details],[Retour au Détail],[Terug naar Detail],[Voltar Para Detalhes],[詳細に戻る],[Torna ai dettagli],[Назад к деталям]
+_L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る],[Torna alla lista],[Назад к списку]
+_L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する:,Cerca:,Поиск:
+_L_APP_AMIIDB_MORE,[More...],[更多],[更多],[Más...],[Bővebben...],[Mehr...],[Plus...],[Meer...],[Mais...],[もっと見る...],[Più...],[Дальше...]
+_L_APP_AMIIDB_MORE_MESSAGE,Too many results. Try a more specific search.,搜索结果过多,尝试增加搜索词。,搜索結果過多,嘗試增加搜索詞。,,,Zu viele Ergebnisse. Bitte Suche eingrenzen.,,,,,,Очень много совпадений.\nУточните запрос.
+_L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,,,<пустой тег>
+_L_APP_AMIIDB_SLOT_DELETE,Reset...,重置...,重置...,Borrar...,Újraindítás...,Zurücksetzen...,Réinitialiser...,Reset...,Reiniciar...,リセット...,Elimina...,Сброс...
+_L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma,Да
+_L_APP_AMIIDB_CANCEL,Cancel,取消,取消,Cancelar,Törlés,Abbrechen,Annuler,Annuleren,Cancelar,キャンセルする,Annulla,Отмена
+_L_APP_AMIIDB_TIPS,Confirm,提示,提示,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma,Внимание
+_L_APP_AMIIDB_NEW,New...,新建...,新建...,Nueva...,Új...,Neu...,Nouveau...,Nieuw...,Novo...,新規...,Nuovo...,Новая папка...
+_L_APP_AMIIDB_EMPTY,Empty...,清空...,清空...,Vaciar...,Üres...,Leeren...,Vider...,Leeg...,Vazio...,空...,Svuota...,Очистить...
+_L_APP_AMIIDB_DELETE,Delete...,删除...,删除...,Borrar...,Törlés...,Löschen...,Supprimer...,Verwijderen...,Excluir...,削除...,Cancella...,Удалить...
+_L_APP_AMIIDB_FAV_NEW_HEAD,New Fav. Folder:,新建收藏夹:,新建收藏夾:,Nueva Carp. Favoritos:,Új Kedvenc Mappa:,Neuer Fav.-Ordner:,Nouveau Dossier Favori:,Nieuwe Favoriete Map:,Nova Pasta de Favoritos:,新しいお気に入りフォルダ:,Nuova cart. preferiti:,Новая папка избранного:
+_L_APP_AMIIDB_FAV_EMPTY_MSG,Empty Fav. Folder?,确认清空收藏夹?,確認清空收藏夾?,¿Vaciar Carp. Favoritos?,Üres Kedvenc Mappa?,Fav.-Ordner leeren?,Vider le Dossier Favori?,Favoriete Map Leegmaken?,Esvaziar Pasta de Favoritos?,お気に入りフォルダを空にしますか?,Svuotare cart. preferiti?,Выполнить удаление\n избранного?
+_L_APP_AMIIDB_FAV_DELETE_MSG,Confirm Delete?,确认删除?,確認刪除?,¿Confirma borrado?,Törlés Megerősítése?,Löschen Bestätigen?,Confirmer la Suppression?,Verwijderen Bevestigen?,Confirmar Exclusão?,削除してよろしいですか?,Conferma cancellazione?,Выполнить удаление?
+_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder...,选择收藏夹...,選擇收藏夾...,Selec. carp. favoritos...,Kedvenc Mappa Kiválasztása...,Fav.-Ordner auswählen...,Sélectionner le Dossier Favori...,Selecteer Favoriete Map...,Selecionar Pasta Favorita...,お気に入りフォルダを選択...,Selez. cart. preferiti...,Выбрать папку избранного...
+_L_APP_AMIIDB_FAV_SUCCESS,Favorite Success,收藏成功,收藏成功,¡Favorito correcto!,Kedvenc Sikeres,Favorit erstellt ,Succès du Favori,Favoriet Geslaagd,Favorito Bem-Sucedido,お気に入りに追加されました,Preferito aggiunto!,Добавлено
+_L_APP_AMIIDB_FAV_FAILED,Favorite Failed!,收藏失败,收藏失敗,¡Favorito fallido!,Kedvenc Sikertelen!,Favorisieren fehlgeschlagen!,Échec du Favori!,Favoriet Mislukt!,Favorito Falhou!,お気に入りに追加できませんでした!,Preferito non aggiunto!,Ошибка добавления
+_L_APP_AMIIDB_SLOT_SAVE_SUCCESS,Save Success,保存成功,保存成功,Asignación correcta,Sikeresen Mentve,Speichern erfolgreich,Sauvegarder Succès,Opslaan Succes,Salvar Com Êxito,保存されました,Assegnazione corretta,Сохранено
+_L_APP_AMIIDB_SLOT_SAVE_FAILED,Save Failed!,保存失败,保存失敗,¡Asignación fallida!,Mentés Sikertelen!,Speichern fehlgeschlagen!,Sauvegarde Échouée!,Opslaan Mislukt!,Falha ao Salvar!,保存に失敗しました!,Assegnazione fallita!,Ошибка сохранения
+_L_APP_CHAMELEON,Card Emulator,卡模拟器,卡模擬器,Emular Etiqueta RFID,Kártya Emulátor,Karten Emulator,Emulateur de Carte,Kaart Emulator,Emulador de Cartão,カードエミュレータ,Emula tag RFID,Эмулятор карт
+_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL,Normal,正常,正常,Normal,Normál,Normal,Normal,Normaal,Normal,通常,Normale,Разрешена
+_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED,Deny,拒绝,拒絕,Negar,Tagadni,Verweigern,Refuser,Weigeren,Negar,拒否,Nega,Запрещена
+_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE,Ignore,忽略,忽略,Ignorar,Figyelmen Kívül Hagyni,Ignorieren,Ignorer,Negeren,Ignorar,無視,Ignora,Игнорируется
+_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW,Cache,缓存,緩存,Caché,Elrejt,Cache,Cache,Cache,Cache,キャッシュ,Cache,В кэш
+_L_APP_CHAMELEON_INITIALIZING,Initializing data ...,"初始化, 请稍后...","初始化, 請稍後...",Inicializando ambiente.\nPor favor espere...,Az adatok inicializálása ...,Daten initialisieren...,Initialisation des données ...,Gegevens Initialiseren ...,Inicialização de Dados ...,データの初期化 ...,Inizializzazione ambiente.\nPer favore attendi...,Инициализация...
+_L_APP_CHAMELEON_CARD_SLOT,Slot,卡槽,卡槽,Ranura,Cella,Steckplatz,Fente,Slot,Slot,スロット,Slot,Ячейка
+_L_APP_CHAMELEON_CARD_NICK,Nick,卡名,卡名,Apodo,Becenév,Spitzname,Pseudo,Bijnaam,Apelido,ニックネーム,Nickname,Название
+_L_APP_CHAMELEON_CARD_ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID
+_L_APP_CHAMELEON_CARD_TYPE,Type,卡类型,卡類型,Tipo,Típus,Typ,Type de Données,Type,Tipo de Dados,タイプ,Tipo,Тип
+_L_APP_CHAMELEON_CARD_DATA,Data...,卡数据...,卡數據...,Datos...,Adatok...,Daten...,Données...,Gegevens...,Dados...,データ...,Dati...,Данные...
+_L_APP_CHAMELEON_CARD_ADVANCED,Advanced...,卡高级设置...,卡高級設置...,Avanzado...,Fejlett...,Erweitert...,Avancé...,Geavanceerd...,Avançado...,詳細設定...,Avanzato...,Дополнительно...
+_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings...,卡槽管理...,卡槽管理...,Configuración...,Cella Beállításai...,Steckplatz Einstellungen...,Paramètres des Emplacements...,Slot Instellingen...,Configurações de Slots...,スロット設定...,Impostazioni...,Управление ячейками...
+_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num...,卡槽数量...,卡槽數量...,Cant. ranuras...,Cella Száma...,Steckplatz Nummer,Numéro d'Emplacement...,Slotnummer...,Número do Slot...,スロット番号...,Num. slot...,Число ячеек...
+_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS,Set Nick Success,设置卡名成功,設置卡名成功,Apodo cambiado.,Becenév Beállítása Sikeres,Spitzname erfolgreich gesetzt,Définir le Pseudo Succès,Bijnaam Instellen Succes,Apelido Definido com Sucesso,ニックネームが設定されました,Cambio nickname riuscito.,Название задано
+_L_APP_CHAMELEON_CARD_SET_NICK_FAILED,Set Nick Failed!,设置卡名失败,設置卡名失敗,¡Falló cambio apodo!,Becenév Beállítása Sikertelen!,Spitzname setzen fehlgeschlagen!,Définir le Pseudo a Échoué!,Bijnaam Instellen Mislukt!,Falha ao Definir Apelido!,ニックネームが設定できませんでした!,Cambio nickname fallito!,Недопустимое название
+_L_APP_CHAMELEON_CARD_INPUT_NICK,Input Nick:,输入卡名:,輸入卡名:,Apodo:,Becenév Bevitele:,Spitznamen eingeben:,Entrer le Pseudo:,Voer Bijnaam In:,Insira o Apelido:,ニックネームを入力してください:,Nickname:,Задайте название карты:
+_L_APP_CHAMELEON_CARD_DATA_LOAD,Load...,加载...,加載...,Cargar...,Betöltés...,Laden...,Charger...,Laden...,Carregar...,ロード...,Carica...,Загрузка...
+_L_APP_CHAMELEON_CARD_DATA_SAVE,Save...,导出...,導出...,Guardar...,Mentés...,Speichern...,Sauvegarder...,Opslaan...,Salvar...,保存...,Salva...,Сохранение...
+_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory...,重置...,重置...,Inicializar...,Visszaállítás...,Zurücksetzen...,Rétablir Les Valeurs Par Défaut...,Terugzetten Naar Standaard...,Restaurar Padrões...,初期化...,Inizializza...,Сброс...
+_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS,Data Factory Success,卡片初始化成功,卡片初始化成功,¡Datos inicializados!,Adatok Visszaállítása Sikeres,Daten zurückgesetzt,Réinitialisation des Données Succès,Fabriekgegeven terugzetten Succesvol,Restauração de Dados Bem-Sucedida,初期化成功,Dati inizializzati!,Данные сброшены
+_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND,File Not Found,文件不存在,文件不存在,Archivo no encontrado,Fájl Nem Található,Datei nicht gefunden,Fichier Non Trouvé,Bestand Niet Gevonden,Arquivo Não Encontrado,ファイルが見つかりません,File non trovato,Файл не обнаружен
+_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH,File Size Not Match,文件大小不匹配,文件大小不匹配,Tamaño archivo incorrecto,Fájl Mérete Nem Egyezik,Dateigröße stimmt nicht überein,La Taille du Fichier ne Correspond Pas,Bestandsgrootte Komt Niet Overeen,Tamanho do Arquivo Não Corresponde,ファイルサイズが一致しません,Dimensione file non corretta,Файл несоразмерен
+_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED,Load File Failed,读取文件失败,讀取文件失敗,Falla carga archivo,Fájl betöltése Sikertelen,Laden der Datei fehlgeschlagen,Échec du Chargement du Fichier,Bestand Laden Mislukt,Falha no Carregamento do Arquivo,ファイルの読み込み失敗,Caricamento file fallito,Ошибка загрузки файла
+_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS,Load File Success,加载卡片数据成功,加載卡片數據成功,Carga archivo correcta,Fájl Betöltése Sikeres,Datei erfolgreich geladen,Chargement du Fichier Réussi,Laad Bestand Succesvol,Sucesso no Carregamento do Arquivo,ファイルの読み込みに成功,Caricamento file riuscito,Данные загружены
+_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME,Input File Name:,输入文件名,輸入文件名,Nombre archivo:,Bemeneti Fájl Neve:,Datei Namen eingeben:,Saisir le Nom du Fichier:,Bestandsnaam Invoeren:,Nome do Arquivo de Entrada:,入力ファイル名:,Nome file:,Задайте имя файла:
+_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED,Save File Failed!,写入文件失败,寫入文件失敗,¡Error al guardar!,Fájl Mentése Sikertelen!,Datei speichern fehlgeschlagen!,Échec de l'Enregistrement du Fichier!,Bestand Opslaan Mislukt!,Falha ao Salvar o Arquivo!,ファイルの保存に失敗しました!,Errore nel salvataggio!,Ошибка сохранения файла
+_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS,Save File Success,导出卡片数据成功,導出卡片數據成功,Guardado correcto,Fájl Mentése Sikeres,Datei erfolgreich gespeichert,Sauvegarde du Fichier Réussie,Bestand Opslaan Gelukt,Arquivo Salvo com êxito,ファイルが保存されました,Salvataggio riuscito,Данные сохранены
+_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE,Custom Mode,自定义模式,自定義模式,Modo personali.,Egyéni Mód,Benutzerdefinierter Modus,Mode Personnalisé,Aangepaste Modus,Modo Personalizado,カスタムモード,Modalità personalizzata,Заказной режим
+_L_APP_CHAMELEON_CARD_GEN1A_MODE,Gen1A Enabled,Gen1A模式,Gen1A模式,Gen1A habilitada,Gen1A Engedélyezve,Gen1A aktiv,Gen1A Activé,Gen1A Ingeschakeld,Gen1A Ativada,Gen1A 有効,Gen1A abilitata,Gen1A
+_L_APP_CHAMELEON_CARD_GENERATE_UID,Rand. UID,生成UID,生成UID,Generar nuevo UID,Véletlen UID,Zufällige UID,Randomiser l'UID,Willekeurige UID,UID Aleatório,UIDのランダム化,Genera nuovo UID,Сгенерировать UID
+_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS,UID Generated,UID已生成,UID已生成,UID generado,Generált UID,UID generiert,UID Généré,UID Gegenereerd,UID Gerado,UID 生成,UID generato,UID сгенерирован
+_L_APP_CHAMELEON_CARD_GEN2_MODE,Gen2 Enabled,Gen2模式,Gen2模式,Gen2 habilitada,Gen2 Engedélyezve,Gen2 aktiv,Gen2 Activé,Gen2 Ingeschakeld,Gen2 Ativado,Gen2 有効,Gen2 abilitata,Gen2
+_L_APP_CHAMELEON_CARD_WRITE_MODE,Write Mode,写入模式,寫入模式,Modo escrit.,Írási Mód,Schreibmodus,Mode d'Écriture,Schrijfmodus,Modo de Gravação,書き込みモード,Modalità scrittura,Запись
+_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT,Invalid Input!,无效的输入!,無效的輸入!,¡Entrada inválida!,Érvénytelen bemenet!,Ungültige Eingabe!,Entrée Invalide!,Ongeldige Invoer!,Entrada Inválida!,無効な入力,Input non valido!,Недопустимый ввод
+_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM,Card type changed. \nFactory card data?,卡类型已修改\n重置卡数据?,卡類型已修改\n重置卡數據?,Tipo tarjeta modificado\n¿Inicializar tarjeta?,A kártya típusa megváltozott.\nGyári kártyaadatok?,Kartentyp geändert. \nKartendaten zurücksetzen?,Le Type de Carte a Été Modifié. \nRéinitialiser les Données de la Carte?,Kaarttype gewijzigd. \nGegevens terugzetten naar standaard?,O tipo de cartão foi alterado. \nRedefinir dados do cartão?,カードの種類が変更されました。\nカードデータを初期化しますか?,Tipo di carta modificato\nInizializzare carta?,Тип карты изменен.\nСбросить данные карты?
_L_APP_READER,NFC Reader,读卡器,读卡器,,,,,,,,
_L_APP_READER_SCANNING,Dicovering Tag...,请靠近卡片...,,,,,,,,,
\ No newline at end of file
diff --git a/fw/data/wenquanyi_9pt_u8g2.bdf b/fw/data/wenquanyi_9pt_u8g2.bdf
index dcf50da0..5dac36f4 100644
--- a/fw/data/wenquanyi_9pt_u8g2.bdf
+++ b/fw/data/wenquanyi_9pt_u8g2.bdf
@@ -11418,1045 +11418,954 @@ BITMAP
ENDCHAR
STARTCHAR afii10023
ENCODING 1025
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 11 2 -1
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 10 0 0
BITMAP
-44
+50
00
-FE
-42
-40
-48
-78
-48
-40
-42
-FE
+F8
+80
+80
+F8
+80
+80
+80
+F8
ENDCHAR
STARTCHAR afii10017
ENCODING 1040
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-0800
-0800
-1400
-1400
-2200
-2200
-3E00
-4100
-4100
-E380
+38
+48
+48
+88
+88
+F8
+88
+88
ENDCHAR
STARTCHAR afii10018
ENCODING 1041
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-FE
-42
-40
-40
-78
-44
-42
-42
-44
F8
+80
+80
+F0
+88
+88
+88
+F0
ENDCHAR
STARTCHAR afii10019
ENCODING 1042
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-F8
-44
-42
-44
-78
-44
-42
-42
-44
-F8
+F0
+88
+88
+F0
+88
+88
+88
+F0
ENDCHAR
STARTCHAR afii10020
ENCODING 1043
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-FC
-44
-42
-40
-40
-40
-40
-40
-40
-E0
+F8
+80
+80
+80
+80
+80
+80
+80
ENDCHAR
STARTCHAR afii10021
ENCODING 1044
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 7 9 0 -1
BITMAP
-3F80
-1200
-1200
-1200
-1200
-1200
-2200
-4200
-FF80
-8080
+3C
+24
+24
+24
+24
+44
+44
+FE
+82
ENDCHAR
STARTCHAR afii10022
ENCODING 1045
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-FE
-41
-40
-44
-7C
-44
-40
-41
-41
-FE
+F8
+80
+80
+F8
+80
+80
+80
+F8
ENDCHAR
STARTCHAR afii10024
ENCODING 1046
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 7 8 0 0
BITMAP
-9C80
-4900
-4900
-2A00
-1C00
-2A00
-4A00
-4900
-4900
-DD80
+92
+92
+54
+38
+54
+54
+92
+92
ENDCHAR
STARTCHAR afii10025
ENCODING 1047
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-58
-64
-44
-04
-18
-04
-02
-82
-C4
-B8
+70
+88
+08
+30
+08
+08
+88
+70
ENDCHAR
STARTCHAR afii10026
ENCODING 1048
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-E3
-46
-4A
-4A
-52
-52
-62
-62
-42
-E7
+88
+88
+88
+98
+A8
+A8
+C8
+88
ENDCHAR
STARTCHAR afii10027
ENCODING 1049
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 11 0 0
BITMAP
-24
-18
-E7
-4A
-4A
-52
-62
-62
-42
-E7
+50
+20
+00
+88
+88
+88
+98
+A8
+A8
+C8
+88
ENDCHAR
STARTCHAR afii10028
ENCODING 1050
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-E2
-45
-48
-50
-60
-50
-48
-44
-45
-E2
+88
+90
+A0
+E0
+90
+90
+88
+88
ENDCHAR
STARTCHAR afii10029
ENCODING 1051
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-3F80
-0900
-0900
-0900
-0900
-0900
-1100
-1100
-A100
-4380
+38
+48
+48
+48
+48
+48
+48
+88
ENDCHAR
STARTCHAR afii10030
ENCODING 1052
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 11 10 0 0
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 7 8 0 0
BITMAP
-C060
-60C0
-60C0
-5140
-5140
-4A40
-4A40
-4440
-4440
-E0E0
+82
+C6
+C6
+AA
+AA
+92
+92
+82
ENDCHAR
STARTCHAR afii10031
ENCODING 1053
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-E380
-4100
-4100
-4100
-7F00
-4100
-4100
-4100
-4100
-E380
+88
+88
+88
+F8
+88
+88
+88
+88
ENDCHAR
STARTCHAR afii10032
ENCODING 1054
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-1C00
-2200
-4100
-8080
-8080
-8080
-8080
-4100
-2200
-1C00
+70
+88
+88
+88
+88
+88
+88
+70
ENDCHAR
STARTCHAR afii10033
ENCODING 1055
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-FF
-42
-42
-42
-42
-42
-42
-42
-42
-E7
+F8
+88
+88
+88
+88
+88
+88
+88
ENDCHAR
STARTCHAR afii10034
ENCODING 1056
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-F8
-44
-42
-42
-44
-78
-40
-40
-40
-E0
+F0
+88
+88
+F0
+80
+80
+80
+80
ENDCHAR
STARTCHAR afii10035
ENCODING 1057
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-1D
-23
-41
+70
+88
80
80
80
80
-41
-22
-1C
+88
+70
ENDCHAR
STARTCHAR afii10036
ENCODING 1058
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-FF80
-8880
-8880
-0800
-0800
-0800
-0800
-0800
-0800
-1C00
+F8
+20
+20
+20
+20
+20
+20
+20
ENDCHAR
STARTCHAR afii10037
ENCODING 1059
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-E380
-4100
-2200
-2200
-1400
-1400
-0800
-0800
-4800
-3000
+88
+88
+88
+88
+88
+78
+08
+F0
ENDCHAR
STARTCHAR afii10038
ENCODING 1060
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 7 8 0 0
BITMAP
-1C00
-0800
-3E00
-4900
-8880
-8880
-4900
-3E00
-0800
-1C00
+10
+7C
+92
+92
+92
+92
+7C
+10
ENDCHAR
STARTCHAR afii10039
ENCODING 1061
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-E380
-4100
-2200
-1400
-0800
-0800
-1400
-2200
-4100
-E380
+88
+88
+50
+20
+50
+50
+88
+88
ENDCHAR
STARTCHAR afii10040
ENCODING 1062
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 583 0
+DWIDTH 7 0
+BBX 6 9 0 -1
BITMAP
-E700
-4200
-4200
-4200
-4200
-4200
-4200
-4200
-FF80
-0080
+88
+88
+88
+88
+88
+88
+88
+FC
+04
ENDCHAR
STARTCHAR afii10041
ENCODING 1063
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 10 1 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-E7
-42
-42
-42
-42
-26
-1A
-02
-02
-07
+88
+88
+88
+88
+78
+08
+08
+08
ENDCHAR
STARTCHAR afii10042
ENCODING 1064
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 11 10 0 0
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 7 8 0 0
BITMAP
-EEE0
-4440
-4440
-4440
-4440
-4440
-4440
-4440
-4440
-FFE0
+92
+92
+92
+92
+92
+92
+92
+FE
ENDCHAR
STARTCHAR afii10043
ENCODING 1065
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 11 10 0 0
+SWIDTH 750 0
+DWIDTH 9 0
+BBX 8 9 0 -1
BITMAP
-EEE0
-4440
-4440
-4440
-4440
-4440
-4440
-4440
-FFE0
-0020
+92
+92
+92
+92
+92
+92
+92
+FF
+01
ENDCHAR
STARTCHAR afii10044
ENCODING 1066
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 7 8 0 0
BITMAP
-7000
-9000
-1000
-1000
-1E00
-1100
-1080
-1080
-1100
-3E00
+E0
+20
+20
+3C
+22
+22
+22
+3C
ENDCHAR
STARTCHAR afii10045
ENCODING 1067
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 10 1 0
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 7 8 0 0
BITMAP
-C380
-4100
-4100
-4100
-7100
-4900
-4500
-4500
-4900
-F380
+82
+82
+82
+F2
+8A
+8A
+8A
+F2
ENDCHAR
STARTCHAR afii10046
ENCODING 1068
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-E0
-40
-40
-78
-44
-42
-42
-42
-44
-F8
+80
+80
+80
+F0
+88
+88
+88
+F0
ENDCHAR
STARTCHAR afii10047
ENCODING 1069
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-B8
-C4
-82
-02
-02
-1E
-02
-82
-44
-38
+70
+88
+08
+78
+08
+08
+88
+70
ENDCHAR
STARTCHAR afii10048
ENCODING 1070
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 10 10 1 0
+SWIDTH 583 0
+DWIDTH 7 0
+BBX 6 8 0 0
BITMAP
-E300
-4480
-4840
-4840
-7840
-4840
-4840
-4840
-4480
-E300
+98
+A4
+A4
+E4
+A4
+A4
+A4
+98
ENDCHAR
STARTCHAR afii10049
ENCODING 1071
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 0
BITMAP
-3F
-42
-42
-42
-3E
-12
-22
-22
-A2
-47
+78
+88
+88
+78
+48
+48
+88
+88
ENDCHAR
STARTCHAR afii10065
ENCODING 1072
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 6 7 3 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-30
-48
-38
-48
-88
+60
+10
+70
+90
90
-6C
+70
ENDCHAR
STARTCHAR afii10066
ENCODING 1073
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 6 10 3 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 9 0 0
BITMAP
-0C
-30
-40
+10
+60
80
-B0
-C8
-84
-84
-48
-30
+E0
+90
+90
+90
+90
+60
ENDCHAR
STARTCHAR afii10067
ENCODING 1074
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 6 7 3 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-F8
-44
-44
-78
-44
-44
-F8
+E0
+90
+E0
+90
+90
+E0
ENDCHAR
STARTCHAR afii10068
ENCODING 1075
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 6 7 3 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-F8
-44
-40
-40
-40
-40
-E0
+F0
+80
+80
+80
+80
+80
ENDCHAR
STARTCHAR afii10069
ENCODING 1076
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 8 1 0
+SWIDTH 583 0
+DWIDTH 7 0
+BBX 6 7 0 -1
BITMAP
-3F
-12
-12
-12
-22
-22
-FF
-81
+38
+28
+28
+28
+48
+FC
+84
ENDCHAR
STARTCHAR afii10070
ENCODING 1077
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 6 7 3 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-30
-48
-84
-FC
+60
+90
+F0
80
-44
-38
+90
+60
ENDCHAR
STARTCHAR afii10072
ENCODING 1078
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 7 1 0
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 7 6 0 0
BITMAP
-DD80
-2A00
-2A00
-1C00
-2A00
-4900
-DD80
+92
+54
+38
+54
+92
+92
ENDCHAR
STARTCHAR afii10073
ENCODING 1079
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 6 7 3 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-38
-C4
-04
-38
-84
-84
-78
+60
+90
+20
+10
+90
+60
ENDCHAR
STARTCHAR afii10074
ENCODING 1080
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 7 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 6 0 0
BITMAP
-E7
-46
-4A
-52
-62
-42
-E7
+88
+98
+A8
+A8
+C8
+88
ENDCHAR
STARTCHAR afii10075
ENCODING 1081
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 10 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 9 0 0
BITMAP
-24
-18
+50
+20
00
-E7
-46
-4A
-52
-62
-42
-E7
+88
+98
+A8
+A8
+C8
+88
ENDCHAR
STARTCHAR afii10076
ENCODING 1082
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 7 2 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-E4
-4A
-50
-60
-50
-4A
-E4
+90
+A0
+C0
+A0
+90
+90
ENDCHAR
STARTCHAR afii10077
ENCODING 1083
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 7 2 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-3E
-14
-14
-14
-24
-A4
-4E
+70
+50
+50
+50
+50
+90
ENDCHAR
STARTCHAR afii10078
ENCODING 1084
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 7 1 0
+SWIDTH 583 0
+DWIDTH 7 0
+BBX 6 6 0 0
BITMAP
-C180
-6300
-6300
-5500
-5500
-4900
-EB80
+84
+CC
+CC
+B4
+B4
+84
ENDCHAR
STARTCHAR afii10079
ENCODING 1085
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 7 2 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-E7
-42
-42
-7E
-42
-42
-E7
+90
+90
+F0
+90
+90
+90
ENDCHAR
STARTCHAR afii10080
ENCODING 1086
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 7 2 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-38
-44
-82
-82
-82
-44
-38
+60
+90
+90
+90
+90
+60
ENDCHAR
STARTCHAR afii10081
ENCODING 1087
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 7 2 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-FE
-44
-44
-44
-44
-44
-EE
+F0
+90
+90
+90
+90
+90
ENDCHAR
STARTCHAR afii10082
ENCODING 1088
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 8 2 -1
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 8 0 -2
BITMAP
-D8
-64
-42
-42
-64
-58
-40
-E0
+B0
+C8
+88
+88
+C8
+B0
+80
+80
ENDCHAR
STARTCHAR afii10083
ENCODING 1089
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 6 7 2 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-38
-44
-80
+60
+90
80
80
-44
-38
+90
+60
ENDCHAR
STARTCHAR afii10084
ENCODING 1090
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 7 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 6 0 0
BITMAP
-FE
-92
-10
-10
-10
-10
-38
+F8
+20
+20
+20
+20
+20
ENDCHAR
STARTCHAR afii10085
ENCODING 1091
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 9 2 -1
-BITMAP
-E7
-42
-22
-14
-08
-08
-10
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 8 0 -2
+BITMAP
+90
90
+A0
+A0
60
+40
+40
+80
ENDCHAR
STARTCHAR afii10086
ENCODING 1092
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 11 1 -1
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 7 10 0 -2
BITMAP
-1C00
-0800
-2A00
-5D00
-8880
-8880
-8880
-5D00
-2A00
-0800
-1C00
+10
+10
+7C
+92
+92
+92
+92
+7C
+10
+10
ENDCHAR
STARTCHAR afii10087
ENCODING 1093
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 7 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 6 0 0
BITMAP
-EE
-44
-28
-10
-28
-44
-EE
+88
+50
+20
+50
+88
+88
ENDCHAR
STARTCHAR afii10088
ENCODING 1094
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 8 2 -1
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 7 0 -1
BITMAP
-EE
-44
-44
-44
-44
-44
-FE
-02
+90
+90
+90
+90
+90
+F8
+08
ENDCHAR
STARTCHAR afii10089
ENCODING 1095
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 7 2 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-EE
-44
-44
-3C
-04
-04
-0E
+90
+90
+90
+70
+10
+10
ENDCHAR
STARTCHAR afii10090
ENCODING 1096
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 7 1 0
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 7 6 0 0
BITMAP
-DD80
-4900
-4900
-4900
-4900
-4900
-FF80
+92
+92
+92
+92
+92
+FE
ENDCHAR
STARTCHAR afii10091
ENCODING 1097
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 10 8 0 -1
+SWIDTH 750 0
+DWIDTH 9 0
+BBX 8 7 0 -1
BITMAP
-DD80
-4900
-4900
-4900
-4900
-4900
-7FC0
-0040
+92
+92
+92
+92
+92
+FF
+01
ENDCHAR
STARTCHAR afii10092
ENCODING 1098
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 7 2 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 5 6 0 0
BITMAP
-60
-A0
-3C
-22
-22
-22
-7C
+C0
+40
+70
+48
+48
+70
ENDCHAR
STARTCHAR afii10093
ENCODING 1099
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 8 7 2 0
+SWIDTH 583 0
+DWIDTH 7 0
+BBX 6 6 0 0
BITMAP
-E7
-42
-42
-72
-4A
-4A
-F7
+84
+84
+E4
+94
+94
+E4
ENDCHAR
STARTCHAR afii10094
ENCODING 1100
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 6 7 3 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
+80
+80
+E0
+90
+90
E0
-40
-78
-44
-44
-44
-F8
ENDCHAR
STARTCHAR afii10095
ENCODING 1101
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 6 7 3 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-78
-84
-04
-7C
-04
-84
-78
+60
+90
+30
+10
+90
+60
ENDCHAR
STARTCHAR afii10096
ENCODING 1102
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 9 7 1 0
+SWIDTH 666 0
+DWIDTH 7 0
+BBX 6 6 0 0
BITMAP
-E600
-4900
-5080
-7080
-5080
-4900
-E600
+98
+A4
+E4
+A4
+A4
+98
ENDCHAR
STARTCHAR afii10097
ENCODING 1103
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 7 7 2 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 6 0 0
BITMAP
-3E
-44
-44
-3C
-24
-44
-EE
+70
+90
+90
+70
+50
+90
ENDCHAR
STARTCHAR afii10071
ENCODING 1105
-SWIDTH 1000 0
-DWIDTH 12 0
-BBX 6 9 3 0
+SWIDTH 416 0
+DWIDTH 5 0
+BBX 4 8 0 0
BITMAP
-48
+90
00
-30
-48
-84
-FC
+60
+90
+F0
80
-44
-38
+90
+60
ENDCHAR
STARTCHAR U_1100
ENCODING 4352
diff --git a/fw/resources/bmp/app_amiibo_database_32x32.bmp b/fw/resources/bmp/app_amiibo_database_32x32.bmp
index b97dd973..a4fa55c9 100644
Binary files a/fw/resources/bmp/app_amiibo_database_32x32.bmp and b/fw/resources/bmp/app_amiibo_database_32x32.bmp differ
diff --git a/fw/scripts/LICENSE b/fw/scripts/LICENSE
new file mode 100644
index 00000000..367643b3
--- /dev/null
+++ b/fw/scripts/LICENSE
@@ -0,0 +1,35 @@
+============ BSD License for U8g2lib Code ============
+This license applies to the following files:
+
+- bdfconv_linux
+- bdfconv_macos_universal
+- bdfconv.exe
+
+Universal 8bit Graphics Library (https://github.com/olikraus/u8g2)
+
+Copyright (c) 2016, olikraus@gmail.com
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this list
+ of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/fw/scripts/bdfconv_linux b/fw/scripts/bdfconv_linux
new file mode 100755
index 00000000..363326d1
Binary files /dev/null and b/fw/scripts/bdfconv_linux differ
diff --git a/fw/scripts/bdfconv_macos_universal b/fw/scripts/bdfconv_macos_universal
new file mode 100755
index 00000000..47cb5d62
Binary files /dev/null and b/fw/scripts/bdfconv_macos_universal differ
diff --git a/fw/scripts/font_data_gen.py b/fw/scripts/font_data_gen.py
new file mode 100755
index 00000000..a98a0693
--- /dev/null
+++ b/fw/scripts/font_data_gen.py
@@ -0,0 +1,128 @@
+#!/usr/bin/env python3
+
+import os
+import re
+import subprocess
+import platform
+
+
+# Absolute path to the directories containing the .c files
+current_dir = os.path.dirname(os.path.abspath(__file__))
+source_dirs = [
+ os.path.join(current_dir, "../application/src/i18n"),
+ os.path.join(current_dir, "../application/src/amiidb"),
+]
+
+# Absolute path to the directory where the output file will be saved
+data_dir = os.path.join(current_dir, "../data")
+mui_dir = os.path.join(data_dir, "../application/src/mui")
+
+# Name of the output file
+output_file = "pixjs.txt"
+
+
+def write_to_file(file_path, content):
+ with open(file_path, "w", encoding="utf-8") as f:
+ f.write(content)
+
+
+def extract_non_printable_chars():
+ non_printable_chars = set()
+ for source_dir in source_dirs:
+ for root, _, files in os.walk(source_dir):
+ for file in files:
+ if file.endswith(".c"):
+ with open(os.path.join(root, file), "r", encoding="utf-8") as f:
+ content = f.read()
+ non_printable_chars.update(re.findall(r"[^\x20-\x7E]", content))
+
+ write_to_file(
+ os.path.join(data_dir, output_file), "\n".join(sorted(non_printable_chars))
+ )
+
+
+def convert_and_sort(unicode_strings):
+ return sorted(
+ set(f"${ord(char):04X}," for string in unicode_strings for char in string)
+ )
+
+
+def run_bdfconv(map_path, output_path, bdf_path):
+ # Construct the path to the bdfconv executable relative to the script directory
+ system = platform.system()
+ if system == "Windows":
+ bdfconv_path = os.path.join(current_dir, "bdfconv.exe")
+ elif system == "Darwin":
+ bdfconv_path = os.path.join(current_dir, "bdfconv_macos_universal")
+ elif system == "Linux":
+ bdfconv_path = os.path.join(current_dir, "bdfconv_linux")
+ else:
+ raise OSError("Unsupported operating system")
+
+ # Convert paths to absolute paths
+ abs_map_path = os.path.abspath(map_path)
+ abs_output_path = os.path.abspath(output_path)
+ abs_bdf_path = os.path.abspath(bdf_path)
+
+ cmd = [
+ bdfconv_path,
+ "-b",
+ "0",
+ "-f",
+ "1",
+ "-M",
+ abs_map_path,
+ "-n",
+ "u8g2_font_wqy12_t_gb2312a",
+ "-o",
+ abs_output_path,
+ abs_bdf_path,
+ ]
+ subprocess.run(cmd, check=True)
+
+
+def main():
+ extract_non_printable_chars()
+
+ combined_content = ""
+ for file_name in ["chinese3.txt", "pixjs.txt"]:
+ with open(os.path.join(data_dir, file_name), "r", encoding="utf-8") as file:
+ combined_content += file.read()
+
+ sorted_converted = convert_and_sort(combined_content.splitlines())
+ write_to_file(
+ os.path.join(data_dir, "gb2312a.map"), "32-128,\n" + "\n".join(sorted_converted)
+ )
+
+ run_bdfconv(
+ map_path=os.path.join(data_dir, "gb2312a.map"),
+ output_path=os.path.join(mui_dir, "u8g2_font_wqy12_t_gb2312a_t.c"),
+ bdf_path=os.path.join(data_dir, "wenquanyi_9pt_u8g2.bdf"),
+ )
+
+ # Write to u8g2_font_wqy12_t_gb2312a.c
+ with open(
+ os.path.join(mui_dir, "u8g2_font_wqy12_t_gb2312a.c"), "w+", encoding="utf-8"
+ ) as final_file:
+ final_file.write(
+ """
+#include "mui_u8g2.h"
+
+#include "u8x8.h"
+
+"""
+ )
+
+ # Read the content of the temporary file and append it to the final file
+ temp_file_path = os.path.join(mui_dir, "u8g2_font_wqy12_t_gb2312a_t.c")
+ with open(temp_file_path, "r", encoding="utf-8") as temp_file:
+ final_file.write(temp_file.read())
+
+ # Remove the temporary files
+ os.remove(temp_file_path)
+ os.remove(os.path.join(data_dir, output_file))
+ os.remove(os.path.join(data_dir, "gb2312a.map"))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/fw/scripts/font_data_gen.sh b/fw/scripts/font_data_gen.sh
index 09f764f1..b90954d8 100644
--- a/fw/scripts/font_data_gen.sh
+++ b/fw/scripts/font_data_gen.sh
@@ -1,6 +1,7 @@
#!/bin/bash
cd $(dirname "$0") && cd ..
+echo "Current dir: $(pwd)"
cat application/src/i18n/*.c application/src/amiidb/*.c |grep -Po '".*?"' | tr -d '[:print:]' |sort|uniq > data/pixjs.txt
echo '32-128,' > data/gb2312a.map
cat data/chinese3.txt data/pixjs.txt | iconv -f utf-8 -t c99 | sed 's/\\u\([0-9a-f]\{4\}\)/\$\1,\n/g' | sort | uniq | sed '/^$/d' | tr '/a-f/' '/A-F/' >> data/gb2312a.map
diff --git a/fw/scripts/resource_gen.py b/fw/scripts/resource_gen.py
index 99534cca..dcc85074 100644
--- a/fw/scripts/resource_gen.py
+++ b/fw/scripts/resource_gen.py
@@ -69,7 +69,7 @@ def gen_bmp():
files.sort()
for file in files:
-
+ print("process %s .." % file)
file_name_abs = project_dir + "/resources/bmp/" + file
if os.path.isdir(file_name_abs):
continue
@@ -101,4 +101,4 @@ def main():
gen_bmp()
######
-main()
\ No newline at end of file
+main()
diff --git a/gh-pages/index.html b/gh-pages/index.html
index e95058ee..1796976c 100644
--- a/gh-pages/index.html
+++ b/gh-pages/index.html
@@ -11,6 +11,6 @@
-