Skip to content

Commit b37ef67

Browse files
authored
Merge branch 'solosky:develop' into develop
2 parents 36d69ef + 0863d49 commit b37ef67

File tree

17 files changed

+505
-192
lines changed

17 files changed

+505
-192
lines changed

.github/workflows/pixl.js-fw.yml

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ on:
44
push:
55
branches: [ "develop"]
66
tags: ["*"]
7+
pull_request:
8+
types: ["opened"]
9+
branches: ["develop"]
710
workflow_dispatch:
811

912
jobs:
@@ -20,15 +23,8 @@ jobs:
2023

2124
- name: Change Owner of Container Working Directory
2225
run: chown root:root .
23-
24-
- name: build bootloader
25-
run: cd fw && make bl RELEASE=1 BOARD=${{matrix.board}}
2626
- name: build firmware
27-
run: cd fw && make app RELEASE=1 BOARD=${{matrix.board}}
28-
- name: build ota
29-
run: cd fw/application && make ota RELEASE=1 APP_VERSION=$GITHUB_RUN_NUMBER BOARD=${{matrix.board}}
30-
- name: build all
31-
run: cd fw/application && make full RELEASE=1 APP_VERSION=$GITHUB_RUN_NUMBER BOARD=${{matrix.board}}
27+
run: cd fw && make all RELEASE=1 APP_VERSION=$GITHUB_RUN_NUMBER BOARD=${{matrix.board}}
3228
- name: upload bootloader
3329
uses: actions/upload-artifact@v3
3430
with:

docs/en/01-Hardware.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ You can use [Kicad 6](https://www.kicad.org/download/) to open and edit the PCB
77
![pixl.js PCB](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-pcb-revc.png)
88

99
# BOM
10-
* The BoM is summaried on the doc: [RevC Bill of Materials Buying Guide](01+1-RevC-bom)
11-
* The Bill of Materials in interactive format are also available, you can download it from: [RevC InteractiveHtmlBom](docs/RevC-ibom.html)
10+
* The BoM is summaried on the doc: [RevC Bill of Materials Buying Guide](01+1-RevC-bom.md)
11+
* The Bill of Materials in interactive format are also available, you can download it from: [RevC InteractiveHtmlBom](https://github.com/solosky/pixl.js/blob/main/docs/RevC-ibom.html)
1212

1313

1414
# Pictures

docs/en/03-Build-Firmware.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,28 @@
44

55
You could download the latest develop build from Github Actions
66

7-
https://github.com/impeeza/pixl.js/actions/workflows/pixl.js-fw.yml
7+
https://github.com/solosky/pixl.js/actions
88

99

1010
## Build with customized Docker image
1111

1212
You could build the firmware using customized Docker image.
1313

1414
```
15+
# create containers
1516
docker run -it --rm solosky/nrf52-sdk:latest
17+
18+
# init repository
1619
root@b10d54636088:/builds# git clone https://github.com/solosky/pixl.js
1720
root@b10d54636088:/builds# cd pixl.js
1821
root@b10d54636088:/builds/pixl.js# git submodule update --init --recursive
19-
root@b10d54636088:/builds/pixl.js# cd fw && make all
20-
root@b10d54636088:/builds/pixl.js/fw# cd application && make full ota
22+
23+
# build LCD version
24+
root@b10d54636088:/builds/pixl.js# cd fw && make all BOARD=LCD RELEASE=1
25+
26+
# build OLED version
27+
root@b10d54636088:/builds/pixl.js# cd fw && make all BOARD=OLED RELEASE=1
28+
2129
```
2230

2331
The firmware is fw/_build/pixjs_all.hex,ota package is fw/_build/pixjs_ota_vXXXX.zip

docs/zh/03-Build-Firmware.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,27 @@
44

55
您可以从Github Actions下载最新的构建开发版本。
66

7-
https://github.com/impeeza/pixl.js/actions/workflows/pixl.js-fw.yml
7+
https://github.com/solosky/pixl.js/actions
88

99

1010
## 使用定制的Docker镜像进行构建
1111

1212
您可以使用定制的Docker镜像构建固件。
1313

1414
```
15+
# 创建容器
1516
docker run -it --rm solosky/nrf52-sdk:latest
17+
18+
# 下载代码
1619
root@b10d54636088:/builds# git clone https://github.com/solosky/pixl.js
1720
root@b10d54636088:/builds# cd pixl.js
1821
root@b10d54636088:/builds/pixl.js# git submodule update --init --recursive
19-
root@b10d54636088:/builds/pixl.js# cd fw && make all
20-
root@b10d54636088:/builds/pixl.js/fw# cd application && make full ota
22+
23+
# 构建LCD固件
24+
root@b10d54636088:/builds/pixl.js# cd fw && make all BOARD=LCD RELEASE=1
25+
26+
# 构建OLED固件
27+
root@b10d54636088:/builds/pixl.js# cd fw && make all BOARD=OLED RELEASE=1
2128
```
2229

2330
构建好的固件在 fw/_build/pixjs_all.hex,ota package is fw/_build/pixjs_ota_vXXXX.zip

fw/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
.PHONY: app bl clean
22

3-
all: bl app
3+
all: bl app ota
44

55
bl:
66
@$(MAKE) -C bootloader/
77

88
app:
99
@$(MAKE) -C application/
1010

11+
ota:
12+
@$(MAKE) -C application/ full ota
13+
1114
clean:
1215
@rm -rf _build/

fw/application/Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ U8G2_ROOT := ../components/u8g2/csrc
99
CHAMELEON_ROOT :=$(COMP_DIR)/chameleon-ultra/firmware
1010

1111
APP_VERSION ?= 1
12-
RELEASE ?= 0
12+
RELEASE ?= 1
1313
BOARD ?= OLED
1414

1515
$(OUTPUT_DIRECTORY)/pixljs.out: \
@@ -297,7 +297,7 @@ SRC_FILES += \
297297
$(PROJ_DIR)/i18n/zh_Hans.c \
298298
$(PROJ_DIR)/i18n/zh_TW.c \
299299
$(PROJ_DIR)/i18n/es_ES.c \
300-
$(PROJ_DIR)/i18n/hu_HU.c \
300+
$(PROJ_DIR)/i18n/it_IT.c \
301301
$(PROJ_DIR)/i18n/de_DE.c \
302302
$(PROJ_DIR)/i18n/fr_FR.c \
303303
$(PROJ_DIR)/i18n/hu_HU.c \
@@ -714,6 +714,7 @@ sdk_config:
714714

715715
version:
716716
@cd ../ && python3 scripts/version_gen.py
717+
@echo build: BOARD=$(BOARD) RELEASE=$(RELEASE) APP_VERSION=$(APP_VERSION)
717718

718719
settingsgen:
719720
nrfutil settings generate --family NRF52 --application $(OUTPUT_DIRECTORY)/pixljs.hex --application-version $(APP_VERSION) --bootloader-version 1 --bl-settings-version 1 $(OUTPUT_DIRECTORY)/settings.hex

fw/application/src/i18n/it_IT.c

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
#include "string_id.h"
2+
const char * const lang_it_IT[_L_COUNT] = {
3+
[_L_ON] = "SI",
4+
[_L_OFF] = "NO",
5+
[_L_ON_F] = "[SI]",
6+
[_L_OFF_F] = "[NO]",
7+
[_L_BACK] = "Indietro",
8+
[_L_ERR] = "Errore",
9+
[_L_ERR_CODE] = "Codice errore",
10+
[_L_APP_AMIIBO] = "Emulatore Amiibo",
11+
[_L_APP_AMIIBOLINK] = "AmiiboLink",
12+
[_L_APP_BLE] = "Trasferimento file BLE",
13+
[_L_APP_BLE_TITLE] = "Trasferimento file BLE",
14+
[_L_APP_PLAYER] = "Lettore video",
15+
[_L_APP_SET] = "Impostazioni",
16+
[_L_APP_SET_VERSION] = "Versione",
17+
[_L_APP_SET_STORAGE_USED] = "Usato",
18+
[_L_APP_SET_STORAGE] = "Memoria esterna",
19+
[_L_APP_SET_OLED_CONTRAST] = "Contrasto OLED",
20+
[_L_APP_SET_OLED_CONTRAST_TITLE] = "Contrasto OLED",
21+
[_L_APP_SET_LCD_BACKLIGHT] = "Luminosità",
22+
[_L_APP_SET_LCD_BACKLIGHT_TITLE] = "Luminosità schermo",
23+
[_L_APP_SET_ANIM] = "Animazione menu",
24+
[_L_APP_SET_LIPO_BAT] = "Batteria LiPO",
25+
[_L_APP_SET_SHOW_MEM_USAGE] = "Memoria usata",
26+
[_L_APP_SET_HIBERNATE] = "Risveglio rapido",
27+
[_L_APP_SET_SLEEP_TIMEOUT] = "Timeout di sospensione",
28+
[_L_APP_SET_LANGUAGE] = "Lingua",
29+
[_L_APP_SET_DFU] = "Aggiornamento firmware",
30+
[_L_APP_SET_REBOOT] = "Riavvio del sistema",
31+
[_L_APP_SET_RESET_DEFAULT] = "Ripristina impostazioni predefinite",
32+
[_L_APP_SET_RESET_DEFAULT_SUCCESS] = "Ripristino riuscito!",
33+
[_L_APP_SET_RESET_DEFAULT_CONFIRM] = "Conferma il ripristino delle impostazioni?",
34+
[_L_15S] = "15 secondi",
35+
[_L_30S] = "30 secondi",
36+
[_L_45S] = "45 secondi",
37+
[_L_1MIN] = "1 minuto",
38+
[_L_2MIN] = "2 minuti",
39+
[_L_3MIN] = "3 minuti",
40+
[_L_AMIIBO_KEY_UNLOADED] = "Chiave Amiibo non caricata",
41+
[_L_UPLOAD_KEY_RETAIL_BIN] = "Carica il file key_retail.bin nella directory root della memoria.",
42+
[_L_KNOW] = "Ho Capito",
43+
[_L_RANDOM_GENERATION] = "Tag casuale",
44+
[_L_AUTO_RANDOM_GENERATION] = "Casuale automatico",
45+
[_L_SHOW_QRCODE] = "Mostra codice QR",
46+
[_L_DELETE_TAG] = "Elimina tag",
47+
[_L_DELETE_TAG_CONFIRM] = "Conferma eliminazione %s\n?",
48+
[_L_BACK_TO_DETAILS] = "[Torna ai dettagli del tag]",
49+
[_L_BACK_TO_FILE_LIST] = "[Torna alla lista dei file]",
50+
[_L_BACK_TO_MAIN_MENU] = "[Torna al menu principale]",
51+
[_L_FORMAT] = "Formatta..",
52+
[_L_FORMAT_STORAGE] = "Formatta memoria",
53+
[_L_DELETE_ALL_DATA] = "Questo cancellerà tutti i dati.\nConferma la formattazione?",
54+
[_L_DELETING_MESSAGE] = "Formattazione in corso ..",
55+
[_L_MESSAGE] = "Messaggio",
56+
[_L_CONFIRM] = "Conferma",
57+
[_L_CANCEL] = "Annulla",
58+
[_L_BACK_TO_LIST] = "[Torna alla lista]",
59+
[_L_NOT_MOUNTED] = "Non montato",
60+
[_L_MOUNTED_LFS] = "===Montato[LFS]===",
61+
[_L_MOUNTED_FFS] = "===Montato[FFS]===",
62+
[_L_TOTAL_SPACE] = "Totale",
63+
[_L_AVAILABLE_SPACE] = "Libero",
64+
[_L_NOT_AMIIBO_FILE] = "Questo non è un file\nAmiibo valido",
65+
[_L_READ_FILE_FAILED] = "Errore nella lettura del file",
66+
[_L_INPUT_FOLDER_NAME] = "Nome cartella:",
67+
[_L_INPUT_AMIIBO_NAME] = "Nome Amiibo:",
68+
[_L_DELETE] = "Elimina",
69+
[_L_INPUT_NEW_NAME] = "Nuovo nome:",
70+
[_L_INVALID_INPUT] = "Input non valido",
71+
[_L_CREATE_NEW_FOLDER] = "Crea cartella..",
72+
[_L_CREATE_NEW_TAG] = "Crea Amiibo..",
73+
[_L_CREATE_NEW_TAG_BATCH] = "Crea Amiibo in serie..",
74+
[_L_INPUT_TAG_NUM] = "Numero di tag:",
75+
[_L_CREATE_TOO_MANY_NUM] = "Numero max di %d tag in serie.",
76+
[_L_CREATING_TAG_BATCH] = "Creazione tag",
77+
[_L_CREATING_TAG_FAILED] = "Creazione tag %s fallita!",
78+
[_L_RENAME] = "Rinomina",
79+
[_L_OPEN_FOLDER_FAILED] = "Errore nell'apertura della cartella",
80+
[_L_RENAME_FAILED] = "Errore nella rinomina\nCodice errore",
81+
[_L_MAIN_RETURN] = "[Torna indietro]",
82+
[_L_RANDOM_MODE_MANUAL] = "Casuale (Manuale)",
83+
[_L_RANDOM_MODE_AUTO] = "Casuale (Automatico)",
84+
[_L_SEQUENCE_MODE] = "Modo sequenziale",
85+
[_L_READ_WRITE_MODE] = "Modo lettura/scrittura",
86+
[_L_AMIIBOLINK_V1] = "V1",
87+
[_L_AMIIBOLINK_V2] = "V2",
88+
[_L_AMILOOP] = "AmiLoop",
89+
[_L_MODE] = "Modalità",
90+
[_L_AUTO_RANDOM] = "Auto. casuale",
91+
[_L_COMPATIBLE_MODE] = "Mod. Compatibilità",
92+
[_L_TAG_DETAILS] = "[Torna ai dettagli]",
93+
[_L_MAIN_MENU] = "[Menu principale]",
94+
[_L_MODE_RANDOM] = "Casuale man.",
95+
[_L_MODE_CYCLE] = "Sequenziale",
96+
[_L_MODE_NTAG] = "Lett./Scritt.",
97+
[_L_MODE_RANDOM_AUTO_GEN] = "Auto. casuale",
98+
[_L_BLANK_TAG] = "Amiibo non assegnato",
99+
[_L_APP_AMIIDB] = "Database Amiibo",
100+
[_L_APP_AMMIDB_BROWSER] = "Esplora..",
101+
[_L_APP_AMIIDB_SEARCH] = "Cerca..",
102+
[_L_APP_AMIIDB_MY_FAVORITES] = "I miei preferiti..",
103+
[_L_APP_AMIIDB_MY_TAGS] = "I miei Amiibo..",
104+
[_L_APP_AMIIDB_SETTINGS] = "Impostazioni..",
105+
[_L_APP_AMIIDB_EXIT] = "[Menu principale]",
106+
[_L_APP_AMIIDB_BACK] = "[Torna indietro]",
107+
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Chiavi",
108+
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Caricate",
109+
[_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NON caricate",
110+
[_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Num. slot",
111+
[_L_APP_AMIIDB_DETAIL_FAVORITE] = "Preferito..",
112+
[_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Assegna a..",
113+
[_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Torna ai dettagli]",
114+
[_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Torna alla lista]",
115+
[_L_APP_AMIIDB_SEARCH_HEAD] = "Cerca:",
116+
[_L_APP_AMIIDB_MORE] = "[Più..]",
117+
[_L_APP_AMIIDB_EMPTY_TAG] = "<Non assegnato>",
118+
[_L_APP_AMIIDB_SLOT_DELETE] = "Elimina..",
119+
[_L_APP_AMIIDB_CONFIRM] = "Conferma",
120+
[_L_APP_AMIIDB_CANCEL] = "Annulla",
121+
[_L_APP_AMIIDB_TIPS] = "Conferma",
122+
[_L_APP_AMIIDB_NEW] = "Nuovo..",
123+
[_L_APP_AMIIDB_EMPTY] = "Svuota..",
124+
[_L_APP_AMIIDB_DELETE] = "Cancella..",
125+
[_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nuova cart. preferiti:",
126+
[_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Svuotare cart. preferiti?",
127+
[_L_APP_AMIIDB_FAV_DELETE_MSG] = "Conferma cancellazione?",
128+
[_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selez. cart. preferiti..",
129+
[_L_APP_AMIIDB_FAV_SUCCESS] = "Preferito aggiunto!",
130+
[_L_APP_AMIIDB_FAV_FAILED] = "Preferito non aggiunto!",
131+
[_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Assegnazione corretta",
132+
[_L_APP_AMIIDB_SLOT_SAVE_FAILED] = "Assegnazione fallita!",
133+
[_L_APP_CHAMELEON] = "Emula tag RFID",
134+
[_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL] = "Normale",
135+
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Nega",
136+
[_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignora",
137+
[_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache",
138+
[_L_APP_CHAMELEON_INITIALIZING] = "Inizializzazione ambiente.\nPer favore attendi..",
139+
[_L_APP_CHAMELEON_CARD_SLOT] = "Slot",
140+
[_L_APP_CHAMELEON_CARD_NICK] = "Nickname",
141+
[_L_APP_CHAMELEON_CARD_ID] = "ID",
142+
[_L_APP_CHAMELEON_CARD_TYPE] = "Tipo",
143+
[_L_APP_CHAMELEON_CARD_DATA] = "Dati..",
144+
[_L_APP_CHAMELEON_CARD_ADVANCED] = "Avanzato..",
145+
[_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Impostazioni..",
146+
[_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Num. slot..",
147+
[_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Cambio nickname riuscito.",
148+
[_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Cambio nickname fallito!",
149+
[_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Nickname:",
150+
[_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Carica..",
151+
[_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Salva..",
152+
[_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Inizializza..",
153+
[_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Dati inizializzati!",
154+
[_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "File non trovato",
155+
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Dimensione file non corretta",
156+
[_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED] = "Caricamento file fallito",
157+
[_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS] = "Caricamento file riuscito",
158+
[_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME] = "Nome file:",
159+
[_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED] = "Errore nel salvataggio!",
160+
[_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS] = "Salvataggio riuscito",
161+
[_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE] = "Modalità personalizzata",
162+
[_L_APP_CHAMELEON_CARD_GEN1A_MODE] = "Gen1A abilitata",
163+
[_L_APP_CHAMELEON_CARD_GENERATE_UID] = "Genera nuovo UID",
164+
[_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS] = "UID generato",
165+
[_L_APP_CHAMELEON_CARD_GEN2_MODE] = "Gen2 abilitata",
166+
[_L_APP_CHAMELEON_CARD_WRITE_MODE] = "Modalità scrittura",
167+
[_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT] = "Input non valido!",
168+
[_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM] = "Tipo di carta modificato\nInizializzare carta?",
169+
};

fw/application/src/i18n/language.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ typedef struct {
88
const LanguageData const languageData[LANGUAGE_COUNT] = {
99
[LANGUAGE_ZH_HANS] = {.strings = lang_zh_Hans}, [LANGUAGE_EN_US] = {.strings = lang_en_US},
1010
[LANGUAGE_ZH_TW] = {.strings = lang_zh_TW}, [LANGUAGE_ES_ES] = {.strings = lang_es_ES},
11-
[LANGUAGE_HU_HU] = {.strings = lang_hu_HU}, [LANGUAGE_DE_DE] = {.strings = lang_de_DE},
12-
[LANGUAGE_FR_FR] = {.strings = lang_fr_FR}, [LANGUAGE_NL_NL] = {.strings = lang_nl_NL},
13-
[LANGUAGE_PT_BR] = {.strings = lang_pt_BR}, [LANGUAGE_JA_JP] = {.strings = lang_ja_JP},
14-
[LANGUAGE_PT_PT] = {.strings = lang_pt_PT},
11+
[LANGUAGE_IT_IT] = {.strings = lang_it_IT}, [LANGUAGE_HU_HU] = {.strings = lang_hu_HU},
12+
[LANGUAGE_DE_DE] = {.strings = lang_de_DE}, [LANGUAGE_FR_FR] = {.strings = lang_fr_FR},
13+
[LANGUAGE_NL_NL] = {.strings = lang_nl_NL}, [LANGUAGE_PT_BR] = {.strings = lang_pt_BR},
14+
[LANGUAGE_JA_JP] = {.strings = lang_ja_JP}, [LANGUAGE_PT_PT] = {.strings = lang_pt_PT},
1515
};
1616

1717
// 当前语言设置 (Current language setting)
@@ -39,6 +39,8 @@ const char *getLangDesc(Language lang) {
3939
return "繁體中文(臺灣)";
4040
} else if (lang == LANGUAGE_ES_ES) {
4141
return "Español";
42+
} else if (lang == LANGUAGE_IT_IT) {
43+
return "Italiano";
4244
} else if (lang == LANGUAGE_HU_HU) {
4345
return "Magyar";
4446
} else if (lang == LANGUAGE_DE_DE) {

fw/application/src/i18n/language.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ typedef enum {
2121
LANGUAGE_NL_NL,
2222
LANGUAGE_PT_BR,
2323
LANGUAGE_JA_JP,
24-
LANGUAGE_PT_PT,
24+
LANGUAGE_PT_PT,
25+
LANGUAGE_IT_IT,
2526
LANGUAGE_COUNT
2627
} Language;
2728

@@ -36,7 +37,7 @@ extern const char* lang_nl_NL[_L_COUNT];
3637
extern const char* lang_pt_BR[_L_COUNT];
3738
extern const char* lang_ja_JP[_L_COUNT];
3839
extern const char* lang_pt_PT[_L_COUNT];
39-
40+
extern const char* lang_it_IT[_L_COUNT];
4041

4142
// 获取字符串的函数 (Get language string function)
4243
const char* getLangString(L_StringID stringID);

0 commit comments

Comments
 (0)