[Scummvm-git-logs] scummvm master -> f10fc8d1fba7827c641f39d9e9fa195737a1345e

athrxx noreply at scummvm.org
Fri Oct 2 18:48:03 UTC 2026


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
f10fc8d1fb KYRA: (EOB automap feature) - add German translation


Commit: f10fc8d1fba7827c641f39d9e9fa195737a1345e
    https://github.com/scummvm/scummvm/commit/f10fc8d1fba7827c641f39d9e9fa195737a1345e
Author: athrxx (athrxx at scummvm.org)
Date: 2026-10-02T20:47:05+02:00

Commit Message:
KYRA: (EOB automap feature) - add German translation

I made up the translations to keep them as short as possible,
so they don't get drawn too tiny.
I haven't moved the string table to kyra.dat yet, since
there might still be ideas to improve the level naming (for
English: mostly EOB I; for German: both EOB I and II).

Changed paths:
    engines/kyra/gui/automap_eob.cpp


diff --git a/engines/kyra/gui/automap_eob.cpp b/engines/kyra/gui/automap_eob.cpp
index b8802b85816..b8c170146a8 100644
--- a/engines/kyra/gui/automap_eob.cpp
+++ b/engines/kyra/gui/automap_eob.cpp
@@ -105,17 +105,71 @@ const Automap_EoB::TranslateableStrings Automap_EoB::_stringTable[] = {
 	},
 	{
 		{
-			"", "", "", "", "", "", "", "", ""
+			"- LEGENDE -",
+			"Gruppe",
+			"Treppe hoch",
+			"Treppe runter",
+			"Teleporter",
+			"Grube",
+			"Platte",
+			"Tür",
+			"Barriere",
+			"Illusionswand",
+			"Kraftfeld",
+			"Schalter",
+			"Interaktives Objekt",
+			"Nische",
+			"Steinportal"
 		},
+
 		{
-			"", "", ""
+			"- TASTEN -",	"",
+			"Auf/Ab",		"Level wählen",
+			"Esc/Tab",		"Beenden"
 		},
+
+		// Area names for the plaque. The games have no level names in their data and the file
+		// names of the graphics and sound data files provide only vague hints. So we hardcode
+		// the level names here. The Sega CD version of EOBI has an automap, but it doesn't use
+		// level names. The maps are just called "L%d" or "Floor %d" (%d being the level number).
+		// The FM-Towns version of EOBII has level names for its autogenerated savegame names
+		// which are similar to what we do (names based on the graphics/sound files).
 		{
-			{
-				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""
+			{	
+				"Kanalisation I",
+				"Kanalisation II",
+				"Kanalisation III",
+				"Zwergenruinen I",
+				"Zwergencamp",
+				"Zwergenruinen III",
+				"Dunkelelfen I",
+				"Dunkelelfen II",
+				"Dunkelelfen III",
+				"Mantis Nest",
+				"Xanathars Sanktum",
+				"Xanathars Quartier",
+				"",
+				"",
+				"",
+				""
 			},
 			{
-				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""
+				"Katakomben I",
+				"Katakomben II",
+				"Katakomben III",
+				"Wald",
+				"Tempel Eingang",
+				"Tempel Quartiere",
+				"Silberturm I",
+				"Silberturm II",
+				"Silberturm III",
+				"Azurturm I",
+				"Azurturm II",
+				"Azurturm III",
+				"Azurturm IV",
+				"Azurturm V",
+				"Purpurturm I",
+				"Purpurturm II"
 			}
 		}
 	}
@@ -134,6 +188,9 @@ Automap_EoB::Automap_EoB(OSystem *system, LevelBlockProperty **blockData, const
 
 	switch (lang) {
 	// TODO: Add remaining languages here.
+	case Common::DE_DEU:
+		langIndex = 1;
+		break;
 	case Common::EN_ANY:
 	default:
 		break;
@@ -265,21 +322,23 @@ void drawString(Graphics::Surface &dst, const Graphics::Font *font, const Common
 	if (tw <= 0 || th <= 0)
 		return;
 
+	Common::U32String str(text.c_str(), Common::CodePage::kUtf8);
+
 	if (scale == 1) {
-		font->drawString(&dst, text, x, y, w, color, align);
+		font->drawString(&dst, str, x, y, w, color, align);
 		return;
 	}
 
 	const int bpp = dst.format.bytesPerPixel;
 	if (bpp != 2 && bpp != 4) {
-		font->drawString(&dst, text, x, y, w, color, align);
+		font->drawString(&dst, str, x, y, w, color, align);
 		return;
 	}
 
 	Graphics::Surface tmp;
 	tmp.create(tw, th, dst.format);
 	tmp.fillRect(Common::Rect(0, 0, tw, th), 0);
-	font->drawString(&tmp, text, 0, 0, tw, color, Graphics::kTextAlignLeft);
+	font->drawString(&tmp, str, 0, 0, tw, color, Graphics::kTextAlignLeft);
 
 	const int dw = tw * scale;
 	int dx = x + (w - dw) / 2;
@@ -1102,7 +1161,8 @@ template void Automap_EoB::drawIconImpl<uint16>(Graphics::Surface&, int, int, in
 template void Automap_EoB::drawIconImpl<uint32>(Graphics::Surface&, int, int, int, int, int, IconAlignment, int, int, int);
 
 int Automap_EoB::fitString(const Graphics::Font *f, const Common::String &str, int maxW, int maxSc) const {
-	int wdth = f ? f->getStringWidth(str) : 0;
+	Common::U32String u32str(str.c_str(), Common::CodePage::kUtf8);
+	int wdth = f ? f->getStringWidth(u32str) : 0;
 	return (wdth == 0) ? 1 : CLIP<int>(maxW / wdth, 1, maxSc);
 }
 




More information about the Scummvm-git-logs mailing list