Translation updates, updated submodule.

This commit is contained in:
Storm Dragon
2026-02-28 00:16:01 -05:00
parent 2e5e4b4c04
commit 2857507da7
7 changed files with 2037 additions and 2017 deletions

View File

@@ -1,49 +0,0 @@
// Project-local learn sounds configuration.
// Keep this file in the game root so libstorm-nvgt can stay untouched.
void configure_project_learn_sounds() {
learn_sounds_reset_configuration();
// Skip entries can be full file paths or directories ending with "/".
learn_sounds_add_skip_entry("sounds/quests/bone1.ogg");
learn_sounds_add_skip_entry("sounds/quests/bone2.ogg");
learn_sounds_add_skip_entry("sounds/quests/bone3.ogg");
learn_sounds_add_skip_entry("sounds/quests/bone4.ogg");
learn_sounds_add_skip_entry("sounds/quests/bone5.ogg");
learn_sounds_add_skip_entry("sounds/quests/bone6.ogg");
learn_sounds_add_skip_entry("sounds/quests/bone7.ogg");
learn_sounds_add_skip_entry("sounds/quests/bone8.ogg");
learn_sounds_add_skip_entry("sounds/actions/fishpole.ogg");
learn_sounds_add_skip_entry("sounds/actions/hit_ground.ogg");
learn_sounds_add_skip_entry("sounds/menu/");
learn_sounds_add_skip_entry("sounds/nature/");
learn_sounds_add_skip_entry("sounds/pets/");
learn_sounds_add_skip_entry("sounds/quests/");
learn_sounds_add_description(
"sounds/actions/bad_cast.ogg",
"Your cast missed the water and landed in nearby foliage where it is unlikely to attract fish.");
learn_sounds_add_description(
"sounds/actions/cast_strength.ogg",
"When casting release control when over water. When catching release when sound is over player.");
learn_sounds_add_description("sounds/enemies/enter_range.ogg",
"An enemy is in range of your currently wielded weapon.");
learn_sounds_add_description("sounds/enemies/exit_range.ogg",
"An enemy is no longer in range of your currently wielded weapon.");
learn_sounds_add_description("sounds/actions/falling.ogg", "Lowers in pitch as the fall progresses.");
learn_sounds_add_description("sounds/enemies/invasion.ogg", "The war drums pound! Prepare for combat!");
learn_sounds_add_description("sounds/items/miscellaneous.ogg",
"You picked up an item for which there is no specific sound.");
learn_sounds_add_description("sounds/enemies/goblin1.ogg", "Inhabits mountainous regions.");
learn_sounds_add_description("sounds/enemies/undead_resident1.ogg",
"Not quite a zombie nor a vampyr. These undead remember they used to have a home, and "
"maybe there's food there...");
learn_sounds_add_description("sounds/enemies/wight1.ogg",
"More powerful undead. They do not lose track of you when you are in the base.");
learn_sounds_add_description("sounds/enemies/vampyr1.ogg", "Ever hungry, they feed upon your residents.");
learn_sounds_add_description("sounds/enemies/vampyr2.ogg", "Ever hungry, they feed upon your residents.");
learn_sounds_add_description("sounds/enemies/vampyr3.ogg", "Ever hungry, they feed upon your residents.");
learn_sounds_add_description("sounds/enemies/vampyr4.ogg", "Ever hungry, they feed upon your residents.");
learn_sounds_add_description("sounds/enemies/yeti1.ogg", "Inhabits snowy regions.");
learn_sounds_add_description("sounds/enemies/zombie1.ogg", "Basic undead.");
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -196,6 +196,58 @@ def unescape_string_literal(literal_body: str) -> str:
return "".join(result) return "".join(result)
def parse_string_literal_sequence(expr: str) -> Optional[str]:
expr = expr.strip()
if not expr or expr[0] != '"':
return None
parts: List[str] = []
i = 0
length = len(expr)
while i < length:
while i < length and expr[i].isspace():
i += 1
if i >= length:
break
if expr[i] != '"':
return None
i += 1
literal_chars: List[str] = []
escape = False
while i < length:
ch = expr[i]
if escape:
literal_chars.append("\\" + ch)
escape = False
i += 1
continue
if ch == "\\":
escape = True
i += 1
continue
if ch == '"':
i += 1
break
literal_chars.append(ch)
i += 1
else:
return None
parts.append(unescape_string_literal("".join(literal_chars)))
if not parts:
return None
return "".join(parts)
def expression_to_template(expr: str) -> Optional[str]: def expression_to_template(expr: str) -> Optional[str]:
expr = expr.strip() expr = expr.strip()
if not expr: if not expr:
@@ -217,8 +269,9 @@ def expression_to_template(expr: str) -> Optional[str]:
template_parts.append(passthrough_template) template_parts.append(passthrough_template)
continue continue
if len(part) >= 2 and part[0] == '"' and part[-1] == '"': literal_sequence = parse_string_literal_sequence(part)
template_parts.append(unescape_string_literal(part[1:-1])) if literal_sequence is not None:
template_parts.append(literal_sequence)
else: else:
placeholder_count += 1 placeholder_count += 1
template_parts.append(f"{{arg{placeholder_count}}}") template_parts.append(f"{{arg{placeholder_count}}}")