Zappy GUI
C++ graphic client: renderer, camera, network
Loading...
Searching...
No Matches
I18n.hpp
Go to the documentation of this file.
1#pragma once
2
14class I18n {
15 public:
16 enum class Language { EN, FR };
17
18 enum class Key {
19 // HUD
20 HUD_FPS,
21 HUD_MAP,
30
31 // Tooltip — entity labels
35
36 // Tooltip — tile
39
40 // Tooltip — player
45
46 // Tooltip — egg
48
49 // Player panel (Tab)
52
53 // Entity tooltip buttons
56
57 // Speed slider
59
60 // Player label (above head)
62
63 // Win screen
70
71 // Resource names (must stay contiguous and ordered: food=0 … thystame=6)
79
80 _COUNT
81 };
82
83 static void setLanguage(Language lang) { _lang = lang; }
84 static Language getLanguage() { return _lang; }
85
86 static const char* get(Key key)
87 {
88 return _strings[static_cast<int>(_lang)][static_cast<int>(key)];
89 }
90
92 static const char* resourceName(int index)
93 {
94 return get(static_cast<Key>(static_cast<int>(Key::RESOURCE_FOOD) + index));
95 }
96
97 private:
99
100 static constexpr const char* _strings[2][static_cast<int>(Key::_COUNT)] = {
101 // EN
102 {
103 "FPS: ", // HUD_FPS
104 "Map: ", // HUD_MAP
105 "Time unit: ", // HUD_TIME_UNIT
106 "Time --:--", // HUD_UPTIME_UNKNOWN
107 "Time: ", // HUD_UPTIME_PREFIX
108 "h ", // HUD_UPTIME_H
109 "m ", // HUD_UPTIME_M
110 "s", // HUD_UPTIME_S
111 "Port: ", // HUD_PORT
112 "Machine: ", // HUD_MACHINE
113
114 "Tile", // LABEL_TILE
115 "Player", // LABEL_PLAYER
116 "Egg", // LABEL_EGG
117
118 " is empty", // TILE_EMPTY
119 "Tile:", // TILE_HEADER
120
121 " Team ", // PLAYER_TEAM
122 " Level ", // PLAYER_LEVEL
123 " Inventory is empty", // PLAYER_INVENTORY_EMPTY
124 " Inventory:", // PLAYER_INVENTORY
125
126 " Team ", // EGG_TEAM
127
128 "Player List", // PANEL_PLAYER_LIST
129 "Lvl", // PANEL_LVL
130
131 "Follow", // BTN_FOLLOW
132 "Stop Follow", // BTN_STOP_FOLLOW
133
134 "Speed: ", // SPEED_LABEL
135
136 "Level ", // PLAYER_HEAD_LEVEL
137
138 "Game Over", // WIN_GAME_OVER
139 " won!", // WIN_TEAM_WON
140 "Duration: ", // WIN_DURATION
141 "Duration: ...", // WIN_DURATION_UNKNOWN
142 " ticks", // WIN_TICKS
143 "Quit", // WIN_QUIT
144
145 "Food", // RESOURCE_FOOD
146 "Linemate", // RESOURCE_LINEMATE
147 "Deraumere", // RESOURCE_DERAUMERE
148 "Sibur", // RESOURCE_SIBUR
149 "Mendiane", // RESOURCE_MENDIANE
150 "Phiras", // RESOURCE_PHIRAS
151 "Thystame", // RESOURCE_THYSTAME
152 },
153 // FR
154 {
155 "IPS : ", // HUD_FPS
156 "Carte : ", // HUD_MAP
157 "Unité de temps : ", // HUD_TIME_UNIT
158 "Temps --:--", // HUD_UPTIME_UNKNOWN
159 "Temps : ", // HUD_UPTIME_PREFIX
160 "h ", // HUD_UPTIME_H
161 "m ", // HUD_UPTIME_M
162 "s", // HUD_UPTIME_S
163 "Port : ", // HUD_PORT
164 "Machine : ", // HUD_MACHINE
165
166 "Case", // LABEL_TILE
167 "Joueur", // LABEL_PLAYER
168 "Oeuf", // LABEL_EGG (Œuf needs U+0152, outside Latin-1 Supplement)
169
170 " est vide", // TILE_EMPTY
171 "Case :", // TILE_HEADER
172
173 " Équipe ", // PLAYER_TEAM
174 " Niveau ", // PLAYER_LEVEL
175 " Inventaire vide", // PLAYER_INVENTORY_EMPTY
176 " Inventaire :", // PLAYER_INVENTORY
177
178 " Équipe ", // EGG_TEAM
179
180 "Liste des joueurs", // PANEL_PLAYER_LIST
181 "Niv.", // PANEL_LVL
182
183 "Suivre", // BTN_FOLLOW
184 "Arrêter", // BTN_STOP_FOLLOW
185
186 "Vitesse : ", // SPEED_LABEL
187
188 "Niveau ", // PLAYER_HEAD_LEVEL
189
190 "Fin de partie", // WIN_GAME_OVER
191 " a gagné !", // WIN_TEAM_WON
192 "Durée : ", // WIN_DURATION
193 "Durée : ...", // WIN_DURATION_UNKNOWN
194 " ticks", // WIN_TICKS
195 "Quitter", // WIN_QUIT
196
197 "Nourriture", // RESOURCE_FOOD
198 "Linemate", // RESOURCE_LINEMATE
199 "Deraumere", // RESOURCE_DERAUMERE
200 "Sibur", // RESOURCE_SIBUR
201 "Mendiane", // RESOURCE_MENDIANE
202 "Phiras", // RESOURCE_PHIRAS
203 "Thystame", // RESOURCE_THYSTAME
204 },
205 };
206};
Compile-time UI string table for EN/FR localization.
Definition I18n.hpp:14
static const char * get(Key key)
Definition I18n.hpp:86
Language
Definition I18n.hpp:16
Key
Definition I18n.hpp:18
@ PLAYER_HEAD_LEVEL
@ HUD_UPTIME_PREFIX
@ WIN_DURATION_UNKNOWN
@ PANEL_PLAYER_LIST
@ HUD_UPTIME_UNKNOWN
@ RESOURCE_LINEMATE
@ RESOURCE_DERAUMERE
@ PLAYER_INVENTORY
@ RESOURCE_MENDIANE
@ PLAYER_INVENTORY_EMPTY
@ RESOURCE_THYSTAME
static Language _lang
Definition I18n.hpp:98
static void setLanguage(Language lang)
Definition I18n.hpp:83
static Language getLanguage()
Definition I18n.hpp:84
static constexpr const char * _strings[2][static_cast< int >(Key::_COUNT)]
Definition I18n.hpp:100
static const char * resourceName(int index)
Resource name by index (0–6), matching Resources[] ordering.
Definition I18n.hpp:92