Ich möchte euch meine UDFs für die Übersetzung von Strings in einem Skript vorstellen.
Die Funktionsweise ist relativ simpel: Es werden Strings aus einer INI in ein Dicitionary-Objekt eingelesen, sodass später einfach darauf zugegriffen werden kann.
Es gibt dabei Funktionen, die die Übersetzungen in einer Datei als unterschiedliche Sektionen erwarten. Es ist auch möglich, für jede Übersetzung eine eigene Datei zu verwenden. Immer entspricht dabei der ini-Sektionsname dem Namen der Sprache.
Hier 2 Beispiele:
Eine INI
#include "_Translate.au3"
[/autoit] [autoit][/autoit] [autoit]$sPath = @ScriptDir & "\translations.ini"
[/autoit] [autoit][/autoit] [autoit]; hole Übersetzungen
$aTranslations = _Translation_SI_ListAll($sPath)
$sTranslation = _Translation_SI_Choose($aTranslations)
;~ If $sTranslation = '' Then $sTranslation = 'English'
_Translation_SI_Load($sPath, $sTranslation)
$sName = InputBox(__("Your name"), __("Please enter your name!"))
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]MsgBox(0, '', StringFormat(__("Hi %s"), $sName))
[/autoit]Mehrere INIs
#include "_Translate.au3"
[/autoit] [autoit][/autoit] [autoit]$sPath = @ScriptDir & "\translations"
[/autoit] [autoit][/autoit] [autoit]; hole Übersetzungen
$aTranslations = _Translation_MI_ListAll($sPath)
$aTranslation = _Translation_MI_Choose($aTranslations)
_Translation_MI_Load($sPath, $aTranslation)
$sName = InputBox(__("Your name"), __("Please enter your name"))
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]MsgBox(0, '', StringFormat(__("Hi %s"), $sName))
[/autoit]
Alle Dateien befinden sich im Anhang.