1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
Public Class MultiLanguage
Private mSection As String = ""
Private mDefault As String = ""
Private mLineBreak As String = "\n"
Private INI As New MyINI
Public Property Section() As String
Get
Section = mSection
End Get
Set(ByVal Value As String)
mSection = Value
End Set
End Property
Public Property DefaultString() As String
Get
DefaultString = mDefault
End Get
Set(ByVal Value As String)
mDefault = Value
End Set
End Property
Public Property LineBreak() As String
Get
LineBreak = mLineBreak
End Get
Set(ByVal Value As String)
mLineBreak = Value
End Set
End Property
Sub New(ByVal FileName As String)
INI.INIFile = FileName
INI.Read()
End Sub
Public Sub Refresh(ByVal FileName As String)
INI.INIFile = FileName
INI.Read()
End Sub
''' <summary>
''' Diese Funktion ließt eine bestimmte Zeile aus der Sprachdatei heraus.
''' Die Eigenschaften Path und Section müssen hierfür schon vorher festgelegt sein.
''' </summary>
''' <param name="LineID">Die Zeilen ID die ausgelesen werden soll</param>
''' <param name="PlaceHolderVars">Die Variablen für die Platzhalter im String</param>
Public Function GetLine(ByVal LineID As String, ByVal ParamArray PlaceHolderVars() As String) As String
GetLine = GetLine(mSection, LineID, mDefault, mLineBreak, PlaceHolderVars)
End Function
''' <summary>
''' Diese Funktion ließt eine bestimmte Zeile aus der Sprachdatei heraus.
''' Hierfür müssen keine Eigenschaften vorher festgelegt worden sein da man diese alle hier angeben muss.
''' </summary>
''' <param name="Section">Die Sektion in der sich der auszulesende String befindet</param>
''' <param name="Key">Der Key der Zeile der ausgelesen werden soll</param>
''' <param name="Default">Ein Defaultwert der zurückgegeben wird falls die auszulesende Zeile nicht existiert</param>
''' <param name="LineBreak">Ein String der als Zeilenumbruchidentifikation dient z.B.: \n</param>
''' <param name="PlaceHolderVars">Die Variabeln die durch die Platzhalter im String ersetzt werden sollen (%1 bis %X...)</param>
Public Function GetLine(ByVal Section As String, ByVal Key As String, ByVal [Default] As String, ByVal LineBreak As String, ByVal ParamArray PlaceHolderVars() As Object) As String
Try
Dim Parameters() As String
Dim Value As String = ""
Value = INI.GetINIValue(Section, Key)
'Platzhalter suchen (%1, %2, %3 ...) und Variablen aus dem Paramter Array einfügen
'Als erstes den String nach % splitten
Parameters = Split(Value, "%")
'Dann prüfen ob Parameter angabe mit anzahl der Platzhalter übereinstimmt. Wenn OK dann weiter
If Parameters.Length = PlaceHolderVars.Length + 1 Then
For i As Integer = 0 To Parameters.Length - 2
Value = Value.Replace(("%" & i + 1).ToString, (PlaceHolderVars(i)).ToString)
Next i
Else
Throw New Exception("Parametercount doesn't match to placeholdercount!")
End If
'Alles fertig und weiter gehts mit den Zeilenumbrüchen
'Falls kein Delimeter angegeben wurde dann den Wert übergeben und beenden
If mLineBreak = "" Then
Return Value
End If
'Zeilenumbrüche hinzufügen
Value = Value.Replace(LineBreak, vbNewLine)
Return Value
Catch ex As Exception
Return [Default]
End Try
End Function
End Class
|