Edukiak

# ScriptForge.L10N zerbitzua

Zerbitzu honek kateak itzultzeko balio duten metodoak eskaintzen ditu, eta inpaktu oso txikia du programaren iturburu-kodean. L10N zerbitzuak eskaintzen dituen metodoak hurrengoetarako erabili daitezke batez ere:

- Programako kate guztiak itzultzeko txantiloi gisa erabili daitezkeen POT fitxategiak sortzeko.

- Locale propietatearen bidez definitutako hizkuntzara itzuli diren kateak exekuzio-garaian eskuratzeko.

L10N akronimoak lokalizazioa adierazten du, eta softwarea eskualde edo herrialde jakin bateko hizkuntzara itzultzeko erabiltzen diren prozedura multzoari egiten dio erreferentzia.

PO fitxategiak software librearen komunitatean erabiltzaile-interfaze eleaniztunak eskaintzeko modu bat dira. Horretarako, gizakiak irakurtzeko moduko testu-fitxategiak erabiltzen dira, egitura ongi definitua dutenak eta, edozein hizkuntzatarako, iturburuko hizkuntza-katea eta itzulitako katea zehazten dituztenak.

PO formatuaren abantaila nagusia da programatzailea eta itzultzailea bereizten dituela. PO fitxategiak testu-fitxategi independenteak dira: programatzaileak POT txantiloiak bidaliko dizkio itzultzaileari, azken horrek fitxategiaren edukiak itzuliko ditu eta hizkuntza bakoitzerako itzulitako PO fitxategiak programatzaileari bidaliko dizkio.

L10N zerbitzua PO (portable object) fitxategien GNU inplementazioan dago oinarrituta. Fitxategi-formatu hori hobeto ezagutzeko, begiratu GNU gettext Utilities: PO Files informazioa.

Zerbitzu honek behean adierazitako metodoak inplementatzen ditu:

- AddText: Programatzaileak erabiltzen du geroago itzuliko diren kate multzoa eraikitzeko.

- AddTextsFromDialog: Dialog zerbitzu-instantzia bateko kate guztiak erauzten ditu.

- ExportToPOTFile: AddText metodoak POT fitxategi bati gehitzen dizkion kateak esportatzen ditu.

- GetText: Itzulitako kateak exekuzio-garaiak eskuratzen ditu.

Ikusi nola lehen bi metodoak kate itzulgarrien multzo bat eraikitzeko eta haiek POT fitxategi batera esportatzeko erabiltzen diren. Hala ere, ez da derrigorrezkoa POT fitxategiak sortzea metodo horiek erabilita. Testu-fitxategiak direnez gero, programatzaileak edozein testu-editore erabilita sortu ditzake.

## Zerbitzuari deitzea

L10N zerbitzua erabiltzeko, ScriptForge liburutegia kargatu edo inportatu behar da:

• Basic makroak erabiltzkeo, ScriptForge liburutegia kargatu behar da honako instrukzioa erabiliz:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python scriptak erabiltzeko, berriz, scriptforge modulu baten inportazioa behar dute:
from scriptforge import CreateScriptService

Hainbat modu daude L10N zerbitzuari deitzeko, PO fitxategiak zein karpetatan dauden, zein eskualde-ezarpen eta kodeketa erabili behar den edota ordezko PO fitxategi bat eta bere kodeketa zein den zehazteko erabili daitezkeen aukerako bost argumentura arte erabilita.

### Sintaxia:

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

foldername: PO fitxategiak dituen karpeta. FileSystem.FileNaming notazioan adierazi behar da.

locale: "eu-ES" formako kate bat (hizkuntza-HERRIALDEA) edo "eu" formakoa (hizkuntza).

encoding: Erabiliko den karaktere-jokoa. Kodeketa lehenetsia "UTF-8" da.

locale2: locale parametroak definitzen duen eskualde-ezarpenari dagokion PO fitxategia existitzen ez bada erabiliko den ordezko eskualde-ezarpena zehazten duen kate bat. Parametro hori "hi-HE" (hizkuntza-HERRIALDEA) edo "hi" (hizkuntza) gisa adierazten da.

encoding2: locale2 argumentuari dagokion ordezko PO fitxategiaren karaktere-jokoa. Kodeketa lehenetsia "UTF-8" da.

Karaktere-jokoen izenak ezagutzeko, begiratuIANAren karaktere-jokoak webgunea. Kontuan izan LibreOffice aplikazioak ez dituela karaktere-joko guztiak inplementatu.

### Adibidea:

##### Basic lengoaian

Hurrengo adibidean, L10N zerbitzuaren instantzia bat aukerako argumenturik gabe sortu da. AddText eta ExportToPOTFile metodoak soilik gaituko ditu, POT fitxategiak sortzeko erabilgarriak direnak.

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

Beheko adibidean, PO fitxategiak dituen karpeta zehaztu da. Eskualde-ezarpena ez dagoenez definituta, zerbitzuaren instantziak LibreOfficen erabiltzaile-interfazean definitutako eskualde-ezarpena erabiliko du, alegia, Platform zerbitzuaren OfficeLocale propietatean definitutako eskualde-ezarpen bera.

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

Goiko adibideak exekuzio-garaiko errore bat emango du OfficeLocale eskualde-ezarpenari dagokion PO fitxategia ez badago zehaztutako karpetan.

Beheko adibidean, eskualde-ezarpenaren atalean Belgikako frantsesa definitu denez ("fr-BE"), zerbitzuak "fr-BE.po" fitxategia kargatuko du "C:\myPOFiles" karpetatik. Fitxategi hori ez badago, errore bat gertatuko da.

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

Erroreak saihesteko, posible da eskualde-ezarpen eta kodeketa hobetsi bat eta ordezko bat zehaztea. Hurrengo adibidean, lehenengo "fr-BE.po" kargatzeko saiakera egingo da, eta hori ez badago, "en-US.po" kargatuko da.

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

PO fitxategiak "la-CO.po" edo "la.po" forman izendatu behar dira, non "la" hizkuntza den eta "CO" herrialdea den. Zenbait adibide: "en-US.po", "eu-FR.po" edo "eu.po".

Gomendagarria da baliabideak askatzea haiek erabili ondoren:

          Set myPO = myPO.Dispose()

##### Python lengoaian

Goiko adibideak Python lengoaiara ekarri daitezke honako eran:

          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()

L10N zerbitzuaren instantzia anitz bizi daitezke elkarrekin. Hala ere, instantzia bakoitzak bere direktorio propioa erabili behar du bere PO fitxategietarako.

## Propietateak

Izena | Irakurtzeko soilik | Mota | Deskribapena
--- | --- | --- | ---
Folder | Bai | String | PO fitxategiak dituen karpeta (begiratu FileSystem.FileNaming propietatea hemen erabilitako notazioa ikasteko).
Languages | Bai | Array | Zehaztutako Folder karpetan dauden PO fitxategien oinarri-izen guztiak (".po" luzapenik gabe) zerrendatzen dituen zeron oinarritutako matrize bat.
Locale | Bai | String | Unean aktiboa den hizkuntza-HERRIALDEA konbinazioa. Propietate hori hasieran hutsik egongo da zerbitzuak aukerako argumenturik gabe instantziatu bada.

L10N zerbitzuaren metodoen zerrenda
AddText AddTextsFromDialog | ExportToPOTFile | GetText

## AddText

Beste sarrera bat gehitzen dio kate itzulgarrien zerrendari. Ez du lehendik existitu behar.

Metodoak True itzultzen du arrakasta badu.

### Sintaxia:

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

### Parametroak:

context: Itzulitako katea GetText metodoarekin atzitzeko gakoa. Parametro horren balio lehenetsia "" da.

msgid: Itzuli gabeko katea, programa-kodean agertzen dena. Ez du hutsik egon behar. msgid parametroa GetText metodoaren bidez itzulitako katea atzitzeko gako bihurtzen da context hutsik dagoenean.

msgid kateak leku-marka anitz eduki ditzake (%1 %2 %3 ...) katea exekuzio-garaian dinamikoki moldatu ahal izateko.

comment: Itzultzaileentzako laguntza modura kateari gehituko zaion iruzkina, aukerakoa.

### Adibidea:

Beheko adibideak ingelesezko kate multzo bat sortzen du:

##### Basic lengoaian

          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")

##### Python lengoaian

          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

Elkarrizketa-koadro bateko kateak automatikoki erauzten ditu eta testu-kate lokalizagarrien zerrendari gehitzen dizkio. Honako kateak erauziko dira:

- Elkarrizketa-koadroaren izenburua.

- Epigrafea honako kontrol motetan: botoia, kontrol-laukia, lerro finkoa, testu finkoa, talde-markoa eta aukera-kontrola.

- Kate estatikoak zerrenda-koadroetan eta konbinazio-koadroetan.

- Sagua kontrolaren gainetik igarotzen denean bistaratzen den aholkua eta laguntza-testua.

Metodoak True itzultzen du arrakasta badu.

Kateak erauziko zaizkion elkarrizketa-koadroak ez du irekita egon behar metodo hau erabiltzen denean.

PO fitxategi batetik abiatuta L10N zerbitzu-instantzia bat sortzen bada, erabili Dialog zerbitzuaren GetTextsFromL10N metodoa kate itzuli guztiak elkarrizketa-koadroan automatikoki kargatzeko.

### Sintaxia:

svc.AddTextsFromDialog(dialog: svc): bool

### Parametroak:

dialog: 'Dialog' zerbitzu-instantzia bat. Kateak elkarrizketa-koadro horretatik erauziko dira.

### Adibidea:

Hurrengo adibidean, "Standard" liburutegian gordetako "MyDialog" elkarrizketa-koadroko kate guztiak erauzten dira eta POT fitxategi batera esportatzen dira:

##### Basic lengoaian

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

##### Python lengoaian

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

## ExportToPOTFile

Itzuli gabeko kateen multzo bat POT fitxategi modura esportatzen du.

Kateen multzo bat eraikitzeko, AddText metodoaren deien segida bat sortu daiteke edo L10N zerbitzua foldername argumentuarekin deitu daiteke. Posible da bi teknika horien konbinazio bat erabiltzea ere.

Metodoak True itzultzen du arrakasta badu.

### Sintaxia:

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

### Parametroak:

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

header: Sortutako POT fitxategiaren goiko aldean gehituko diren iruzkinak.

Ez sartu "#" karaktererik aurretik. Goiburukoa lerro anitzetan zatituta sortu nahi izanez gero, txertatu ihes-sekuentziak (\n) nahi den tokietan. Goiburuko estandar bat gehituko da header argumentuan zehaztutako testuaren alboan.

encoding: Erabiliko den karaktere-jokoa (Lehenetsia = "UTF-8").

### Adibidea:

           ' 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')

Sortutako fitxategiak msgfmt --check GNU komandoa ongi gainditu behar du.

## GetText

Emandako msgid argumentuari dagokion kate itzulia eskuratzen du.

Argumentuen zerrenda bat zehaztu daiteke kateko leku-markak (%1, %2, ...) ordezteko.

Itzulitako katerik aurkitzen ez bada, metodoak itzuli gabeko katea itzuliko du, leku-marken ordez zehaztutako argumentuak jarrita.

### Sintaxia:

Metodo horri deitzeko, erabili GetText edo _ (azpimarra bakarra) lasterbidea:

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

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

ScriptForge liburutegian, "_" karakterearekin hasten diren metodo guztiak barneko erabilerarako daude erreserbatuta. Hala ere, badago salbuespen bat: GetText metodoan erabilitako _ lasterbidea. Hortaz, modu seguruan erabili daiteke Basic zein Python scriptetan.

### Parametroak:

msgid: Itzuli gabeko katea, programa-kodean ageri den testua dena. Ez du hutsik egon behar. Leku-marken edozein kopuru (%1 %2 %3 ...) eduki dezake, testua dinamikoki txertatu ahal izateko exekuzio-garaian.

msgid kate bakarraz gain, metodoak honako formatuak ere onartzen ditu:

- Metodoak PO fitxategiaren msgid parametroa atzitzeko erabiliko duen context katea, edo;

- context|msgid konbinazioa, metodoak msgid parametroa atzitzeko erabiliko dena zehaztutako context balioa erabilita. Argumentuaren bigarren zatia kodearen irakurgarritasuna hobetzeko erabiltzen da.

args: Leku-marketan txertatuko diren balioak. Edozein aldagai mota onartzen da, baina kateak, zenbakiak eta datak soilik hartuko dira kontuan.

### Adibidea:

##### Basic lengoaian

Adibidez, LibreOffice instalazio baten eskualde-ezarpen gisa "es-ES" ezarrita badago eta, horrez gain, zehaztutako karpetaren barruan GetText metodoak pasatutako katea itzultzen duen "es-ES.po" fitxategi bat badago, kodea honelakoa litzateke:

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

##### Python lengoaian

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

Azpimarraren karaktere bat, "_", aurrizki gisa duten ScriptForge Basic errutina edo identifikatzaile guztiak barneko erabilerarako erreserbatuta daude. Ez dira Basic makroetan edo Python scriptetan erabili behar.

Erlazionatutako gaiak

ScriptForge.FileSystem zerbitzua

Elkarrizketa-koadroen editoreko kontrolen propietateak