Handhabung des Unterstrich Symbols in mod.lua und strings.lua - (I18N)

Willkommen in der Transport Fever Community

Welcome to the fan community of Transport Fever and Train Fever, the economic simulators of Urban Games. The community is free for you to share and inform yourself about the game. We cultivate a friendly and objective interaction with each other and our team will be happy to answer any questions you may have.

 

Registration and use is of course free for you.

 

We wish you a lot of fun and hope for active participation.

The Team of the Transport-Fever Community

  • Hallo Community,


    ich habe ein kleines Problem mit dem Verständnis, wie LUA Unterstriche zur I18N in einer Tabelle einsetzt. Hier bei _("Sandbox mode"), und _("Change everything."),


    mod.lua

    strings.lua

    Code
    1. function data()
    2. return {
    3. de = {
    4. ["Sandbox mode"] = "Sandkastenmodus",
    5. ["Change everything."] = "Alles kann geändert werden."
    6. }
    7. }
    8. end

    Kann mir jmd erklären, wie ein Lua Interpreter die Unterstriche nicht als Fehler erkennt? Ich verwende aktuell LUAJ, um die Tabelle der data- Funktion der mod.lua auszulesen. Erhalte aber leider eine Fehlermeldung:

    Code
    1. lua: main.lua:7: attempt to call a nil value (global '_')
    2. stack traceback:
    3. main.lua:7: in function 'data'
    4. main.lua:23: in main chunk
    5. [C]: in ?

    Ist der Unterstrich in LUA eine Implementierte Vorrichtung, oder ist das etwas, was von Transport Fever 2 kommt? Ich brauche nicht die Möglichkeit die Texte für die entsprechnde Sprache zu ersetzen. Mir geht es ums Verständnis, was der Unterstrich bedeutet. Muss ich evtl ein LUA-Modul importieren, dass dieser Unterstrich erkannt wird? Es würde mir ausreichen, wenn der Interpreter diesen Unterstrich verstehen würde, ich benötige keine Übersetzungsfunktion.

    Jmd der sich mit LUA Auskennt wird mir hier sicherlich direkt einen Hinweis geben können.


    Danke.

  • thewildmax

    Changed the title of the thread from “Handhabung der des Unterstrich Symbols in mod.lua und strings.lua - (I18N)” to “Handhabung des Unterstrich Symbols in mod.lua und strings.lua - (I18N)”.
  • Hallo, wirklich helfen tut mir das als nicht lua programmierer nun auch nicht. Handelt es sich bei dem Unterstrich um einen Funktionsnamen? Und diese Funktion ist in der mod.lua nicht vorhanden? Es scheint. als wäre da noch ein Menchanismus in weiteren spielinternen Skripten...


    Wenn ich meinem Skript testweise das hier hinzufüge wird Der Text immer mit "testString" zurückgegeben. Da steckt also doch ein mechanismus in anderen Skripten.

    Da wird dann wohl über die strings.lua Tabelle ein Lookup umgesetzt.

    Code
    1. 




function _(str)
    2. return "testString";
    3. end
  • Hallo,


    ja es ist wohl einfach ein "leerer" Funktionsname. Ich versteh die Syntax als Java Entwickler nur bedingt... Ich hab mich gefragt, ob der Unterstrich eben generell eine spezielle Bedeutung hat, aber sieht wohl so aus, als wäre das einfach ein Zeichen, das als Name erlaubt ist. Soll wohl locale oder globale Variablen kennzeichnen.


    Aber ja hinter der Funktion steckt einfach dann ein Table-Lookup. Tue mich aber noch schwer, wenn in der strings.lua statt des ["blabla"] Terms eine Variable steht. Aber ich hab es verstanden, wie das jetzt wohl zu handhaben ist.


    Danke.

  • Technisch ist der LUA Syntax sehr einfach:

    https://www.lua.org/manual/5.2/manual.html#9

    bzw.

    https://www.lua.org/manual/5.2/manual.html#3.1


    Aber, es gibt mods die auch einfach irgendwelche Globals nutzen oder anderen Kram,

    daher benutzt das Forum hier für die CommonAPI2 eine Version auszulesen nur ein simplen Regex für die Versionsnummer. Sonst müsste man korrekterweise eine komplette LUA Umgebung mit allen Dateien aus TPF2 erschaffen...


    Für die erste TPF2 Version und TPF1 war _ eine LUA Funktion die Translate aufgerufen hat, seit dem Modding Update ist es definitiv eine C Funktion.