Tenesta ScriptForge.L10N

Denne tenesta inneheld ei rekkje metodar knytt til omsetjinga av strengar med minimal innverknad pÄ kjeldekodane for programmet. Metodane som er leverte av tenesta L10N kan i hovudsak brukast til Ä:

note

Akronymet L10N stÄr for lokalisering og refererer til eit sett med prosedyrar for oversetting av programvare til eit bestemt land eller region.


PO-filer har lenge vore promoterte i det gratis programvarefellesskapet som eit middel for Ä levera fleirsprÄklege brukargrensesnitt. Dette vert oppnÄdd ved bruk av lesbare tekstfiler med ein veldefinert struktur som for eit gjeve sprÄk spesifiserer kjeldesprÄkstrengen og den lokaliserte strengen.

Den stÞrste fordelen med PO-formatet er Ätskiljinga av programmeraren og omsetjaren. PO-filer er uavhengige tekstfiler, slik at programmeraren kan senda POT-malfiler til omsetjarar, som deretter vil omsetja innhaldet og returnere dei omsette PO-filene for kvart stÞtta sprÄk.

tip

Tenesta L10N er basert pÄ GNU-implementering av PO (portable object)-filer. Du kan finna meir om dette filformat i GNU gettext Utilities: PO Files.


Denne tenesta implementerer desse metodane:

note

Legg merkje til at dei to fĂžrste metodane vert brukte til Ă„ byggja eit sett med overfĂžrbare strengar og eksportera dei til ei POT-fil. Det er likevel ikkje heilt nĂždvendig Ă„ laga POT-filer ved hjelp av desse metodane. Sidan dei er tekstfiler, kunne programmeraren ha laga dei ved hjelp av kva tekstredigeringsprogram som helst.


Oppkall av tenester

Viss du vil kalla opp tenesta L10N, kan du gje to valfrie argument for Ă„ bestemma mappa som PO-filene er plasserte i og dei nasjonale innstillingane som skal brukast, som forklart nedanfor.

Syntaks:

CreateScriptService("L10N", foldername: str, locale: str): svc

foldername: Mappa som inneheld PO-filene. Namnet mÄ oppfylla krava i FileSystem.FileNaming.

locale: Ein streng pÄ forma «la-CO» (language-COUNTRY = sprÄk-LAND) eller pÄ form «la» (language = sprÄk).

note

Det kan vera fleire tilfelle av tenesta L10N i same eining. Kvar fĂžrekomst skal likevel ha ei sĂŠrskild mappe til PO-filene.


Eksempel:

I Basic

Eksempelet nedanfor startar tenesta L10N utan valfrie argument. Dette aktiverer berre metodane AddText (LeggTilTekst) og ExportToPOTFile (EksporterTilPOT-fil).


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

Eksemplet nedanfor gjev mappa som inneheld PO-filene. Sidan den nasjonale innstillinga ikkje er definert, vil fĂžrekomsten av tenesta bruka dei gjeldande nasjonale innstillingane for LibreOffice.


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

Eksempelet ovanfor vil resultera i ein kĂžyretidsfeil vis den gjeldande lokale PO-fila ikkje finst i den gjevne mappa.


I eksempelet nedanfor er bÄde mappenamnet og nasjonale innstillingar eksplisitt definert som belgisk fransk.


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

PO-filer mÄ namngjevast i forma «sp-LA.po» eller «sp.po», der «sp» refererer til sprÄket og «LA» er landet. Nokre eksempel er: «en-US.po», «fr-BE.po» eller «fr.po».


Det vert tilrÄdd Ä frigje ressursar etter bruk:


      Set myPO = myPO.Dispose()
    
I Python

Eksempla ovanfor kan omsetjast til Python slik:


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

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

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

Eigenskapar

Namn

Skriveverna

Type

Beskriving

Folder

Ja

String

Mappa som inneheld PO-filene (sjÄ eigenskapen FileSystem.FileNaming (FileSystem.FilnaNaming) for Ä lÊra meir om den brukte notasjonen).

Languages

Ja

Array

Ei nullbasert matrise som viser alle basisnamna (utan filtypen «po») for PO-filene som finst i den gjevne Mappa.

Locale

Ja

String

Den gjeldande sprÄk-LAND-kombinasjonen. Denne eigenskapen vil i utgangspunktet vera tom viss tenesta byrja utan nokre av dei valfrie argumenta.


Liste over metodar i tenesta L10N

AddText
AddTextsFromDialog

ExportToPOTFile

GetText


AddText

Legg til ei ny oppfÞring i lista over strengar som kan lokaliserast. OppfÞringa mÄ ikkje finnast frÄ fÞr.

Metoden returnerer Sann viss han lukkast.

Syntaks:

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

Parametrar:

context: NĂžkkelen for Ă„ henta den omsette strengen med metoden GetText . Denne parameteren har standardverdien "".

msgid: Den ikkje omsette strengen, som er teksten som finst i programkoden. Denne mÄ ikkje vera tom. msgid vert nÞkkelen for Ä henta den omsette strengen ved hjelp av metoden GetText nÄr context er tom.

Strengen msgid kan innehalda kor mange plasshaldarar som helst (%1 %2 %3 
) for dynamisk endring av strengen under kþyring.

comment: Valfri merknad som vert lagt til ved sida av strengen for Ă„ hjelpa omsetjarane.

Eksempel:

Eksempelet nedanfor lagar eit sett med strengar 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

Trekkjer automatisk ut strengar frÄ eit dialogvindauge og legg dei til i lista over tekststrengar som kan lokaliserast. Desse strengane vert trekte ut:

Metoden returnerer Sann viss han lukkast.

note

Dialogvindauget som strengane skal trekkjast ut frÄ, mÄ ikkje vera open nÄr metoden vert kalla opp.


NÄr ein fÞrekomst av tenesta L10N vert laga frÄ ri PO-fil som finst frÄ fÞr, brukar du metoden GetTextsFromL10N frÄ tenesta Dialog for automatisk Ä lesa inn alle omsette strengar i dialogvindauget.

Syntaks:

svc.AddTextsFromDialog(dialog: svc): bool

Parametrar:

dialog: ein fÞrekomst av tenesta Dialog som svarar til det dialogvindauget som strengane skal trekkjast ut frÄ.

Eksempel:

Dei neste eksempla trekkjer alle strengane ut frÄ dialogvindauget "MyDialog" som er lagra i biblioteket "Standard" og eksporterer dei til ei POT-fil:

I Basic

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

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

ExportToPOTFile

Eksporterer eit sett med ikkje omsette strengar som ei POT-fil.

For Ä byggja eit sett med strengar, kan du bruka anten ei rekkje oppkall av metoden AddText, eller ved ei vellukka aktivering av L10N-tenesta med foldername-argumentet. Det er ogsÄ mogleg Ä bruka ein kombinasjon av begge teknikkane.

Metoden returnerer Sann viss han lukkast.

Syntaks:

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

Parametrar:

filename: Utdata-fila i notasjonen FileSystem.FileNaming.

header: merknadar som vert lagde til Ăžvst i den genererte POT-fila.

Ikkje ta med innleiande #-teikn. Viss du vil dela overskrifta pÄ fleire linjer, set du inn escape-sekvensen (\n) der det passar. Det vert lagt til ei standardoverskrift ved sida av teksten som er gjeve i argumentet header.

encoding: Teiknsettet som skal brukast (standard = "UTF-8").

Eksempel:


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

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

Den genererte fila mÄ bestÄ GNU-kommandoen msgfmt --check.


GetText

Hentar den omsette strengen som svarar til det gjevne argumentet msgid.

Det kan setjast opp ei liste over argument som kan erstatta plasshaldarane (%1, %2, ...) i strengen.

Viss det ikkje finst ein omsett streng, returnerer metoden den ikkje-omsette strengen etter Ă„ ha bytt ut plasshaldarane med dei gjevne argumenta.

Syntaks:

Denne metoden kan kallast opp anten ved hjelp av det fullstendige namnet GetText eller med snarvegen _ (eit enkelt understrekingsteikn):

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

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

note

I ScriptForge-biblioteket er alle metodar som byrjar med teiknet «_», reservert berre for intern bruk. Snarvegen _ som vert brukt i GetText er det einaste unnataket frÄ denne regelen, og kan sÄleis trygt brukast i Basic-skript.


Parametrar:

msgid: Den ikkje-omsette strengen, som er teksten som vert vist i programkoden. Denne mÄ ikkje vera tom. Han kan innehalda kor mange plasshaldarar (%1 %2 %3 ...) som helst som kan brukast til Ä setja inn tekst dynamisk under kÞyringa.

I tillegg til Ä bruka ein enkeltmsgid-streng, godtar denne metoden ogsÄ desse formata:

args: Verdiar som skal setjast inn i plasshaldarane. Alle variabeltypar er tillatne, men berre strengar, tal og datoar vil vert tekne omsyn til.

Eksempel:

I Basic

GÄ ut frÄ at denne koden kÞyrer pÄ ein LibreOffice-installasjon med nasjonale innstillingar sett til «es-ES». I tillegg er det ei fil «es-ES.po» inne i den gjevne mappa som omset strengen som vert sendt til metoden GetText:


      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 Basic-rutinane og -identifikatorane som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje meint brukte i Basic-makroar.