Hi,
das Framework ist mir nicht flexibel genug.
Ich will das der Kunde die Sprache anpassen kann!
Und da ist eine 'einfache' Textdatei besser.
So sieht das jetzt aus. Und so finde ich das echt gut!
Wenn ich jetzt eine Sprache aufrufe, die es noch garnicht gibt. Wird eine passende Datei angelegt, die der Kunde sich dann selbst wunderbar übersetzten kann.
'modMain
Public lngMsgboxTest As String = "You have {days} days left for testing!"
Public lngMsgboxNoLizenz As String = "You are not allowed to use this tool"
Public lngMsgboxToManyUsers As String = "There are more users then lizenz!" _
& vbCrLf & "This '3C CTI Solution' stops working!"
Public Function readLanguageFile(ByVal language As String) As Boolean
lng = language
readLngFile()
'modMain
lngMsgboxTest = getLngValue("lngMsgboxTest", lngMsgboxTest)
lngMsgboxNoLizenz = getLngValue("lngMsgboxNoLizenz", lngMsgboxNoLizenz)
lngMsgboxToManyUsers = getLngValue("lngMsgboxToManyUsers", _
lngMsgboxToManyUsers)
Return True
End Function
Function getLngValue(ByVal val As String, ByVal org As String) As String
Dim result As String = org
Try
Dim i As Long
i = 0
Do
If lngStr(i, 0) = val Then
result = lngStr(i, 1)
If InStr(1, result, "###", vbTextCompare) > 0 Then
result = Replace(result, "###", vbCrLf)
End If
Return result
End If
i = i + 1
Loop
writeLanguageFile(val, org)
Return result
Catch ex As Exception
'ToDo Fehlende Einträge an die Sprachdatei anhängen
writeLanguageFile(val, org)
Return result
End Try
End Function
Private Sub writeLanguageFile(ByVal val As String, ByVal org As String)
Dim fs As FileStream = New FileStream(Application.StartupPath & _
"\language\CTISolution_" & lng & ".lng", FileMode.Append, _
FileAccess.Write)
' --- Stream öffnen
Dim w As StreamWriter = New StreamWriter(fs)
w.Write(val & "|" & Replace(org, vbCrLf, "###"))
w.WriteLine()
w.Close()
fs.Close()
End Sub
Private Function readLngFile() As Boolean
Dim lngFile As String = ""
Dim result As Boolean = False
Dim i As Long, lngTmp As String
Dim fn As Integer
fn = FreeFile()
i = 0
lngFile = Trim(Application.StartupPath) & "\language\CTISolution_" & _
lng & ".lng"
If File.Exists(lngFile) Then
result = True
End If
If result = True Then
Dim stmReader As StreamReader
stmReader = File.OpenText(lngFile)
Do While Not stmReader.EndOfStream
i = i + 1
stmReader.ReadLine()
Loop
stmReader.Close()
ReDim lngStr(i, 1)
i = 0
stmReader = File.OpenText(lngFile)
Do While Not stmReader.EndOfStream
lngTmp = stmReader.ReadLine()
If Trim$(lngTmp) <> "" And Left(lngTmp, 1) <> "#" Then
lngStr(i, 0) = Left(lngTmp, InStr(1, lngTmp, "|") - 1)
lngStr(i, 1) = Mid(lngTmp, InStr(1, lngTmp, "|") + 1, Len( _
lngTmp))
i = i + 1
End If
Loop
stmReader.Close()
Else
Dim fs As FileStream = New FileStream(Application.StartupPath & _
"\language\CTISolution_" & lng & ".lng", FileMode.Create, _
FileAccess.Write)
fs.Close()
End If
End Function |