string prvm_language;
/**
- * @deprecated prefer _("translated")
+ * @deprecated prefer _("translatable text") - GMQCC's -ftranslatable-strings feature
*/
+ERASEABLE
string language_filename(string s)
{
string fn = prvm_language;
}
#endif
+ERASEABLE
string CTX(string s)
{
#if CTX_CACHE
- string c = HM_gets(CTX_cache, s);
- if (c != "") return c;
+ string c = HM_gets(CTX_cache, s);
+ if (c != "") return c;
#endif
- int p = strstrofs(s, "^", 0);
- string ret = (p < 0) ? s : substring(s, p + 1, -1);
+ int caret_ofs = strstrofs(s, "^", 0);
+ string ret = s;
+ // empty (caret_ofs == 0) and one char (caret_ofs == 1) prefixes are invalid
+ if (caret_ofs > 1)
+ {
+ int space_ofs = strstrofs(substring(s, 0, caret_ofs), " ", 0);
+ // prefixes containing a space are invalid (likely the caret is part of a color code)
+ if (space_ofs < 0 || space_ofs > caret_ofs)
+ ret = substring(s, caret_ofs + 1, -1);
+ }
#if CTX_CACHE
- LOG_DEBUGF("CTX(\"%s\")\n", s);
- HM_sets(CTX_cache, s, ret);
+ LOG_DEBUGF("CTX(\"%s\")", s);
+ HM_sets(CTX_cache, s, ret);
#endif
return ret;
}