MS FNDD_LOGIN_USER_MODULE, Übersetzung etc

This commit is contained in:
SchreiberM 2023-04-24 17:08:23 +02:00
parent e4c4b2e7fe
commit 489711fa91
12 changed files with 5371 additions and 5189 deletions

View File

@ -17,9 +17,6 @@
<setting name="GHOSTUSER" serializeAs="String">
<value />
</setting>
<setting name="SYS_Override_Language" serializeAs="String">
<value>en-US</value>
</setting>
</DD_Clipboard_Watcher.My.MySettings>
<DevExpress.LookAndFeel.Design.AppSettings>
<setting name="DefaultAppSkin" serializeAs="String">

View File

@ -34,7 +34,7 @@ Public Class ClassDataASorDB
Try
Dim oSql = String.Format("SELECT * FROM [dbo].[FNDD_CHECK_USER_MODULE] ('{0}','CW',{1},'')", USER_USERNAME, CLIENT_SELECTED)
Dim DT_CHECKUSER_MODULE As DataTable
DT_CHECKUSER_MODULE = GetDatatable(oSql, "TBDD_USER_MODULE", $"USERNAME = '{USER_USERNAME.ToLower}' AND MODULE_SHORT = 'CW'", "", "")
DT_CHECKUSER_MODULE = Database.GetDatatable(oSql)
If DT_CHECKUSER_MODULE.Rows.Count = 0 Then
Logger.Info("DT_CHECKUSER_MODULE.Rows.Count = 0", True)

View File

@ -8,6 +8,7 @@ Imports DigitalData.Modules.EDMI.API
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
Imports System.Globalization
Imports System.Threading
Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
Public Class ClassInit
Public _lizenzManager As clsLicenseManager
@ -195,9 +196,9 @@ Public Class ClassInit
End Function
Public Function CheckModuleData()
Try
Dim oSql = String.Format("SELECT * FROM [dbo].[FNDD_CHECK_USER_MODULE] ('{0}','CW',{1},'{2}')", USER_USERNAME, CLIENT_SELECTED, My.Settings.SYS_Override_Language)
Dim oSql = String.Format("SELECT * FROM [dbo].[FNDD_LOGIN_USER_MODULE] ('{0}','CW',{1})", USER_USERNAME, CLIENT_SELECTED)
Dim DT_CHECKUSER_MODULE As DataTable
DT_CHECKUSER_MODULE = _DataASorDB.GetDatatable(oSql, "TBDD_USER_MODULE", $"USERNAME = '{USER_USERNAME.ToLower}' AND MODULE_SHORT = 'CW'", "", "")
DT_CHECKUSER_MODULE = Database.GetDatatable(oSql)
If DT_CHECKUSER_MODULE.Rows.Count = 0 Then
Logger.Info("DT_CHECKUSER_MODULE.Rows.Count = 0", True)
@ -215,12 +216,9 @@ Public Class ClassInit
USER_SHORTNAME = NotNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_SHORTNAME"), "")
USER_EMAIL = NotNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_EMAIL"), "")
If My.Settings.SYS_Override_Language <> String.Empty Then
USER_LANGUAGE = My.Settings.SYS_Override_Language
Logger.Info("Override Language [{0}] from Config will be used!", USER_LANGUAGE)
Else
USER_LANGUAGE = NotNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_LANGUAGE"), "de-DE")
End If
USER_LANGUAGE = NotNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_LANGUAGE"), "de-DE")
USER_DATE_FORMAT = NotNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_DATE_FORMAT"), "dd.MM.yyyy")
USER_IN_MODULE = NotNull(DT_CHECKUSER_MODULE.Rows(0).Item("MODULE_ACCESS"), False)
@ -362,8 +360,8 @@ Public Class ClassInit
oSQL = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & USER_ID & " AND MODULE = 'Clipboard-Watcher'"
Database.ExecuteNonQuery(oSQL)
oSQL = String.Format("INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,CLIENT_ID,MODULE,VERSION_CLIENT,MACHINE_NAME,LANGUAGE_OVERRIDE) VALUES
({0},{1},'Clipboard-Watcher','{2}','{3}','{4}')", USER_ID, 0, My.Application.Info.Version.ToString, Environment.MachineName, My.Settings.SYS_Override_Language)
oSQL = $"INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,CLIENT_ID,MODULE,VERSION_CLIENT,MACHINE_NAME) VALUES
({USER_ID},1,'Clipboard-Watcher','{My.Application.Info.Version.ToString}','Environment.MachineName')"
Database.ExecuteNonQuery(oSQL)
If USER_IS_ADMIN = True Then
@ -381,6 +379,9 @@ Public Class ClassInit
WD_UNICODE = Database.GetScalarValue("SELECT WD_UNICODE FROM TBCW_CONFIGURATION WHERE GUID = 1")
GDPICTURE_LICENSE = Database.GetScalarValue("SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = 'GDPICTURE'")
oSQL = "SELECT LANG_CODE FROM TBDD_GUI_LANGUAGE WHERE ACTIVE = 1 ORDER BY LANG_CODE"
BASEDATA_DT_LANGUAGE = Database.GetDatatable(oSQL)
Logger.Debug(" >> Count Users logged in: " & USERCOUNT_LOGGED_IN.ToString, False)
If LICENSE_COUNT < USERCOUNT_LOGGED_IN And LICENSE_EXPIRED = False Then

View File

@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.6.1.0")>
<Assembly: AssemblyVersion("2.7.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@ -91,15 +91,6 @@ Namespace My
Return CType(Me("DD_ECMConnectionString"),String)
End Get
End Property
<Global.System.Configuration.ApplicationScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("en-US")> _
Public ReadOnly Property SYS_Override_Language() As String
Get
Return CType(Me("SYS_Override_Language"),String)
End Get
End Property
End Class
End Namespace

View File

@ -19,8 +19,5 @@
&lt;/SerializableConnectionString&gt;</DesignTimeValue>
<Value Profile="(Default)">Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd</Value>
</Setting>
<Setting Name="SYS_Override_Language" Type="System.String" Scope="Application">
<Value Profile="(Default)">en-US</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -31,8 +31,10 @@ Partial Class frmMain
Me.bbtniKonfig = New DevExpress.XtraBars.BarButtonItem()
Me.bbtnitemAdmin = New DevExpress.XtraBars.BarButtonItem()
Me.lblRefresh = New DevExpress.XtraBars.BarStaticItem()
Me.bbtnitmLanguage = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.GroupBox2 = New System.Windows.Forms.GroupBox()
@ -63,11 +65,15 @@ Partial Class frmMain
'
'RibbonControl1
'
resources.ApplyResources(Me.RibbonControl1, "RibbonControl1")
Me.RibbonControl1.CommandLayout = DevExpress.XtraBars.Ribbon.CommandLayout.Simplified
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.lblUser, Me.lblVersion, Me.lblApplicationServer, Me.bbtniKonfig, Me.bbtnitemAdmin, Me.lblRefresh})
resources.ApplyResources(Me.RibbonControl1, "RibbonControl1")
Me.RibbonControl1.MaxItemId = 7
Me.RibbonControl1.ExpandCollapseItem.ImageOptions.ImageIndex = CType(resources.GetObject("RibbonControl1.ExpandCollapseItem.ImageOptions.ImageIndex"), Integer)
Me.RibbonControl1.ExpandCollapseItem.ImageOptions.LargeImageIndex = CType(resources.GetObject("RibbonControl1.ExpandCollapseItem.ImageOptions.LargeImageIndex"), Integer)
Me.RibbonControl1.ExpandCollapseItem.ImageOptions.SvgImage = CType(resources.GetObject("RibbonControl1.ExpandCollapseItem.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.RibbonControl1.ExpandCollapseItem.SearchTags = resources.GetString("RibbonControl1.ExpandCollapseItem.SearchTags")
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.lblUser, Me.lblVersion, Me.lblApplicationServer, Me.bbtniKonfig, Me.bbtnitemAdmin, Me.lblRefresh, Me.bbtnitmLanguage})
Me.RibbonControl1.MaxItemId = 8
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
@ -80,6 +86,8 @@ Partial Class frmMain
'
resources.ApplyResources(Me.lblUser, "lblUser")
Me.lblUser.Id = 1
Me.lblUser.ImageOptions.ImageIndex = CType(resources.GetObject("lblUser.ImageOptions.ImageIndex"), Integer)
Me.lblUser.ImageOptions.LargeImageIndex = CType(resources.GetObject("lblUser.ImageOptions.LargeImageIndex"), Integer)
Me.lblUser.ImageOptions.SvgImage = CType(resources.GetObject("lblUser.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.lblUser.Name = "lblUser"
Me.lblUser.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
@ -88,6 +96,8 @@ Partial Class frmMain
'
resources.ApplyResources(Me.lblVersion, "lblVersion")
Me.lblVersion.Id = 2
Me.lblVersion.ImageOptions.ImageIndex = CType(resources.GetObject("lblVersion.ImageOptions.ImageIndex"), Integer)
Me.lblVersion.ImageOptions.LargeImageIndex = CType(resources.GetObject("lblVersion.ImageOptions.LargeImageIndex"), Integer)
Me.lblVersion.ImageOptions.SvgImage = CType(resources.GetObject("lblVersion.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.lblVersion.Name = "lblVersion"
Me.lblVersion.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
@ -96,6 +106,8 @@ Partial Class frmMain
'
resources.ApplyResources(Me.lblApplicationServer, "lblApplicationServer")
Me.lblApplicationServer.Id = 3
Me.lblApplicationServer.ImageOptions.ImageIndex = CType(resources.GetObject("lblApplicationServer.ImageOptions.ImageIndex"), Integer)
Me.lblApplicationServer.ImageOptions.LargeImageIndex = CType(resources.GetObject("lblApplicationServer.ImageOptions.LargeImageIndex"), Integer)
Me.lblApplicationServer.ImageOptions.SvgImage = CType(resources.GetObject("lblApplicationServer.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.lblApplicationServer.Name = "lblApplicationServer"
Me.lblApplicationServer.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
@ -104,6 +116,8 @@ Partial Class frmMain
'
resources.ApplyResources(Me.bbtniKonfig, "bbtniKonfig")
Me.bbtniKonfig.Id = 4
Me.bbtniKonfig.ImageOptions.ImageIndex = CType(resources.GetObject("bbtniKonfig.ImageOptions.ImageIndex"), Integer)
Me.bbtniKonfig.ImageOptions.LargeImageIndex = CType(resources.GetObject("bbtniKonfig.ImageOptions.LargeImageIndex"), Integer)
Me.bbtniKonfig.ImageOptions.SvgImage = CType(resources.GetObject("bbtniKonfig.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.bbtniKonfig.Name = "bbtniKonfig"
'
@ -111,6 +125,8 @@ Partial Class frmMain
'
resources.ApplyResources(Me.bbtnitemAdmin, "bbtnitemAdmin")
Me.bbtnitemAdmin.Id = 5
Me.bbtnitemAdmin.ImageOptions.ImageIndex = CType(resources.GetObject("bbtnitemAdmin.ImageOptions.ImageIndex"), Integer)
Me.bbtnitemAdmin.ImageOptions.LargeImageIndex = CType(resources.GetObject("bbtnitemAdmin.ImageOptions.LargeImageIndex"), Integer)
Me.bbtnitemAdmin.ImageOptions.SvgImage = CType(resources.GetObject("bbtnitemAdmin.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.bbtnitemAdmin.Name = "bbtnitemAdmin"
'
@ -118,13 +134,24 @@ Partial Class frmMain
'
resources.ApplyResources(Me.lblRefresh, "lblRefresh")
Me.lblRefresh.Id = 6
Me.lblRefresh.ImageOptions.ImageIndex = CType(resources.GetObject("lblRefresh.ImageOptions.ImageIndex"), Integer)
Me.lblRefresh.ImageOptions.LargeImageIndex = CType(resources.GetObject("lblRefresh.ImageOptions.LargeImageIndex"), Integer)
Me.lblRefresh.ImageOptions.SvgImage = CType(resources.GetObject("lblRefresh.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.lblRefresh.Name = "lblRefresh"
Me.lblRefresh.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
'
'bbtnitmLanguage
'
resources.ApplyResources(Me.bbtnitmLanguage, "bbtnitmLanguage")
Me.bbtnitmLanguage.Id = 7
Me.bbtnitmLanguage.ImageOptions.ImageIndex = CType(resources.GetObject("bbtnitmLanguage.ImageOptions.ImageIndex"), Integer)
Me.bbtnitmLanguage.ImageOptions.LargeImageIndex = CType(resources.GetObject("bbtnitmLanguage.ImageOptions.LargeImageIndex"), Integer)
Me.bbtnitmLanguage.ImageOptions.SvgImage = CType(resources.GetObject("bbtnitmLanguage.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.bbtnitmLanguage.Name = "bbtnitmLanguage"
'
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1})
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2})
Me.RibbonPage1.Name = "RibbonPage1"
resources.ApplyResources(Me.RibbonPage1, "RibbonPage1")
'
@ -135,13 +162,20 @@ Partial Class frmMain
Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
resources.ApplyResources(Me.RibbonPageGroup1, "RibbonPageGroup1")
'
'RibbonPageGroup2
'
Me.RibbonPageGroup2.Alignment = DevExpress.XtraBars.Ribbon.RibbonPageGroupAlignment.Far
Me.RibbonPageGroup2.ItemLinks.Add(Me.bbtnitmLanguage)
Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
resources.ApplyResources(Me.RibbonPageGroup2, "RibbonPageGroup2")
'
'RibbonStatusBar1
'
resources.ApplyResources(Me.RibbonStatusBar1, "RibbonStatusBar1")
Me.RibbonStatusBar1.ItemLinks.Add(Me.lblUser)
Me.RibbonStatusBar1.ItemLinks.Add(Me.lblVersion)
Me.RibbonStatusBar1.ItemLinks.Add(Me.lblApplicationServer)
Me.RibbonStatusBar1.ItemLinks.Add(Me.lblRefresh)
resources.ApplyResources(Me.RibbonStatusBar1, "RibbonStatusBar1")
Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
'
@ -152,9 +186,9 @@ Partial Class frmMain
'
'GroupBox2
'
resources.ApplyResources(Me.GroupBox2, "GroupBox2")
Me.GroupBox2.Controls.Add(Me.labelStatus)
Me.GroupBox2.Controls.Add(Me.labelRefresh)
resources.ApplyResources(Me.GroupBox2, "GroupBox2")
Me.GroupBox2.Name = "GroupBox2"
Me.GroupBox2.TabStop = False
'
@ -170,9 +204,9 @@ Partial Class frmMain
'
'GroupBox1
'
resources.ApplyResources(Me.GroupBox1, "GroupBox1")
Me.GroupBox1.Controls.Add(Me.Label2)
Me.GroupBox1.Controls.Add(Me.labelHotkey)
resources.ApplyResources(Me.GroupBox1, "GroupBox1")
Me.GroupBox1.Name = "GroupBox1"
Me.GroupBox1.TabStop = False
'
@ -195,38 +229,38 @@ Partial Class frmMain
'
'cmstrpNotifyIcon
'
resources.ApplyResources(Me.cmstrpNotifyIcon, "cmstrpNotifyIcon")
Me.cmstrpNotifyIcon.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FunktionenToolStripMenuItem, Me.tsmiChangeState, Me.ClientÖffnenToolStripMenuItem, Me.ClientBeendenToolStripMenuItem})
Me.cmstrpNotifyIcon.Name = "cmstrpNotifyIcon"
resources.ApplyResources(Me.cmstrpNotifyIcon, "cmstrpNotifyIcon")
'
'FunktionenToolStripMenuItem
'
resources.ApplyResources(Me.FunktionenToolStripMenuItem, "FunktionenToolStripMenuItem")
Me.FunktionenToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BisherigenAblaufAnzeigenToolStripMenuItem})
Me.FunktionenToolStripMenuItem.Name = "FunktionenToolStripMenuItem"
resources.ApplyResources(Me.FunktionenToolStripMenuItem, "FunktionenToolStripMenuItem")
'
'BisherigenAblaufAnzeigenToolStripMenuItem
'
Me.BisherigenAblaufAnzeigenToolStripMenuItem.Name = "BisherigenAblaufAnzeigenToolStripMenuItem"
resources.ApplyResources(Me.BisherigenAblaufAnzeigenToolStripMenuItem, "BisherigenAblaufAnzeigenToolStripMenuItem")
Me.BisherigenAblaufAnzeigenToolStripMenuItem.Name = "BisherigenAblaufAnzeigenToolStripMenuItem"
'
'tsmiChangeState
'
resources.ApplyResources(Me.tsmiChangeState, "tsmiChangeState")
Me.tsmiChangeState.Image = Global.DD_Clipboard_Watcher.My.Resources.Resources.Symbols_Stop_16xLG
Me.tsmiChangeState.Name = "tsmiChangeState"
resources.ApplyResources(Me.tsmiChangeState, "tsmiChangeState")
'
'ClientÖffnenToolStripMenuItem
'
resources.ApplyResources(Me.ClientÖffnenToolStripMenuItem, "ClientÖffnenToolStripMenuItem")
Me.ClientÖffnenToolStripMenuItem.Image = Global.DD_Clipboard_Watcher.My.Resources.Resources.door_open
Me.ClientÖffnenToolStripMenuItem.Name = "ClientÖffnenToolStripMenuItem"
resources.ApplyResources(Me.ClientÖffnenToolStripMenuItem, "ClientÖffnenToolStripMenuItem")
'
'ClientBeendenToolStripMenuItem
'
resources.ApplyResources(Me.ClientBeendenToolStripMenuItem, "ClientBeendenToolStripMenuItem")
Me.ClientBeendenToolStripMenuItem.Image = Global.DD_Clipboard_Watcher.My.Resources.Resources.cancel
Me.ClientBeendenToolStripMenuItem.Name = "ClientBeendenToolStripMenuItem"
resources.ApplyResources(Me.ClientBeendenToolStripMenuItem, "ClientBeendenToolStripMenuItem")
'
'TimerClose
'
@ -238,15 +272,15 @@ Partial Class frmMain
'
'ContextMenuStripForm
'
resources.ApplyResources(Me.ContextMenuStripForm, "ContextMenuStripForm")
Me.ContextMenuStripForm.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MinimierenToolStripMenuItem})
Me.ContextMenuStripForm.Name = "ContextMenuStripForm"
resources.ApplyResources(Me.ContextMenuStripForm, "ContextMenuStripForm")
'
'MinimierenToolStripMenuItem
'
resources.ApplyResources(Me.MinimierenToolStripMenuItem, "MinimierenToolStripMenuItem")
Me.MinimierenToolStripMenuItem.Image = Global.DD_Clipboard_Watcher.My.Resources.Resources.ReduceSize
Me.MinimierenToolStripMenuItem.Name = "MinimierenToolStripMenuItem"
resources.ApplyResources(Me.MinimierenToolStripMenuItem, "MinimierenToolStripMenuItem")
'
'ImageList1
'
@ -327,4 +361,6 @@ Partial Class frmMain
Friend WithEvents MinimierenToolStripMenuItem As ToolStripMenuItem
Friend WithEvents ImageList1 As ImageList
Friend WithEvents AlertControl1 As DevExpress.XtraBars.Alerter.AlertControl
Friend WithEvents bbtnitmLanguage As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
End Class

View File

@ -319,6 +319,52 @@
NC41LDEwLDEwYzAsNS41LTQuNSwxMC0xMCwxMCAgIGMtNC44LDAtOC45LTMuNC05LjgtOGgtNGMxLDYu
OCw2LjgsMTIsMTMuOCwxMmM3LjcsMCwxNC02LjMsMTQtMTRTMjMuNywyLDE2LDJ6IiBjbGFzcz0iQmx1
ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
</data>
<data name="bbtnitmLanguage.Caption" xml:space="preserve">
<value>Language</value>
</data>
<data name="bbtnitmLanguage.ImageOptions.ImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="bbtnitmLanguage.ImageOptions.LargeImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="bbtnitmLanguage.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPIGAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGFuZ3VhZ2UiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJ
LlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KPC9zdHlsZT4NCiAgPHBh
dGggZD0iTTMuMywyOGMxLjMtMS4xLDIuOS0xLjcsNC43LTEuOXYzLjlDNi4yLDI5LjcsNC42LDI5LjEs
My4zLDI4eiBNMTQuOSwxOGwtMiwyaDUuMWMtMC4xLTAuNy0wLjMtMS40LTAuNS0yICBIMTQuOXogTTEw
LDIydjIuMWMyLjMsMC4yLDQuNCwxLjEsNi4xLDIuNWMxLTEuMywxLjctMi45LDEuOS00LjZoLTcuMUgx
MHogTTEuOSwyNi42YzEuNy0xLjQsMy44LTIuMyw2LjEtMi41VjIySDAuMSAgQzAuMiwyMy43LDAuOSwy
NS4zLDEuOSwyNi42eiBNMTAsMjkuOWMxLjgtMC4yLDMuNC0wLjksNC43LTEuOWMtMS4zLTEuMS0yLjkt
MS43LTQuNy0xLjlWMjkuOXogTTUsMThjLTEuNSwwLTIuNy0xLjEtMi45LTIuNSAgYzAsMC0wLjEtMC4x
LTAuMS0wLjFjLTEsMS4zLTEuNywyLjktMS45LDQuNkg4di0ySDdINXoiIGNsYXNzPSJCbHVlIiAvPg0K
ICA8cGF0aCBkPSJNMjksMEg1QzQuNSwwLDQsMC41LDQsMXYxNGMwLDAuNSwwLjUsMSwxLDFoNXY0bDQt
NGgxNWMwLjUsMCwxLTAuNSwxLTFWMUMzMCwwLjUsMjkuNSwwLDI5LDB6IiBjbGFzcz0iWWVsbG93IiAv
Pg0KICA8cGF0aCBkPSJNMTMuOSwxMmgtMmwtMC42LTEuOEg4LjVMOCwxMkg2bDIuOS04SDExTDEzLjks
MTJ6IE0xMC45LDguOGwtMC45LTIuN0MxMCw1LjksMTAsNS43LDEwLDUuNGgwICBjMCwwLjItMC4xLDAu
NS0wLjEsMC43TDguOSw4LjhIMTAuOXogTTE0LjksMTJWNGgyLjljMC45LDAsMS42LDAuMiwyLjEsMC41
YzAuNSwwLjMsMC43LDAuOCwwLjcsMS40YzAsMC40LTAuMSwwLjgtMC40LDEuMSAgYy0wLjMsMC4zLTAu
NywwLjUtMS4xLDAuN3YwYzAuNiwwLjEsMSwwLjMsMS40LDAuNmMwLjMsMC4zLDAuNSwwLjgsMC41LDEu
M2MwLDAuNy0wLjMsMS4zLTAuOCwxLjdDMTkuNiwxMS44LDE4LjksMTIsMTgsMTJIMTQuOXogICBNMTYu
Nyw1LjN2MS45aDAuOGMwLjQsMCwwLjctMC4xLDAuOS0wLjNzMC4zLTAuNCwwLjMtMC43YzAtMC42LTAu
NC0wLjktMS4zLTAuOUgxNi43eiBNMTYuNyw4LjZ2Mi4xaDFjMC40LDAsMC43LTAuMSwxLTAuMyAgYzAu
Mi0wLjIsMC40LTAuNSwwLjQtMC44YzAtMC4zLTAuMS0wLjYtMC4zLTAuOGMtMC4yLTAuMi0wLjYtMC4z
LTEtMC4zSDE2Ljd6IE0yNy45LDExLjdjLTAuNiwwLjMtMS4zLDAuNC0yLjMsMC40ICBjLTEuMiwwLTIu
Mi0wLjQtMi45LTEuMWMtMC43LTAuNy0xLjEtMS43LTEuMS0yLjljMC0xLjMsMC40LTIuMywxLjItMy4x
YzAuOC0wLjgsMS44LTEuMiwzLjEtMS4yYzAuOCwwLDEuNCwwLjEsMiwwLjN2MS43ICBjLTAuNS0wLjMt
MS4xLTAuNS0xLjgtMC41Yy0wLjgsMC0xLjQsMC4yLTEuOCwwLjdjLTAuNSwwLjUtMC43LDEuMS0wLjcs
MS45YzAsMC44LDAuMiwxLjQsMC43LDEuOHMxLDAuNywxLjgsMC43ICBjMC43LDAsMS4zLTAuMiwxLjkt
MC41VjExLjd6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
</value>
</data>
<data name="RibbonPageGroup1.Text" xml:space="preserve">
@ -4898,7 +4944,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABU
CwAAAk1TRnQBSQFMAgEBBQEAARwBAQEcAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
CwAAAk1TRnQBSQFMAgEBBQEAASQBAQEkAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

View File

@ -117,26 +117,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="RibbonControl1.ExpandCollapseItem.ImageOptions.ImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="RibbonControl1.ExpandCollapseItem.ImageOptions.LargeImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="RibbonControl1.ExpandCollapseItem.ImageOptions.SvgImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="RibbonControl1.ExpandCollapseItem.SearchTags" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="lblUser.ImageOptions.ImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="lblUser.ImageOptions.LargeImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<assembly alias="DevExpress.Data.v21.2" name="DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="lblUser.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
@ -161,12 +141,6 @@
IkJsYWNrIiAvPg0KICA8L2c+DQo8L3N2Zz4L
</value>
</data>
<data name="lblVersion.ImageOptions.ImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="lblVersion.ImageOptions.LargeImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="lblVersion.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
@ -196,12 +170,6 @@
<data name="lblApplicationServer.Caption" xml:space="preserve">
<value>Serveur d'application actif</value>
</data>
<data name="lblApplicationServer.ImageOptions.ImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="lblApplicationServer.ImageOptions.LargeImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="lblApplicationServer.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
@ -227,12 +195,6 @@
<data name="bbtniKonfig.Caption" xml:space="preserve">
<value>Paramètres de base</value>
</data>
<data name="bbtniKonfig.ImageOptions.ImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="bbtniKonfig.ImageOptions.LargeImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="bbtniKonfig.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
@ -256,12 +218,6 @@
IkJsYWNrIiAvPg0KICA8L2c+DQo8L3N2Zz4L
</value>
</data>
<data name="bbtnitemAdmin.ImageOptions.ImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="bbtnitemAdmin.ImageOptions.LargeImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="bbtnitemAdmin.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
@ -292,12 +248,6 @@
NSwxMC43LDEyLDkuMyw5Ljl6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
</value>
</data>
<data name="lblRefresh.ImageOptions.ImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="lblRefresh.ImageOptions.LargeImageIndex" type="System.Int32, mscorlib">
<value>-1</value>
</data>
<data name="lblRefresh.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
@ -322,6 +272,46 @@
NC41LDEwLDEwYzAsNS41LTQuNSwxMC0xMCwxMCAgIGMtNC44LDAtOC45LTMuNC05LjgtOGgtNGMxLDYu
OCw2LjgsMTIsMTMuOCwxMmM3LjcsMCwxNC02LjMsMTQtMTRTMjMuNywyLDE2LDJ6IiBjbGFzcz0iQmx1
ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
</data>
<data name="bbtnitmLanguage.Caption" xml:space="preserve">
<value>langue</value>
</data>
<data name="bbtnitmLanguage.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPIGAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGFuZ3VhZ2UiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJ
LlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KPC9zdHlsZT4NCiAgPHBh
dGggZD0iTTMuMywyOGMxLjMtMS4xLDIuOS0xLjcsNC43LTEuOXYzLjlDNi4yLDI5LjcsNC42LDI5LjEs
My4zLDI4eiBNMTQuOSwxOGwtMiwyaDUuMWMtMC4xLTAuNy0wLjMtMS40LTAuNS0yICBIMTQuOXogTTEw
LDIydjIuMWMyLjMsMC4yLDQuNCwxLjEsNi4xLDIuNWMxLTEuMywxLjctMi45LDEuOS00LjZoLTcuMUgx
MHogTTEuOSwyNi42YzEuNy0xLjQsMy44LTIuMyw2LjEtMi41VjIySDAuMSAgQzAuMiwyMy43LDAuOSwy
NS4zLDEuOSwyNi42eiBNMTAsMjkuOWMxLjgtMC4yLDMuNC0wLjksNC43LTEuOWMtMS4zLTEuMS0yLjkt
MS43LTQuNy0xLjlWMjkuOXogTTUsMThjLTEuNSwwLTIuNy0xLjEtMi45LTIuNSAgYzAsMC0wLjEtMC4x
LTAuMS0wLjFjLTEsMS4zLTEuNywyLjktMS45LDQuNkg4di0ySDdINXoiIGNsYXNzPSJCbHVlIiAvPg0K
ICA8cGF0aCBkPSJNMjksMEg1QzQuNSwwLDQsMC41LDQsMXYxNGMwLDAuNSwwLjUsMSwxLDFoNXY0bDQt
NGgxNWMwLjUsMCwxLTAuNSwxLTFWMUMzMCwwLjUsMjkuNSwwLDI5LDB6IiBjbGFzcz0iWWVsbG93IiAv
Pg0KICA8cGF0aCBkPSJNMTMuOSwxMmgtMmwtMC42LTEuOEg4LjVMOCwxMkg2bDIuOS04SDExTDEzLjks
MTJ6IE0xMC45LDguOGwtMC45LTIuN0MxMCw1LjksMTAsNS43LDEwLDUuNGgwICBjMCwwLjItMC4xLDAu
NS0wLjEsMC43TDguOSw4LjhIMTAuOXogTTE0LjksMTJWNGgyLjljMC45LDAsMS42LDAuMiwyLjEsMC41
YzAuNSwwLjMsMC43LDAuOCwwLjcsMS40YzAsMC40LTAuMSwwLjgtMC40LDEuMSAgYy0wLjMsMC4zLTAu
NywwLjUtMS4xLDAuN3YwYzAuNiwwLjEsMSwwLjMsMS40LDAuNmMwLjMsMC4zLDAuNSwwLjgsMC41LDEu
M2MwLDAuNy0wLjMsMS4zLTAuOCwxLjdDMTkuNiwxMS44LDE4LjksMTIsMTgsMTJIMTQuOXogICBNMTYu
Nyw1LjN2MS45aDAuOGMwLjQsMCwwLjctMC4xLDAuOS0wLjNzMC4zLTAuNCwwLjMtMC43YzAtMC42LTAu
NC0wLjktMS4zLTAuOUgxNi43eiBNMTYuNyw4LjZ2Mi4xaDFjMC40LDAsMC43LTAuMSwxLTAuMyAgYzAu
Mi0wLjIsMC40LTAuNSwwLjQtMC44YzAtMC4zLTAuMS0wLjYtMC4zLTAuOGMtMC4yLTAuMi0wLjYtMC4z
LTEtMC4zSDE2Ljd6IE0yNy45LDExLjdjLTAuNiwwLjMtMS4zLDAuNC0yLjMsMC40ICBjLTEuMiwwLTIu
Mi0wLjQtMi45LTEuMWMtMC43LTAuNy0xLjEtMS43LTEuMS0yLjljMC0xLjMsMC40LTIuMywxLjItMy4x
YzAuOC0wLjgsMS44LTEuMiwzLjEtMS4yYzAuOCwwLDEuNCwwLjEsMiwwLjN2MS43ICBjLTAuNS0wLjMt
MS4xLTAuNS0xLjgtMC41Yy0wLjgsMC0xLjQsMC4yLTEuOCwwLjdjLTAuNSwwLjUtMC43LDEuMS0wLjcs
MS45YzAsMC44LDAuMiwxLjQsMC43LDEuOHMxLDAuNywxLjgsMC43ICBjMC43LDAsMS4zLTAuMiwxLjkt
MC41VjExLjd6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
</value>
</data>
<data name="RibbonPageGroup1.Text" xml:space="preserve">
@ -4910,7 +4900,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABU
CwAAAk1TRnQBSQFMAgEBBQEAATABAQEwAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
CwAAAk1TRnQBSQFMAgEBBQEAAUABAQFAAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

File diff suppressed because it is too large Load Diff

View File

@ -7,6 +7,7 @@ Imports DigitalData.Modules.ZooFlow
Imports DigitalData.Modules.Windows
Imports DigitalData.GUIs.ClipboardWatcher
Imports DevExpress.XtraBars.ToastNotifications
Imports DigitalData.GUIs.Common
Public Class frmMain
Private WithEvents _Hotkey As New ClassHotkey(Me)
@ -125,6 +126,12 @@ Public Class frmMain
RibbonPageGroup1.Visible = False
RibbonControl1.Minimized = True
End If
If BASEDATA_DT_LANGUAGE.Rows.Count > 1 Then
bbtniKonfig.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
Else
bbtniKonfig.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
End If
lblVersion.Caption = My.Application.Info.Version.ToString
lblUser.Caption = String.Format(lblUser.Caption, USER_USERNAME)
Catch ex As Exception
@ -510,4 +517,14 @@ Public Class frmMain
Private Sub bbtniKonfig_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniKonfig.ItemClick
frmConfig_Basic.ShowDialog()
End Sub
Private Sub bbtnitmLanguage_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmLanguage.ItemClick
Dim oNForm As New frmLanguage_Select(LogConfig, MyConnectionString, USER_USERNAME, BASEDATA_DT_LANGUAGE, "EF")
oNForm.ShowDialog
If oNForm.pChanged = True Then
MsgBox("For the changes to take effect, the program must now be closed. Restart it afterwards.", MsgBoxStyle.Exclamation, "Restart:")
Me.Close()
End If
End Sub
End Class

View File

@ -89,4 +89,5 @@ Module modCurrent
Public BASIC_CONF_VISIBLE As Boolean = True
Public NOMATCH_INFO As Boolean = False
Public NOTIFY_MODE As String = "NotifyIcon"
Public BASEDATA_DT_LANGUAGE As DataTable
End Module