diff options
author | Haru <haru@dotalux.com> | 2016-05-17 15:11:00 +0200 |
---|---|---|
committer | Haru <haru@dotalux.com> | 2016-06-25 17:29:49 +0200 |
commit | 17f4709adeb4d9159359d901b1743de56348e7e4 (patch) | |
tree | 3fc1f6e69b85de8d31ce9ef5ec37c3aec149d81f /src/map/script.c | |
parent | d77c30e5b348a0a9f960a0c16826432c5d85548f (diff) | |
download | hercules-17f4709adeb4d9159359d901b1743de56348e7e4.tar.gz hercules-17f4709adeb4d9159359d901b1743de56348e7e4.tar.bz2 hercules-17f4709adeb4d9159359d901b1743de56348e7e4.tar.xz hercules-17f4709adeb4d9159359d901b1743de56348e7e4.zip |
Added _$() macro to the script engine to mark a translatable string as format string
- Strings passed to sprintf should use the _$() macro instead of _(), to
generate the .pot translation template with a directive to correctly
handle the % sign.
- Strings passed through _() are instead explicitly marked as regular
(non format) strings if they contain '%'.
Signed-off-by: Haru <haru@dotalux.com>
Diffstat (limited to 'src/map/script.c')
-rw-r--r-- | src/map/script.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/map/script.c b/src/map/script.c index 40dafd2a5..926f19bf0 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -810,9 +810,12 @@ const char* parse_callfunc(const char* p, int require_paren, int is_custom) if (script->str_data[func].type == C_FUNC) { script->syntax.nested_call++; if (script->syntax.last_func != -1) { - if( script->str_data[func].val == script->buildin_lang_macro_offset ) { + if (script->str_data[func].val == script->buildin_lang_macro_offset) { script->syntax.lang_macro_active = true; macro = true; + } else if (script->str_data[func].val == script->buildin_lang_macro_fmtstring_offset) { + script->syntax.lang_macro_fmtstring_active = true; + macro = true; } } @@ -907,8 +910,10 @@ const char* parse_callfunc(const char* p, int require_paren, int is_custom) disp_error_message("parse_callfunc: expected ')' to close argument list",p); ++p; - if( script->str_data[func].val == script->buildin_lang_macro_offset ) + if (script->str_data[func].val == script->buildin_lang_macro_offset) script->syntax.lang_macro_active = false; + else if (script->str_data[func].val == script->buildin_lang_macro_fmtstring_offset) + script->syntax.lang_macro_fmtstring_active = false; } if (!macro) { @@ -20272,6 +20277,7 @@ bool script_add_builtin(const struct script_function *buildin, bool override) { else if( strcmp(buildin->name, "mes") == 0 ) script->buildin_mes_offset = script->buildin_count; else if( strcmp(buildin->name, "select") == 0 ) script->buildin_select_offset = script->buildin_count; else if( strcmp(buildin->name, "_") == 0 ) script->buildin_lang_macro_offset = script->buildin_count; + else if( strcmp(buildin->name, "_$") == 0 ) script->buildin_lang_macro_fmtstring_offset = script->buildin_count; offset = script->buildin_count; @@ -20877,6 +20883,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(showscript, "s?"), BUILDIN_DEF(mergeitem,""), BUILDIN_DEF(_,"s"), + BUILDIN_DEF2(_, "_$", "s"), }; int i, len = ARRAYLENGTH(BUILDIN); RECREATE(script->buildin, char *, script->buildin_count + len); // Pre-alloc to speed up |