Mehrsprachigkeit mit XML
Verfasst: 16.12.2005 16:00
Hallö,
mit dem nachstehenden Code möchte ich demonstrieren, wie einfach es
ist, mittels XML Mehrsprachigkeit in einer Applikation zu realisieren.
Hinweis: Der Code benötigt die MSXML3-Lib aus den PBOSL.
hier noch die entsprechende XML-Datei. Bitte unter '[c]languages.xml[/c]' speichern.
Have fun ... Kiffi
mit dem nachstehenden Code möchte ich demonstrieren, wie einfach es
ist, mittels XML Mehrsprachigkeit in einer Applikation zu realisieren.
Hinweis: Der Code benötigt die MSXML3-Lib aus den PBOSL.
Code: Alles auswählen
Enumeration
#frmMain
#lblLanguage
#cboLanguage
#lblName
#txtName
#lblSurname
#txtSurname
#cmdOK
#cmdCancel
EndEnumeration
Global oDocLanguages ; Global XML-Object to hold all language-values
Procedure.s GetText(ID$, Language$)
oNode = MSXML3_SelectSingleNode(oDocLanguages, "items/item[@id='" + ID$ + "']/" + Language$)
If oNode
ReturnValue$=MSXML3_GetText(oNode)
MSXML3_ReleaseObject(oNode)
EndIf
ProcedureReturn ReturnValue$
EndProcedure
Procedure ReloadCaptions(Language$)
SetWindowTitle(#frmMain, GetText("frmMain", Language$))
SetGadgetText (#lblLanguage, GetText("lblLanguage", Language$))
SetGadgetText (#lblName, GetText("lblName", Language$))
SetGadgetText (#lblSurname, GetText("lblSurname", Language$))
SetGadgetText (#cmdOK, GetText("cmdOK", Language$))
SetGadgetText (#cmdCancel, GetText("cmdCancel", Language$))
EndProcedure
oDocLanguages = MSXML3_CreateDomDocument()
MSXML3_Load(oDocLanguages, "languages.xml")
If OpenWindow(#frmMain, 0, 0, 320, 140, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "")
If CreateGadgetList(WindowID(#frmMain))
TextGadget (#lblLanguage, 10, 15, 60, 20, "")
ComboBoxGadget(#cboLanguage, 70, 10, 240, 200)
AddGadgetItem (#cboLanguage, -1, "en")
AddGadgetItem (#cboLanguage, -1, "de")
SetGadgetState(#cboLanguage, 0)
TextGadget (#lblName, 10, 45, 60, 20, "")
StringGadget(#txtName, 70, 40, 240, 20, "")
TextGadget (#lblSurname, 10, 75, 60, 20, "")
StringGadget(#txtSurname, 70, 70, 240, 20, "")
ButtonGadget(#cmdOK, 145, 105, 80, 25, "")
ButtonGadget(#cmdCancel, 230, 105, 80, 25, "")
ReloadCaptions("en")
Repeat
WWE = WaitWindowEvent()
EGI = EventGadgetID()
Select WWE
Case #PB_Event_Gadget
Select EGI
Case #cboLanguage
Select GetGadgetState(#cboLanguage)
Case 0 : ReloadCaptions("en")
Case 1 : ReloadCaptions("de")
EndSelect
Case #cmdOK : Quit = 1
Case #cmdCancel : Quit = 1
EndSelect
Case #PB_Event_CloseWindow : Quit = 1
EndSelect
Until Quit = 1
EndIf
EndIf
Code: Alles auswählen
<?xml version="1.0" encoding="ISO-8859-1"?>
<items>
<item id="frmMain">
<de>Beispiel: Mehrsprachigkeit</de>
<en>Demo: Multilingualism</en>
</item>
<item id="lblLanguage">
<de>&Sprache:</de>
<en>&Language:</en>
</item>
<item id="lblName">
<de>&Vorname:</de>
<en>&Name:</en>
</item>
<item id="lblSurname">
<de>&Nachname:</de>
<en>&Surname:</en>
</item>
<item id="cmdOK">
<de>OK</de>
<en>OK</en>
</item>
<item id="cmdCancel">
<de>Abbrechen</de>
<en>Cancel</en>
</item>
</items>