Harald Hoppelhase

Die neue Action, jetzt mit 30% mehr Action! Geht vom 14.04.23 bis zum 23.04.23
Benutzeravatar
Krishty
Establishment
Beiträge: 8267
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Krishty »

Schrompf hat geschrieben: 04.04.2024, 13:14Der Standard dafür sind oder waren übrigens die GNU gettext utilities.
Oh wow, GNU gettext. Ich kann dir auch keine bessere Alternative empfehlen, aber ich möchte auf zwei Probleme hinweisen:
  • Performance – das Ganze ist String-basiert. Da findet kein String-Hashing während des Kompilierens in deinem Executable statt (denke ich?), sondern beim Anfordern der Übersetzung. Also besser nicht in inneren Schleifen nutzen.
     
  • Build Chain – bereite dich darauf vor, dass die Dateien ständig neu kompiliert werden und in deiner Quelltextverwaltung ständig als geänderte Dateien angezeigt werden, auch wenn du gar nichts geändert hast. Ich habe die Original-Bug-Tickets gerade nicht parat, weil es bei mir schon ein Bisschen her ist, aber das hier fasst die Gründe wohl gut zusammen:
    https://github.com/vslavik/poedit/issues/757#issuecomment-1146752578 hat geschrieben:On one hand, (1) VCS noise is annoying. On the other, (2) the "this PO file is current as of this date" information has value for translators and maintainers too. It is not immediately obvious to me that (1) is more important than (2) [to be explicit: this is not saying that it isn't, just that it isn't obvious to me and need to think about it].
Aber wie gesagt ist die Unterstützung breit und Fans können recht einfach neue Übersetzungen beitragen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Jonathan
Establishment
Beiträge: 2388
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

Hmmm, ich meine Gettext kling nett, aber es löst halt mein Problem nicht. Die Strings zu bekommen ist simpel, das sind irgendwie 10 Zeilen Code irgendwo. Natürlich könnte ich das jetzt durch gettext oder sowas ersetzen und dann würde es besser funktionieren und mehr können. Aber der Hauptgrund, weshalb ich Sprache nicht dynamisch umschalten kann ist, dass ich halt z.B. viele GUI Elemente beim Start erzeuge und dann für den Rest des Spiel benutze. Ich müsste also für alles was irgendwo lokalisiert werden muss Callbacks einbauen und entsprechend dynamisch neu generieren. Man kann das jetzt schnell rein hacken und übersieht dann 5% der Strings in obskuren Situationen oder man macht es richtig und so das es funktioniert und robust ist und dann dauert das noch 2 Wochen. Fuddellösungen mag ich nicht, von daher...

AI Übersetzungen mag ich auch überhaupt nicht. Ich hatte neulich nochmal ein paar Indie-Spiele aus Spaß auf Deutsch gestellt und nach 5 Minuten entsetzt wieder zurück-gewechselt. Sorry, aber ich erwarte eine gewisse Qualität, Übersetzungen haben von einem Menschen zu kommen, der das Spiel auch gespielt hat oder im Optionsmenü weiß, was welcher Eintrag bedeutet ("Schattenkarten" in den Bioshock Optionen, uff).

Systemsprache klingt nett, aber ehrlich gesagt tut das ja auch nicht. Beispielsweise Ist ja Textsprache (was auf den Buttons steht), Tastaturlayout (UK und US is ja auch schon wieder sehr unterschiedlich) und Uhrzeitformat (MM-DD-YY, *grusel*) komplett unabhängig voneinander und nichts davon hat mit dem physikalischen Standort des Geräts zu tun. Ich hatte auch schon einige male Software, die auf die schlechte deutsche Übersetzung (siehe oben) gewechselt hat, obwohl System-Text-Sprache eigentlich englisch ist. Umstellen ging dann nicht, mit dem Vermerk, dass Programm sei ja intelligent und stellt die Sprache automatisch richtig ein.

Beim ersten Start auf eine von 2 Flaggen zu klicken, das geht schnell und ist robust. Gettext merk ich mir mal für die Zukunft. Allerdings mag ich meine Asset-Dateien gerade eigentlich, die sind auch super um in der Entwicklung einfach mal was auszuprobieren ("es gibt einen Satz neuer Sounds, welche klingen besser?").
Es wäre natürlich schön eine Community mit Fans zu haben die beim Übersetzen helfen. Andererseits bin ich leider was pessimistisch was die Größe meiner Fan-Base angeht. Aber vielleicht sollte ich mal ein paar Bekannte nett fragen, ich würde sicherlich noch Spanisch, Russisch und Chinesisch zusammen kriegen, und damit wäre dann schon echt viel abgedeckt :)
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Krishty
Establishment
Beiträge: 8267
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Krishty »

Jonathan hat geschrieben: 05.04.2024, 07:47Systemsprache klingt nett, aber ehrlich gesagt tut das ja auch nicht. Beispielsweise Ist ja Textsprache (was auf den Buttons steht), Tastaturlayout (UK und US is ja auch schon wieder sehr unterschiedlich) und Uhrzeitformat (MM-DD-YY, *grusel*) komplett unabhängig voneinander und nichts davon hat mit dem physikalischen Standort des Geräts zu tun. Ich hatte auch schon einige male Software, die auf die schlechte deutsche Übersetzung (siehe oben) gewechselt hat, obwohl System-Text-Sprache eigentlich englisch ist. Umstellen ging dann nicht, mit dem Vermerk, dass Programm sei ja intelligent und stellt die Sprache automatisch richtig ein.
Ich verstand Schrompfs Kommentar eigentlich eher als Denkanstoß denn als wörtliche Anleitung, deshalb wollte ich ihn nicht zerpflücken. Aber als User mit englischer Systemsprache, deutschem Tastaturlayout, ISO-Datumseinstellung und Punkt als Dezimaltrennzeichen kann ich ja direkt aufzählen:
  • GetNumberFormat(LOCALE_USER_DEFAULT) formatiert dir Zahlen gemäß User-Einstellung (Punkt oder Komma).
     
  • GetDateFormat(LOCALE_USER_DEFAULT) formatiert dir Datum gemäß User-Einstellung (bei mir 2024-04-05; bei den meisten anderen hier 05.04.2024).
     
  • GetTimeFormat(LOCALE_USER_DEFAULT) und GetDurationFormat(LOCALE_USER_DEFAULT) formatieren dir Uhrzeit (08:45:32) und Zeitspannen (time remaining: 4:15) gemäß User-Einstellung.
     
  • GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_RETURN_NUMBER | LOCALE_IMEASURE) sagt dir, ob der User frühsintflutliche Einheiten (Zoll, Fuß, Steinwürfe, Biberschwänze) gegenüber metrischen bevorzugt. Aus einem gewissen Land war das tatsächlich einer der häufigsten Feature Requests …
     
  • Die Sprache selber habe ich mangels Übersetzung noch nicht gebraucht, aber GetUserDefaultUILanguage() sollte die Funktion sein.
     
  • Tastatur-Layout macht Windows doch automatisch für dich, sofern du Win32 nicht umgehst (etwa durch DirectInput oder Scan Codes)? Jeder Virtual Key Code ist automatisch laut User-Layout, darum ja Virtual.
Der Fehler vieler Programme ist wohl, bloß die Systemsprache abzufragen und alle anderen Formate daraus abzuleiten, statt sie getrennt zu verarbeiten.
Jonathan hat geschrieben: 05.04.2024, 07:47Aber der Hauptgrund, weshalb ich Sprache nicht dynamisch umschalten kann ist, dass ich halt z.B. viele GUI Elemente beim Start erzeuge und dann für den Rest des Spiel benutze. Ich müsste also für alles was irgendwo lokalisiert werden muss Callbacks einbauen und entsprechend dynamisch neu generieren.
Ja, das ist auch mein Problem.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Alexander Kornrumpf
Moderator
Beiträge: 2119
Registriert: 25.02.2009, 13:37

Re: Harald Hoppelhase

Beitrag von Alexander Kornrumpf »

Krishty hat geschrieben: 05.04.2024, 08:56Der Fehler vieler Programme ist wohl, bloß die Systemsprache abzufragen und alle anderen Formate daraus abzuleiten, statt sie getrennt zu verarbeiten.
Also bei Spielen ist es so dass Englisch entweder die Originalsprache ist (best case) oder die beste Lokalisierung nach der Originalsprache. Es würde mich ehrlich gesagt auch wundern, wenn es außerhalb von Japan und China noch Teams gäbe die nicht selbst dann Englisch als Originalsprache haben, wenn die Geographie etwas anderes sagen würden. Hmm ... glauben wir, dass die Witcher 3 Urfassung auf Polnisch ist, eher nicht, aber ich habe auch nicht versucht es zu recherchieren.

Kurz gesagt, man will eigentlich immer Englisch für Spiele aber meine Systemsprache ist Deutsch. Der logische Ort für dieses Setting wäre eigentlich Steam und nicht das Betriebssystem.
Benutzeravatar
Krishty
Establishment
Beiträge: 8267
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Krishty »

Das hast du oben schon gesagt, und im Kontext verstehe ich das nicht recht. Selbst wenn ein Spiel Englisch ist, möchte ich das Datum (etwa im Multiplayer-Chat) als 2024-04-05 oder 05.04.2024 angezeigt bekommen und nicht als 04/05/24?
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Alexander Kornrumpf
Moderator
Beiträge: 2119
Registriert: 25.02.2009, 13:37

Re: Harald Hoppelhase

Beitrag von Alexander Kornrumpf »

Krishty hat geschrieben: 05.04.2024, 09:29 Das hast du oben schon gesagt, und im Kontext verstehe ich das nicht recht. Selbst wenn ein Spiel Englisch ist, möchte ich das Datum (etwa im Multiplayer-Chat) als 2024-04-05 oder 05.04.2024 angezeigt bekommen und nicht als 04/05/24?
Ich denke am Ende läuft es darauf hinaus wie sehr man ein Spiel als kuratiertes Gesamtkunstwerk versteht und wie sehr als "Programm". Das ist natürlich nicht für alle Spiele gleich. Wenn ich in einem Adventure (in dem weitesten Sinne) das Tagebuch von jemandem lese, dann möchte ich eigentlich schon dass das Datum in der Locale des Schreibers ist (sofern eben Englisch, was es ja doch meistens ist) und nicht in meiner. Wenn ich Flugsimulator spiele möchte ich dass die Boeing die Flughöhe in Fuß anzeigt und nicht in Metern.

Ich hatte auch schon Spiele, die die Einheiten haben wählen lassen, kann ich mich nicht erinnern welche das waren, klingt wie etwas was OpenTTD machen würde, aber das waren dann in der Regel wahrscheinlich eher nicht Spiele, die Immersion erzeugen wollen.

Aber wahrscheinlich sollte ich einfach klein beigeben und nach fast 30 Jahren Windows die Systemsprache auf Englisch stellen.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2388
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »


Das Spiel ist endlich fertig!


2024-04-08_00-02-25_Hase_0.2.4_Setup.png

Download hier: https://jonathank.de/games/hase/index.html

Neuerungen:
- neue, dynamische Musik
- besseres Tutorial
- Anleitung in Deutsch / Englisch
- Installer :)
- Viele kleine Verbesserungen & Polishing
- Anpassbare Steuerung

Insgesamt sollte jetzt alles etwas Nicht-Nerd-freundlicher (d.h. zugänglicher) sein. War nochmal echt viel Arbeit und viele Kleinigkeiten, aber ich wollte gerne vermeiden, dass Menschen das Spiel herunterladen und aufgeben, bevor sie es richtig gespielt haben. Vieles Neues sind Details auf die ich halt wert lege und von denen ich nicht immer weiß, wie nötig sie jetzt gerade waren, aber ich habe jetzt erstmal für mich das Gefühl, alles vernünftig gemacht zu haben und bin zufrieden mit mir.

Über Feedback jeglicher Art freue ich mich natürlich, vermutlich gibt es in den nächsten Tagen eine leicht angepasste Version in der ich irgendeine Kleinigkeit fixe.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Schrompf
Moderator
Beiträge: 4876
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Schrompf »

Nochmals: sehr geil, Glückwunsch! Ich werde es bei Gelegenheit mal ausprobieren.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Antworten