diff options
-rw-r--r-- | wizards/source/scriptforge/SF_L10N.xba | 4 | ||||
-rw-r--r-- | wizards/source/scriptforge/SF_Services.xba | 28 | ||||
-rw-r--r-- | wizards/source/scriptforge/python/scriptforge.py | 5 |
3 files changed, 32 insertions, 5 deletions
diff --git a/wizards/source/scriptforge/SF_L10N.xba b/wizards/source/scriptforge/SF_L10N.xba index 859f67386ba4..6bc6b236f3f3 100644 --- a/wizards/source/scriptforge/SF_L10N.xba +++ b/wizards/source/scriptforge/SF_L10N.xba @@ -51,6 +51,10 @@ Option Explicit ''' CreateScriptService("L10N"[, FolderName[, Locale]]) ''' FolderName: the folder containing the PO-files (in SF_FileSystem.FileNaming notation) ''' Locale: in the form la-CO (language-COUNTRY) +''' Encoding: The character set that should be used (default = UTF-8) +''' Use one of the Names listed in https://www.iana.org/assignments/character-sets/character-sets.xhtml +''' Locale2: fallback Locale to select if Locale po file does not exist (typically "en-US") +''' Encoding2: Encoding of the 2nd Locale file ''' Service invocation examples: ''' Dim myPO As Variant ''' myPO = CreateScriptService("L10N") ' AddText, AddTextsFromDialog and ExportToPOTFile are allowed diff --git a/wizards/source/scriptforge/SF_Services.xba b/wizards/source/scriptforge/SF_Services.xba index c6910aea5e50..b2932553d919 100644 --- a/wizards/source/scriptforge/SF_Services.xba +++ b/wizards/source/scriptforge/SF_Services.xba @@ -521,16 +521,20 @@ Public Function _NewL10N(Optional ByVal pvArgs As Variant) As Variant ''' Use one of the Names listed in https://www.iana.org/assignments/character-sets/character-sets.xhtml ''' Note that LibreOffice probably does not implement all existing sets ''' Default = UTF-8 +''' Locale2: fallback Locale to select if Locale po file does not exist (typically "en-US") +''' Encoding2: Encoding of the 2nd Locale file ''' Returns: the instance or Nothing ''' Exceptions: ''' UNKNOWNFILEERROR The PO file does not exist Dim oL10N As Variant ' Return value Dim sFolderName As String ' Folder containing the PO files -Dim sLocale As String ' Passed argument or that of the user session +Dim sLocale As String ' Passed argument or that of the user session +Dim sLocale2 As String ' Alias for Locale2 Dim oLocale As Variant ' com.sun.star.lang.Locale Dim sPOFile As String ' PO file must exist Dim sEncoding As String ' Alias for Encoding +Dim sEncoding2 As String ' Alias for Encoding2 If SF_Utils._ErrorHandling() Then On Local Error GoTo Catch @@ -547,18 +551,36 @@ Check: sLocale = pvArgs(1) End If If Len(sLocale) = 0 Then ' Called from Python, the Locale argument may be the zero-length string - Set oLocale = SF_Utils._GetUNOService("SystemLocale") + Set oLocale = SF_Utils._GetUNOService("OfficeLocale") sLocale = oLocale.Language & "-" & oLocale.Country End If If UBound(pvArgs) >= 2 Then + If IsMissing(pvArgs(2)) Or IsEmpty(pvArgs(2)) Then pvArgs(2) = "UTF-8" If Not SF_Utils._Validate(pvArgs(2), "Encoding (Arg2)", V_STRING) Then GoTo Catch sEncoding = pvArgs(2) Else sEncoding = "UTF-8" End If + sLocale2 = "" + If UBound(pvArgs) >= 3 Then + If Not SF_Utils._Validate(pvArgs(3), "Locale2 (Arg3)", V_STRING) Then GoTo Catch + sLocale2 = pvArgs(3) + End If + If UBound(pvArgs) >= 4 Then + If Not SF_Utils._Validate(pvArgs(4), "Encoding2 (Arg4)", V_STRING) Then GoTo Catch + sEncoding2 = pvArgs(4) + Else + sEncoding2 = "UTF-8" + End If If Len(sFolderName) > 0 Then sPOFile = SF_FileSystem.BuildPath(sFolderName, sLocale & ".po") - If Not SF_FileSystem.FileExists(sPOFile) Then GoTo CatchNotExists + If Not SF_FileSystem.FileExists(sPOFile) Then + If Len(sLocale2) = 0 Then GoTo CatchNotExists ' No fallback => error + ' Try the fallback + sPOFile = SF_FileSystem.BuildPath(sFolderName, sLocale2 & ".po") + If Not SF_FileSystem.FileExists(sPOFile) Then GoTo CatchNotExists + sEncoding = sEncoding2 + End If End If End If diff --git a/wizards/source/scriptforge/python/scriptforge.py b/wizards/source/scriptforge/python/scriptforge.py index 53a724d9b8f4..dea3a9854ebf 100644 --- a/wizards/source/scriptforge/python/scriptforge.py +++ b/wizards/source/scriptforge/python/scriptforge.py @@ -1194,11 +1194,12 @@ class SFScriptForge: serviceproperties = dict(Folder = False, Languages = False, Locale = False) @classmethod - def ReviewServiceArgs(cls, foldername = '', locale = '', encoding = 'UTF-8'): + def ReviewServiceArgs(cls, foldername = '', locale = '', encoding = 'UTF-8', + locale2 = '', encoding2 = 'UTF-8'): """ Transform positional and keyword arguments into positional only """ - return foldername, locale, encoding + return foldername, locale, encoding, locale2, encoding2 def AddText(self, context = '', msgid = '', comment = ''): return self.ExecMethod(self.vbMethod, 'AddText', context, msgid, comment) |