Files
Grovewright/game/tests/test_i18n.gd
T
Steven Wroblewski ccf9813c80 Texte, Tasten und Dateien
Alle Texte stehen in einer Tabelle mit Deutsch und Englisch, die das
Spiel zur Laufzeit liest. Die Tasten werden in Code angelegt, nach
physischer Position. SaveStore verwaltet den Spielerschlüssel dieser
Installation, schreibt den Speicherstand über eine temporäre Datei,
legt unbrauchbare Stände beiseite und behält die zehn neuesten
Aufzeichnungen.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-10-01 11:26:12 +02:00

36 lines
1.1 KiB
GDScript

extends TestCase
func _by_locale() -> Dictionary:
var result := {}
for translation in I18n.load_translations(I18n.TEXTS_FILE):
result[translation.locale] = translation
return result
func test_german_and_english_exist() -> void:
var translations := _by_locale()
check(translations.has("de"), "German")
check(translations.has("en"), "English")
func test_every_text_exists_in_every_language() -> void:
var translations := _by_locale()
var german: Translation = translations["de"]
var english: Translation = translations["en"]
var keys := german.get_message_list()
keys.sort()
var english_keys := english.get_message_list()
english_keys.sort()
check_eq(english_keys, keys, "the same keys")
for key in keys:
check(not String(german.get_message(key)).is_empty(), "German text for %s" % key)
check(not String(english.get_message(key)).is_empty(), "English text for %s" % key)
func test_the_stone_count_has_a_slot_for_the_number() -> void:
var translations := _by_locale()
for locale: String in translations:
var text := String(translations[locale].get_message("STONE_COUNT"))
check(text.contains("%d"), "%s: %s" % [locale, text])