aboutsummaryrefslogtreecommitdiff
path: root/core/lang.bat
diff options
context:
space:
mode:
Diffstat (limited to 'core/lang.bat')
-rw-r--r--core/lang.bat81
1 files changed, 81 insertions, 0 deletions
diff --git a/core/lang.bat b/core/lang.bat
new file mode 100644
index 0000000..d128469
--- /dev/null
+++ b/core/lang.bat
@@ -0,0 +1,81 @@
+echo lang.bat: generating default lang strings...
+set lang_in="%1langs\en.lng"
+set lang_out_def="%1core\lang_def.inc"
+set lang_out_enum="%1core\lang_enum.inc"
+set lang_out_info="%1core\lang_info.inc"
+set lang_def=%lang_out_def%
+set lang_enum=%lang_out_enum%
+set lang_info=%lang_out_info%
+set check_def=0
+if exist %lang_out_def% (
+ set lang_out_def="%1core\lang_def.tmp"
+ set check_def=1
+)
+set check_enum=0
+if exist %lang_out_enum% (
+ set lang_out_enum="%1core\lang_enum.tmp"
+ set check_enum=1
+)
+set check_info=0
+if exist %lang_out_info% (
+ set lang_out_info="%1core\lang_info.tmp"
+ set check_info=1
+)
+set area=[Main]
+set currarea=
+
+echo {> %lang_out_def%
+
+echo enum LangString {> %lang_out_enum%
+
+echo static const struct {> %lang_out_info%
+echo size_t id;>> %lang_out_info%
+echo const char *name;>> %lang_out_info%
+echo } key_info[] = {>> %lang_out_info%
+
+setlocal enableextensions enabledelayedexpansion
+for /f "usebackq delims=" %%a in (!lang_in!) do (
+ set ln=%%a
+ if "x!ln:~0,1!"=="x[" (
+ set currarea=!ln!
+ ) else if "x!area!"=="x!currarea!" (
+ rem for preserving exclamation marks in data:
+ setlocal disabledelayedexpansion
+ for /f "tokens=1* delims==" %%b in ("%%a") do (
+ set currkey=%%b
+ set currval=%%c
+ setlocal enabledelayedexpansion
+ echo default_values_[ls!currkey!] = replace_escape_chars^("!currval:"=\"!"^);>> !lang_out_def!
+ echo ls!currkey!,>> !lang_out_enum!
+ echo {ls!currkey!, "!currkey:"=\"!"},>> !lang_out_info!
+ endlocal
+ )
+ endlocal
+ )
+)
+echo };>> %lang_out_def%
+echo lsCNT };>> %lang_out_enum%
+echo };>> %lang_out_info%
+endlocal
+
+call :ReplaceOld %check_def% %lang_out_def% %lang_def% default
+call :ReplaceOld %check_enum% %lang_out_enum% %lang_enum% enum
+call :ReplaceOld %check_info% %lang_out_info% %lang_info% info
+goto :EOF
+
+:ReplaceOld
+setlocal enableextensions enabledelayedexpansion
+if "%1" == "1" (
+ fc %2 %3 /B>>nul 2>&1
+ if !ERRORLEVEL! == 1 (
+ copy /y %2 %3>>nul 2>&1
+ del %2>>nul 2>&1
+ echo lang.bat: %4 lang strings '%3' are updated
+ ) else (
+ echo lang.bat: %4 lang strings '%3' are up to date
+ )
+) else (
+ echo lang.bat: %4 lang strings '%3' are generated
+)
+endlocal
+goto :EOF \ No newline at end of file