ScriptForge.L10N tjeneste

Denne tjenesten gir en rekke metoder knyttet til oversettelse av strenger med minimal innvirkning pÄ programmets kildekode. Metodene som tilbys av L10N-tjenesten kan hovedsakelig brukes til Ä:

note

Akronymet L10N stÄr for lokalisering og refererer til et sett med prosedyrer for Ä oversette programvare til et bestemt land eller omrÄde.


PO-filer har lenge vÊrt fremmet i friprogramvarefellesskapet som et middel til Ä tilby flersprÄklige brukergrensesnitt. Dette oppnÄs ved bruk av menneskelesbare tekstfiler med en veldefinert struktur som spesifiserer, for et gitt sprÄk, kildesprÄkstrengen og den lokaliserte strengen.

Hovedfordelen med PO-formatet er dissosiasjon av programmereren og oversetteren. PO-filer er uavhengige tekstfiler, sÄ programmereren kan sende POT-malfiler til oversettere, som deretter vil oversette innholdet og returnere de oversatte PO-filene for hvert stÞttet sprÄk.

tip

L10N-tjenesten er basert pÄ GNU-implementeringen av PO (portable object)-filer. For Ä lÊre mer om dette filformatet, besÞk GNU gettext Utilities: PO Files .


Denne tjenesten implementerer metodene som er oppfĂžrt nedenfor:

note

Merk at de to fĂžrste metodene brukes til Ă„ bygge et sett med oversettbare strenger og eksportere dem til en POT-fil. Det er imidlertid ikke obligatorisk Ă„ lage POT-filer ved hjelp av disse metodene. Siden de er tekstfiler, kunne programmereren ha laget dem ved hjelp av et hvilket som helst tekstredigeringsprogram.


TjenestepÄkallelse

FÞr du bruker L10N-tjenesten, mÄ ScriptForge-biblioteket lastes eller importeres:

note

‱ Grunnleggende makroer krever Ă„ laste ScriptForge-biblioteket ved hjelp av fĂžlgende setning:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

‱ Python-skript krever import fra scriptforge-modulen:
fra scriptforge import CreateScriptService


Det er flere mÄter Ä pÄkalle L10N-tjenesten ved Ä bruke opptil fem valgfrie argumenter som spesifiserer mappen der PO-filer er lagret, lokaliteten og kodingen som skal brukes, samt en reserve-PO-fil og dens koding .

Syntaks:

CreateScriptService("L10N", opt foldername: str, opt locale: str, encoding: str = "UTF-8", opt locale2: str, encoding2: str = "UTF-8"): svc

mappenavn: Mappen som inneholder PO-filene. Det mÄ uttrykkes i FileSystem.FileNaming-notasjonen.

locale: En streng i formen "la-CO" (sprÄk-LAND) eller bare i formen "la" (sprÄk).

koding: Tegnsettet som skal brukes. Standardkodingen er "UTF-8".

locale2: En streng som spesifiserer reservelokaliteten som skal brukes i tilfelle PO-filen som tilsvarer lokaliteten definert locale-parameteren ikke eksisterer. Denne parameteren uttrykkes kun i formen "la-CO" (sprÄk-LAND) eller "la" (sprÄk).

koding2: Tegnsettet til reserve-PO-filen som tilsvarer lokale2-argumentet. Standardkodingen er "UTF-8".

note

For Ä lÊre mer om navnene pÄ tegnsett, besÞk IANAs tegnsett side. VÊr oppmerksom pÄ at LibreOfficeDev ikke implementerer alle eksisterende tegnsett.


Eksempel:

I Basic

FĂžlgende eksempel instansierer L10N-tjenesten uten valgfrie argumenter. Dette vil bare aktivere metodene AddText og ExportToPOTFile, som er nyttig for Ă„ lage POT-filer.


      GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
      Dim myPO As Variant
      Set myPO = CreateScriptService("L10N")
    

Eksemplet nedenfor spesifiserer mappen som inneholder PO-filene. Fordi lokaliteten ikke er definert, vil tjenesteforekomsten bruke lokaliteten som er definert for LibreOfficeDev-brukergrensesnittet, som er den samme lokaliteten som er definert i OfficeLocale-egenskapen til Plattform-tjeneste.


      Set myPO = CreateScriptService("L10N", "C:\myPOFiles")
    
warning

Eksemplet ovenfor vil resultere i en kjĂžretidsfeil hvis PO-filen som tilsvarer OfficeLocale-lokaliteten ikke eksisterer i den angitte mappen.


I eksemplet nedenfor er lokaliteten eksplisitt definert til Ä vÊre belgisk fransk ("fr-BE"), derfor vil tjenesten laste filen "fr-BE.po" fra mappen "C:\myPOFiles". Hvis filen ikke eksisterer, vil det oppstÄ en feil.


      Set myPO = CreateScriptService("L10N", "C:\myPOFiles", "fr-BE", "UTF-8")
    

For Ä unngÄ feil er det mulig Ä spesifisere en foretrukket og en reservelokale og koding. FÞlgende eksempel vil fÞrst prÞve Ä laste filen "fr-BE.po" fra den angitte mappen, og hvis den ikke eksisterer, vil filen "en-US.po" lastes.


      Set myPO = CreateScriptService("L10N", "C:\myPOFiles", "fr-BE", "UTF-8", "en-US", "UTF-8")
    
Tipsikon

PO-filer mÄ navngis i formen "la-CO.po" eller "la.po", der "la" refererer til sprÄket og "CO" er landet. Noen eksempler er: "en-US.po", "fr-BE.po" eller "fr.po".


Det anbefales Ă„ frigjĂžre ressurser etter bruk:


      Set myPO = myPO.Dispose()
    
I Python

Eksemplene ovenfor kan oversettes til Python som fĂžlger:


      from scriptforge import CreateScriptService
      myPO = CreateScriptService('L10N')
    

      myPO = CreateScriptService('L10N', r'C:\myPOFiles')
    

      myPO = CreateScriptService('L10N', r'C:\myPOFiles', 'fr-BE')
    

      myPO = CreateScriptService('L10N', r'C:\myPOFiles', 'fr-BE', 'UTF-8', 'en-US', 'UTF-8')
      myPO = myPO.Dispose()
    
note

Flere forekomster av L10N-tjenesten kan eksistere side om side. Hver forekomst mÄ imidlertid bruke en egen katalog for sine PO-filer.


Egenskaper

Navn

Skrivebeskyttet

Type

Beskrivelse

Folder

Ja

String

Mappen som inneholder PO-filene (se egenskapen FileSystem.FileName for Ă„ lĂŠre om notasjonen som brukes).

Languages

Ja

Array

En null-basert matrise som viser alle basenavnene (uten ".po"-utvidelsen) til PO-filene som finnes i den spesifiserte mappen.

Locale

Ja

String

Den aktive sprÄk-LAND-kombinasjonen. Denne egenskapen vil i utgangspunktet vÊre tom hvis tjenesten ble instansiert uten noen av de valgfrie argumentene.


Liste over metoder i L10N-tjenesten

AddText
AddTextsFromDialog

ExportToPOTFile

GetText


AddText

Legger til en ny oppfÞring i listen over lokaliserbare strenger. Det mÄ ikke eksistere ennÄ.

Metoden returnerer Sann hvis vellykket.

Syntaks:

svc.AddText(context: str = '', msgid: str = '', comment: str = ''): bool

Parametre:

kontekst: NÞkkelen for Ä hente den oversatte strengen med GetText-metoden. Denne parameteren har en standardverdi pÄ "".

msgstr: Den uoversatte strengen, som er teksten som vises i programkoden. Det mÄ ikke vÊre tomt. msgid blir nÞkkelen til Ä hente den oversatte strengen via GetText-metoden nÄr kontekst er tom.

msgid-strengen kan inneholde et hvilket som helst antall plassholdere (%1 %2 %3 ...) for dynamisk endring av strengen under kjĂžring.

kommentar: Valgfri kommentar som legges til ved siden av strengen for Ă„ hjelpe oversettere.

Eksempel:

Eksemplet nedenfor lager et sett med strenger pÄ engelsk:

I Basic

      myPO.AddText(, "This is a string to be included in a POT file")
      myPO.AddText("CTX1", "A string with a context")
      myPO.AddText(, "Provide a String value", Comment := "Do not translate the word String")
    
I Python

      myPO.AddText(msgid = 'This is a string to be included in a POT file')
      myPO.AddText('CTX1', 'A string with a context')
      myPO.AddText(msgid = 'Provide a String value', comment = 'Do not translate the word String')
    

AddTextsFromDialog

Trekker automatisk ut strenger fra en dialogboks og legger dem til listen over lokaliserbare tekststrenger. FĂžlgende strenger trekkes ut:

Metoden returnerer Sann hvis vellykket.

note

Dialogboksen som strenger skal trekkes ut fra mÄ ikke vÊre Äpen nÄr metoden anropes.


NÄr en L10N tjenesteforekomst opprettes fra en eksisterende PO-fil, bruk GetTextsFromL10N-metoden fra Dialog-tjenesten for automatisk Ä laste alle oversatte strenger inn i dialogboksen.

Syntaks:

svc.AddTextsFromDialog(dialog: svc): bool

Parametre:

dialog: en dialogtjenesteforekomst som tilsvarer dialogen som strenger skal trekkes ut fra.

Eksempel:

FĂžlgende eksempel trekker ut alle strenger fra dialogboksen "MyDialog" som er lagret i "Standard"-biblioteket og eksporterer dem til en POT-fil:

I Basic

      oDlg = CreateScriptService("Dialog", "GlobalScope", "Standard", "MyDialog")
      myPO = CreateScriptService("L10N")
      myPO.AddTextsFromDialog(oDlg)
      myPO.ExportToPOTFile("C:\en-US.pot")
    
I Python

      dlg = CreateScriptService("Dialog", "GlobalScope", "Standard", "Dialog1")
      myPO = CreateScriptService("L10N")
      myPO.AddTextsFromDialog(dlg)
      myPO.ExportToPOTFile("C:\en-US.pot")
    

ExportToPOTFile

Eksporterer et sett med uoversatte strenger som en POT-fil.

For Ä bygge et sett med strenger kan du enten bruke en rekke AddText-metodekall, eller ved en vellykket pÄkalling av L10N-tjenesten med mappenavnet argument tilstede. Det er ogsÄ mulig Ä bruke en kombinasjon av begge teknikkene.

Metoden returnerer Sann hvis vellykket.

Syntaks:

svc.ExportToPOTFile(filename: str, header: str = '', encoding:str = 'UTF-8'): bool

Parametre:

filename: The full output file name in FileSystem.FileNaming notation.

header: Kommentarer som legges til pÄ toppen av den genererte POT-filen.

Ikke ta med noen innledende "#"-tegn. Hvis du vil at overskriften skal deles inn i flere linjer, setter du inn escape-sekvenser (\n) der det er relevant. En standard overskrift vil bli lagt til ved siden av teksten som er spesifisert i argumentet overskrift.

koding: Tegnsettet som skal brukes (Standard = "UTF-8").

Eksempel:


       ' Basic
       myPO.ExportToPOTFile("C:\myFile.pot", Header := "First line of the header\nSecond line of the header")
    

      # Python
      myPO.ExportToPOTFile('C:\myFile.pot', header = 'First line of the header\nSecond line of the header')
    
note

Den genererte filen skal bestÄ msgfmt --check GNU-kommandoen.


GetText

Henter den oversatte strengen som tilsvarer det gitte msgid argumentet.

En liste med argumenter kan spesifiseres for Ă„ erstatte plassholderne (%1, %2, ...) i strengen.

Hvis ingen oversatt streng blir funnet, returnerer metoden den uoversatte strengen etter Ă„ ha erstattet plassholderne med de angitte argumentene.

Syntaks:

Denne metoden kan kalles enten med det fulle navnet GetText eller ved snarveien _ (en enkelt understreking):

svc.GetText(msgid: str, args: any[0..*]): str

svc._(msgid: str, args: any[0..*]): str

note

I ScriptForge-biblioteket er alle metoder som begynner med "_"-tegnet reservert kun for intern bruk. Imidlertid er snarveien _ brukt for GetText det eneste unntaket fra denne regelen, og kan derfor trygt brukes i Basic- og Python-skript.


Parametre:

msgstr: Den uoversatte strengen, som er teksten som vises i programkoden. Det mÄ ikke vÊre tomt. Den kan inneholde et hvilket som helst antall plassholdere (%1 %2 %3 ...) som kan brukes til Ä sette inn tekst dynamisk under kjÞring.

I tillegg til Ä bruke en enkelt msgid-streng, godtar denne metoden ogsÄ fÞlgende formater:

args: Verdier som skal settes inn i plassholderne. Enhver variabeltype er tillatt, men bare strenger, tall og datoer vil bli vurdert.

Eksempel:

I Basic

Tenk pÄ at fÞlgende kode kjÞrer pÄ en LibreOfficeDev-installasjon med lokalitet satt til "es-ES". I tillegg er det en fil "es-ES.po" inne i den angitte mappen som oversetter strengen som sendes til GetText-metoden:


      myPO = CreateScriptService("L10N", "C:\myPOFiles\")
      myPO.GetText("Welcome %1! Hope you enjoy this program", "John")
      ' "ÂĄBienvenido John! Espero que disfrutes de este programa"
    
I Python

      myPO = CreateScriptService('L10N', r"C:\myPOFiles")
      myPO.GetText('Welcome %1! Hope you enjoy this program', 'John')
      # "ÂĄBienvenido John! Espero que disfrutes de este programa"
    
warning

Alle ScriptForge Grunnleggende rutiner eller identifikatorer som er prefikset med et understrekingstegn "_" er reservert for intern bruk. De er ikke ment Ă„ brukes i grunnleggende makroer eller Python-skript.