summaryrefslogtreecommitdiff
path: root/wizards
diff options
context:
space:
mode:
Diffstat (limited to 'wizards')
-rw-r--r--wizards/source/scriptforge/SF_Exception.xba13
-rw-r--r--wizards/source/scriptforge/SF_Root.xba28
-rw-r--r--wizards/source/scriptforge/SF_Utils.xba6
3 files changed, 29 insertions, 18 deletions
diff --git a/wizards/source/scriptforge/SF_Exception.xba b/wizards/source/scriptforge/SF_Exception.xba
index 2af37d9534f2..aeac2fb91aab 100644
--- a/wizards/source/scriptforge/SF_Exception.xba
+++ b/wizards/source/scriptforge/SF_Exception.xba
@@ -612,7 +612,7 @@ Public Sub Raise(Optional ByVal Number As Variant _
''' SF_Exception.Raise(,, "To divide by zero is not a good idea !")
Dim sMessage As String ' Error message to log and to display
-Dim L10N As Object ' Alias to Interface
+Dim L10N As Object ' Alias to LocalizedInterface
Const cstThisSub = "Exception.Raise"
Const cstSubArgs = "[Number=Err], [Source=Erl], [Description]"
@@ -641,7 +641,7 @@ Try:
If Len(Description) > 0 Then .Description = Description
' Log and display
- Set L10N = _SF_.Interface
+ Set L10N = _SF_._GetLocalizedInterface()
sMessage = L10N.GetText("LONGERRORDESC", .Number, .Source, .Description)
.DebugPrint(sMessage)
If _SF_.DisplayEnabled Then MsgBox L10N.GetText("ERRORNUMBER", .Number) _
@@ -675,7 +675,7 @@ Public Sub RaiseAbort(Optional ByVal Source As Variant)
Dim sLocation As String ' Common header in error messages: location of error
Dim vLocation As Variant ' Split array (library, module, method)
Dim sMessage As String ' Error message to log and to display
-Dim L10N As Object ' Alias to Interface
+Dim L10N As Object ' Alias to LocalizedInterface
Const cstTabSize = 4
Const cstThisSub = "Exception.RaiseAbort"
Const cstSubArgs = "[Source=Erl]"
@@ -691,7 +691,7 @@ Try:
With SF_Exception
' Prepare message header
- Set L10N = _SF_.Interface
+ Set L10N = _SF_._GetLocalizedInterface()
If Len(_SF_.MainFunction) > 0 Then ' MainFunction = [Library.]Module.Method
vLocation = Split(_SF_.MainFunction, ".")
If UBound(vLocation) < 2 Then vLocation = SF_Array.Prepend(vLocation, "ScriptForge")
@@ -701,7 +701,6 @@ Try:
End If
' Log and display
- Set L10N = _SF_.Interface
sMessage = L10N.GetText("LONGERRORDESC", .Number, .Source, .Description)
.DebugPrint(sMessage)
If _SF_.DisplayEnabled Then
@@ -741,7 +740,7 @@ Dim sService As String ' Service name having detected the error
Dim sMethod As String ' Method name having detected the error
Dim vLocation As Variant ' Split array (library, module, method)
Dim sMessage As String ' Message to log and display
-Dim L10N As Object ' Alias of Interface
+Dim L10N As Object ' Alias of LocalizedInterface
Dim sAlt As String ' Alternative error messages
Dim iButtons As Integer ' MB_OK or MB_YESNO
Dim iMsgBox As Integer ' Return value of the message box
@@ -760,7 +759,7 @@ Check:
End If
Try:
- Set L10N = _SF_.Interface
+ Set L10N = _SF_._GetLocalizedInterface()
' Location header common to all error messages
If Len(_SF_.MainFunction) > 0 Then ' MainFunction = [Library.]Module.Method
vLocation = Split(_SF_.MainFunction, ".")
diff --git a/wizards/source/scriptforge/SF_Root.xba b/wizards/source/scriptforge/SF_Root.xba
index 0ed77373d773..31137c7ec041 100644
--- a/wizards/source/scriptforge/SF_Root.xba
+++ b/wizards/source/scriptforge/SF_Root.xba
@@ -83,7 +83,7 @@ Private Toolkit As Object ' com.sun.star.awt.Toolkit
Private FileSystemNaming As String ' If "SYS", file and folder naming is based on operating system notation
Private PythonHelper As String ' File name of Python helper functions (stored in $(inst)/share/Scripts/python)
Private PythonHelper2 As String ' Alternate Python helper file name for test purposes
-Private Interface As Object ' ScriptForge own L10N service
+Private LocalizedInterface As Object ' ScriptForge own L10N service
Private OSName As String ' WIN, LINUX, MACOS
Private SFDialogs As Variant ' Persistent storage for the SFDialogs library
Private SFForms As Variant ' Persistent storage for the SF_Form class in the SFDocuments library
@@ -137,7 +137,7 @@ Private Sub Class_Initialize()
FileSystemNaming = "ANY"
PythonHelper = "ScriptForgeHelper.py"
PythonHelper2 = ""
- Set Interface = Nothing
+ Set LocalizedInterface = Nothing
Set BrowseNodeFactory = Nothing
Set DatabaseContext = Nothing
Set ConfigurationProvider = Nothing
@@ -240,6 +240,20 @@ Finally:
Exit Function
End Function ' ScriptForge.SF_Root._AddToPythonStorage
+REM ------------------------------------------------------------------------------
+Public Function _GetLocalizedInterface() As Object
+''' Returns the LN object instance related to the ScriptForge internal localization
+''' If not yet done, load it from the shipped po files
+''' Makes that the localized user interface is loaded only when needed
+
+Try:
+ If IsNull(LocalizedInterface) Then _LoadLocalizedInterface()
+
+Finally:
+ Set _GetLocalizedInterface = LocalizedInterface
+ Exit Function
+End Function ' ScriptForge.SF_Root._GetLocalizedInterface
+
REM -----------------------------------------------------------------------------
Public Sub _InitPythonStorage()
''' Make PythonStorage an array
@@ -269,7 +283,7 @@ End Sub ' ScriptForge.SF_Root._InitPythonStorage
REM -----------------------------------------------------------------------------
Public Sub _LoadLocalizedInterface(Optional ByVal psMode As String)
''' Build the user interface in a persistent L10N object
-''' Executed - only once - at first ScriptForge invocation by a user script
+''' Executed - only once - at first request of a label inside the LocalizedInterface dictionary
''' Args:
''' psMode: ADDTEXT => the (english) labels are loaded from code below
''' POFILE => the localized labels are loaded from a PO file
@@ -294,19 +308,19 @@ Try:
sLocale = SF_Utils._GetUNOService("OfficeLocale").Language
sPOFolder = .BuildPath(sInstallFolder, "po")
sPOFile = .BuildPath(sPOFolder, sLocale & ".po")
- If sLocale = "en" Then ' Interface loaded by code i.o. read from po file
+ If sLocale = "en" Then ' LocalizedInterface loaded by code i.o. read from po file
psMode = "ADDTEXT"
ElseIf Not .FileExists(sPOFile) Then ' File not found => load texts from code below
psMode = "ADDTEXT"
Else
- Set Interface = CreateScriptService("L10N", sPOFolder, sLocale)
+ Set LocalizedInterface = CreateScriptService("L10N", sPOFolder, sLocale)
End If
End With
End If
If psMode = "ADDTEXT" Then ' Use this mode in development to prepare a new POT file
- Set Interface = CreateScriptService("L10N")
- With Interface
+ Set LocalizedInterface = CreateScriptService("L10N")
+ With LocalizedInterface
' SF_Exception.Raise
.AddText( Context := "ERRORNUMBER" _
, MsgId := "Error %1" _
diff --git a/wizards/source/scriptforge/SF_Utils.xba b/wizards/source/scriptforge/SF_Utils.xba
index 28aed74fa19f..e0381f8a5d5f 100644
--- a/wizards/source/scriptforge/SF_Utils.xba
+++ b/wizards/source/scriptforge/SF_Utils.xba
@@ -226,9 +226,9 @@ Dim sHeader As String ' The specific header to insert
Try:
With _SF_
- If Not IsNull(.Interface) Then .Interface.Dispose()
+ If Not IsNull(.LocalizedInterface) Then .LocalizedInterface.Dispose()
._LoadLocalizedInterface(psMode := "ADDTEXT") ' Force reload of labels from the code
- .Interface.ExportToPOTFile(FileName, Header := sHeader)
+ .LocalizedInterface.ExportToPOTFile(FileName, Header := sHeader)
End With
Finally:
@@ -506,8 +506,6 @@ Public Sub _InitializeRoot(Optional ByVal pbForce As Boolean)
If IsEmpty(_SF_) Or IsNull(_SF_) Then
Set _SF_ = New SF_Root
Set _SF_.[Me] = _SF_
- ' Localization
- _SF_._LoadLocalizedInterface()
End If
End Sub ' ScriptForge.SF_Utils._InitializeRoot