Здравствуйте!
Может быть кому-то пригодится ещё вариант определения языка.
Опытным путём определил, что код языка содержится в файле FrameGeneral.CATSettings в одном байте.
Это 31-й байт после строки "UserInterfaceLanguage".
Шестнадцатеричные значения байта для некоторых языков следующие:
русский - E5, английский - CA, немецкий - 5A, французский - 56, итальянский - C2.
Также недавно определял язык интерфейса путём считывания кода языка из файла FrameGeneral.xml, полученного программно утилитой CATBatGenXMLSet.exe.
Вот функция на VB6, возвращающая язык интерфейса в виде строки:
- Код: Выделить всё
Public Function GetLanguage() As String
Dim CatApp As INFITF.Application
Dim GenString As String
Dim XmlFile As Integer
On Error Resume Next
Set CatApp = GetObject(, "CATIA.Application")
GenString = """" & CatApp.Path & "\CATBatGenXMLSet.exe""" & " """ & App.Path & """" & " FrameGeneral"
CatApp.SystemService.ExecuteProcessus GenString
On Error Resume Next
Err.Clear
XmlFile = FreeFile
Open App.Path & "\FrameGeneral.xml" For Input As #XmlFile
If (Err.Number <> 0) Then
GetLanguage = "Error"
GoTo EndOpen
End If
' иначе - считывание языка из файла FrameGeneral.xml
Dim XmlString As String
Do While Not EOF(XmlFile)
Line Input #XmlFile, XmlString
If InStr(1, XmlString, "UserInterfaceLanguage", VbCompareMethod.vbTextCompare) > 0 Then
Line Input #XmlFile, XmlString
Exit Do
End If
Loop
Dim s1 As Integer
Dim s2 As Integer
Dim codeStr As String
s1 = InStr(1, XmlString, "<Value>", VbCompareMethod.vbTextCompare)
If s1 > 0 Then
s1 = s1 + Len("<Value>")
s2 = InStr(s1, XmlString, "</Value>", VbCompareMethod.vbTextCompare)
If s2 > 0 Then
codeStr = Mid(XmlString, s1, s2 - s1)
Select Case codeStr
Case 0
GetLanguage = "EnvironmentLanguage"
Case 714
GetLanguage = "English"
Case 598
GetLanguage = "French"
Case 602
GetLanguage = "German"
Case 706
GetLanguage = "Italian"
Case 807
GetLanguage = "Japanese"
Case 608
GetLanguage = "Korean"
Case 741
GetLanguage = "Russian"
Case 1828
GetLanguage = "SimplifiedChinese"
Case Else
GetLanguage = "UnknownLanguage"
End Select
End If
End If
EndOpen:
Close #XmlFile
Err.Clear
If CatApp.FileSystem.FileExists(App.Path & "\FrameGeneral.xml") Then CatApp.FileSystem.DeleteFile (App.Path & "\FrameGeneral.xml")
End Function