Page 1 of 1

lang() - Mache deine Skripte multilingual

Posted: 27 May 2017, 14:31
by bichlepa
Du schreibst ein Programm in AutoHotkey und möchtest, dass die Sprache einstellbar ist? Du ärgerst dich, weil die Implementierung einer Mehrsprachigkeit so kompliziert ist? Dann probier das aus!
lang() - Mache deine Skripte multilingual

Dieser Skript ist schnell eingebunden und fortan reicht es, lang() aufzurufen, um einen übersetzbaren String zu bekommen! Es macht fast keinen Aufwand!

Mit dabei ist ein Übersetzungstool, welches auf einfache Weise erlaubt, Übersetzungen anzufertigen. Es kann standalone weitergegeben werden, damit freiwillige Übersetzer deine Programme übersetzen.
Image

Hier geht es zum GibHub Projekt.

Dort sind mehrere Demonstrationsskripte, anhand deren erklärt wird, wie lang() benutzt wird.
Screenshot von einem der Demos:
Image Image

Tutorial:

Re: lang() - Mache deine Skripte multilingual

Posted: 27 May 2017, 14:42
by BoBo
:clap: :thumbup: :clap:

Re: lang() - Mache deine Skripte multilingual

Posted: 08 Jun 2017, 20:07
by Gucky_87
Applaus!!! Applaus!!! Applaus!!!
Wie g**l ist das denn?
Was hab ich mir oft eins abgebrochen, um Programme mehrsprachig zu machen.
Eine Frage am Rande (ich hab´s noch nicht getestet, da gerade erst hier gefunden):
Kann ich auch eigene Sprachen implementieren, also Sprachen, die es offiziell nicht gibt,
für die es also keinen Ländercode gibt?

Gucky.

Re: lang() - Mache deine Skripte multilingual

Posted: 09 Jun 2017, 04:56
by bichlepa
Ja, es ist möglich, jede beliebige Sprache hinzuzufügen. (Auch Klingonisch) :D
Ländercode wird nirgends benötigt.

Re: lang() - Mache deine Skripte multilingual

Posted: 09 Jun 2017, 05:12
by Gucky_87
Nein, klingonisch ist mir zu schwer....
Aber Du bist dicht dran XD XD - Nur etwas 'blauer' (grins).

Re: lang() - Mache deine Skripte multilingual

Posted: 11 Aug 2017, 04:19
by Guest
Genau das, was icht suchte!
Endlich muss ich nicht mehr 2-3 nur im GUI unterschiedliche skripte warten!

Hoch soll er leben, dieser programmierer!
Klaus Daube, Zürich

Re: lang() - Mache deine Skripte multilingual

Posted: 11 Aug 2017, 04:22
by kdaube
Wunderful, superb!
Endlich muss ich nicht mehr mehrere sprachversionen von skripten warten!

Ein 3-faches Hoch!
Klaus Daube, Zürich

Re: lang() - Mache deine Skripte multilingual

Posted: 11 Aug 2017, 10:26
by kdaube
Na, ja, mit dem essen kommt der appetit - und mit der verwendung kommen die fragen:
Meine dateien (script, ini files) sind alle UTF-8. Die downloaded skripte sind UTF-8, die ini files sind aber UTF-16 LE und die beispiele funtkionieren bestens.
Wo muss ich in language.ahk schrauben, damit der text im GUI nicht als Wörterbuch, sondern als Wörterbuch erscheint?

en.ini: UItxt01 = Dictionary:
de.ini: UItxt01 = Wörterbuch (WB):
GUI: Gui, Add, Text, x005 y005 w125 h020 , % lang("UItxt01")

Wenn ich die en.ini und de.ini auf UTF-16 LE stelle, ist alles OK - aber es wäre schon schön, wenn ich alle files in der gleichen codierung hätte...

Re: lang() - Mache deine Skripte multilingual

Posted: 11 Aug 2017, 10:36
by just me
Die Windows-Funktionen für INI-Dateien, die von IniRead genutzt werden, unterstützen UTF-8 nicht. Sie können nur ANSI oder UTF-16.

Re: lang() - Mache deine Skripte multilingual

Posted: 11 Aug 2017, 11:45
by kdaube
Aha, wieder einmal Windows...
Danke für den hinweis - ich vergesse das immer wieder.

Re: lang() - Mache deine Skripte multilingual

Posted: 11 Aug 2017, 14:01
by bichlepa
Erstmal, danke für den Lob! :superhappy:

Wenn ich es richtig verstehe, pflegst du die .ini Dateien von Hand. Für das Erstellen der .ini Dateien und das hinzufügen von neuen Texten zum Übersetzen gibt es Tools.
Ich habe gerade ein kleines Tutorial gedreht, bei ich zeige, wie man am praktischsten damit arbeitet. (Es ist mein allererstes Tutorial :shifty: )


Re: lang() - Mache deine Skripte multilingual

Posted: 12 Aug 2017, 02:28
by kdaube
Danke für das tutorial - ist gut gemacht - auch mit dem magic typing!
Ich verwende im script kurze bezeichner für die texte - habe mir das so aus der JavaScript welt angewöhnt (eigentlich Adobe ExtendScript), sodass ich die texte gut 'manuell' warten kann.
Die funktion lang habe ich um folgende zeile ergänzt, um mehrzeilige texte (vor allem in meldungen) absetzen zu können:
StringReplace, initext, initext, `%n`%, `n, all ; newline
Funktioniert bestens.

Re: lang() - Mache deine Skripte multilingual

Posted: 12 Aug 2017, 04:42
by BoBo
bichlepa wrote:...
Ich habe gerade ein kleines Tutorial gedreht, bei ich zeige, wie man am praktischsten damit arbeitet. (Es ist mein allererstes Tutorial :shifty: )
Schönes vTut! lang("Merci") fürs lang("sharing") :thumbup:

Re: lang() - Mache deine Skripte multilingual

Posted: 16 May 2018, 12:45
by Gast29
Hallo ihr Lieben, Hallo bichlepa. Ich habe ein kleines Problem

Was bedeutet diese Fehlermeldung? ---> Language "%p_lang%" is invalid.

Wieso ist diese Sprache ungültig? Ich habe vorher deine Funktion immer benutzt und es hat einwandfrei funktioniert. Dann hab ich mein Script NUR umbenannt und seit dem funktioniert es nicht mehr. Verstehe nicht warum der Wert bzw Sprache de oder en ungültig ist. Alle Pfade stimmen und die en.ini und auch die de.ini existieren aufjedenfall. Hmm ich hoffe das mir wer helfen kann



Mfg

Ralf

Re: lang() - Mache deine Skripte multilingual

Posted: 17 May 2018, 04:01
by kdaube
Hast Du einfach filenamen des scripts von Paul Bichler (language.ahk) umbenannt?
Das sollte nur das #include pragma in Deinem eigenen script beeinflussen.
Im lang() script wird das eigene verzeichnis abgefragt und nötigenfalls (wennn nicht "Language") darauf reagiert.

Die fehlermeldung deutet aber darauf hin, dass im lang() script die zeile
MsgBox, 16, , Language "%p_lang%" is invalid.
gar nicht afugelöst werden konnte, sonst müsste die meldung zb heissen
Language "ru" is invalid.

Meine vermutung: der language code beim initialisierung-aufruf wurde in grosbuchstaben statt kleinbuchstaben gegeben:
zb lang_setLanguage("Fr")
statt lang_setLanguage("fr")

MIr scheint nämlich die abfrage auf die language codes in Pauls script "case sensitive" zu sein.
HTH Klaus Daube

Re: lang() - Mache deine Skripte multilingual

Posted: 17 May 2018, 10:26
by bichlepa
Hallo Ralf,
Man kann der Funktion lang_setLanguage(p_lang) entweder einen Index, die Kurzbezeichnung (z.B. "de"), den englischen Namen (z.B. "German") oder den Namen in der Sprache (z.B. "Deutsch") geben. Die Meldung kommt, wenn die zu setzende Sprache nicht gefunden wurde.
Nach allem, was du schreibst, dürfte es aber nicht passieren. Die Vermutungen, die Klaus angestellt hat, treffen leider nicht zu. Der einzige Grund, den ich noch für möglich halte, ist, dass er vielleicht doch im falschen Ordner sucht.

Ich habe im Quellcode ein paar Zeilen Code ergänzt. Es wird jetzt geprüft, ob die Fallback Sprache (Standardmäßig "en") im Ordner gefunden wurde. Falls nicht, wird eine Fehlermeldung mitsamt dem Ordnerpfad angezeigt.
Bitte zieh dir die Änderung aus GitHub und probiere es aus.

Wenn das nicht hilft, kannst du mir gern dein Projekt schicken. Ich werfe dann einen Blick drauf.

Re: lang() - Mache deine Skripte multilingual

Posted: 19 May 2018, 08:07
by Ralf29
Hallo Leute,

Danke euch, danke dir bichlepa!! Es lag daran das der Pfad nicht gefunden wurde, dank deiner kleinen ergänzung konnt ich es dann doch nachvollziehen :) Tut mir leid das ich doch nicht ganz recht nachgeschaut habe. Jetzt funktioniert wieder alles.

Achja ich wollt somit auch nochmal danke sagen für deine geniale lang() Funktion ;)


Einen schönen Tag euch allen!

Bis dann.

Ralf

Re: lang() - Mache deine Skripte multilingual

Posted: 19 Jun 2018, 08:27
by Gucky_87
Also, bichlepa, erstmal ein großes Lob und ein DICKES DANKEEEEE für diese klasse Arbeit.
Ich konnte es leider erst jetzt mal so richtig ausprobieren muss aber sagen, dass dieses Tool wirklich sehr nützlich und auch einfach zu implementieren ist.

Auch das Video ist, dafür dass es das erste war, gut gelungen.
Weiter so.

Grüße,

Gucky.