ScriptForge . L10N serbisyo

Nagbibigay ang serbisyong ito ng ilang pamamaraan na nauugnay sa pagsasalin ng mga string na may kaunting epekto sa source code ng programa. Ang mga pamamaraan na ibinigay ng L10N ang serbisyo ay maaaring gamitin pangunahin sa:

note

Ang acronym L10N nangangahulugang Localization at tumutukoy sa isang hanay ng mga pamamaraan para sa pagsasalin ng software sa isang partikular na bansa o rehiyon.


Ang mga file ng PO ay matagal nang na-promote sa komunidad ng libreng software bilang isang paraan sa pagbibigay ng mga multilingguwal na interface ng gumagamit. Nagagawa ito sa pamamagitan ng paggamit ng mga text file na nababasa ng tao na may mahusay na tinukoy na istraktura na tumutukoy, para sa anumang partikular na wika, ang string ng source language at ang localized na string.

Ang pangunahing bentahe ng format ng PO ay ang paghihiwalay ng programmer at tagasalin. Ang mga PO file ay mga independiyenteng text file, kaya ang programmer ay maaaring magpadala ng mga POT template file sa mga tagasalin, na pagkatapos ay isasalin ang kanilang mga nilalaman at ibabalik ang mga isinaling PO file para sa bawat suportadong wika.

tip

Ang L10N ang serbisyo ay batay sa pagpapatupad ng GNU ng mga PO (portable object) na mga file. Upang matuto nang higit pa tungkol sa format ng file na ito, bisitahin ang GNU gettext Utilities: Mga PO File .


Ang serbisyong ito ay nagpapatupad ng mga pamamaraan na nakalista sa ibaba:

note

Tandaan na ang unang dalawang paraan ay ginagamit upang bumuo ng isang hanay ng mga maisasalin na mga string at i-export ang mga ito sa isang POT file. Gayunpaman, hindi sapilitan na lumikha ng mga POT file gamit ang mga pamamaraang ito. Dahil ang mga ito ay mga text file, maaaring nilikha ng programmer ang mga ito gamit ang anumang text editor.


Panawagan sa serbisyo

Bago gamitin ang L10N serbisyo ang ScriptForge kailangang i-load o i-import ang library:

note

• Ang mga pangunahing macro ay kailangang mag-load ScriptForge aklatan gamit ang sumusunod na pahayag:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Ang mga script ng Python ay nangangailangan ng pag-import mula sa scriptforge module:
mula sa scriptforge import CreateScriptService


Mayroong ilang mga paraan upang i-invoke ang L10N serbisyo na gumagamit ng hanggang limang opsyonal na argumento na tumutukoy sa folder kung saan naka-imbak ang mga PO file, ang locale at encoding na gagamitin, pati na rin ang fallback na PO file at ang pag-encode nito.

Syntax:

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

foldername : Ang folder na naglalaman ng mga PO file. Dapat itong ipahayag sa FileSystem.FileNaming notasyon.

lokal : Isang string sa anyong "la-CO" (wika-BANSA) o sa anyong "la" (wika) lamang.

encoding : Ang set ng character na gagamitin. Ang default na encoding ay "UTF-8".

lokal2 : Isang string na tumutukoy sa fallback locale na gagamitin kung sakaling tinukoy ng PO file na tumutugma sa locale ang lokal wala ang parameter. Ang parameter na ito ay ipinahayag sa anyong "la-CO" (language-COUNTRY) o "la" (language) lamang.

encoding2 : Ang set ng character ng fallback PO file na naaayon sa lokal2 argumento. Ang default na encoding ay "UTF-8".

note

Upang matuto nang higit pa tungkol sa mga pangalan ng set ng character, bisitahin ang IANA's Character Set pahina. Magkaroon ng kamalayan na hindi ipinapatupad ng LibreOffice ang lahat ng umiiral na set ng character.


Halimbawa:

Sa Basic

Ang sumusunod na halimbawa ay nagpapakita ng L10N serbisyo nang walang anumang mga opsyonal na argumento. Papaganahin lamang nito ang AddText at I-exportToPOTFile pamamaraan, na kapaki-pakinabang para sa paglikha ng mga POT file.


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

Ang halimbawa sa ibaba ay tumutukoy sa folder na naglalaman ng mga PO file. Dahil hindi tinukoy ang lokal, gagamitin ng instance ng serbisyo ang lokal na tinukoy para sa user interface ng LibreOffice, na parehong lokal na tinukoy sa OfficeLocale ari-arian ng Plataporma serbisyo.


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

Ang halimbawa sa itaas ay magreresulta sa isang runtime error kung ang PO file ay tumutugma sa OfficeLocale locale ay hindi umiiral sa tinukoy na folder.


Sa halimbawa sa ibaba, ang lokal ay tahasang tinukoy bilang Belgian French ("fr-BE"), kaya't ilo-load ng serbisyo ang file na "fr-BE.po" mula sa folder na "C:\myPOFiles". Kung wala ang file, magkakaroon ng error.


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

Upang maiwasan ang mga error, posibleng tumukoy ng gusto at fallback na lokal at pag-encode. Ang sumusunod na halimbawa ay susubukan munang i-load ang file na "fr-BE.po" mula sa tinukoy na folder at kung hindi ito umiiral, ang file na "en-US.po" ay mailo-load.


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

Ang mga file ng PO ay dapat na pinangalanan sa anyong "la-CO.po" o "la.po", kung saan ang "la" ay tumutukoy sa wika at ang "CO" ay ang bansa. Ang ilang mga halimbawa ay: "en-US.po", "fr-BE.po" o "fr.po".


Inirerekomenda na magbakante ng mga mapagkukunan pagkatapos gamitin:


      Set myPO = myPO.Dispose()
    
Sa Python

Ang mga halimbawa sa itaas ay maaaring isalin sa Python tulad ng sumusunod:


      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

Ilang pagkakataon ng L10N maaaring magkasabay ang serbisyo. Gayunpaman, ang bawat pagkakataon ay dapat gumamit ng hiwalay na direktoryo para sa mga PO file nito.


Mga Katangian

Pangalan

Readonly

Type

Mga nilalaman

Folder

Mayroon

String

Ang folder na naglalaman ng mga PO file (tingnan ang FileSystem.FileNaming ari-arian upang malaman ang tungkol sa notasyong ginamit).

Languages

Mayroon

Array

Isang zero-based na array na naglilista ng lahat ng batayang pangalan (nang walang ".po" extension) ng mga PO-file na matatagpuan sa tinukoy na Folder .

Locale

Mayroon

String

Ang kasalukuyang aktibong kumbinasyon ng wika-BANSA. Ang property na ito ay magiging walang laman sa simula kung ang serbisyo ay ginawa nang walang alinman sa mga opsyonal na argumento.


Listahan ng Mga Paraan sa Serbisyo ng L10N

AddText
AddTextsFromDialog

ExportToPOTFile

GetText


AddText

Nagdaragdag ng bagong entry sa listahan ng mga na-localize na string. Hindi pa dapat ito umiiral.

Ang pamamaraan ay nagbabalik totoo kung matagumpay.

Syntax:

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

Mga Parameter:

konteksto : Ang susi upang makuha ang isinalin na string gamit ang GetText paraan. Ang parameter na ito ay may default na halaga ng "".

msgid : Ang hindi naisalin na string, na kung saan ay ang text na lumalabas sa program code. Hindi ito dapat walang laman. Ang msgid nagiging susi upang makuha ang isinalin na string sa pamamagitan ng GetText paraan kung kailan konteksto ay walang laman.

Ang msgid string ay maaaring maglaman ng anumang bilang ng mga placeholder (%1 %2 %3 ...) para sa dynamic na pagbabago ng string sa runtime.

komento : Opsyonal na komento na idaragdag sa tabi ng string upang matulungan ang mga tagasalin.

Halimbawa:

Ang halimbawa sa ibaba ay lumilikha ng isang hanay ng mga string sa Ingles:

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

Awtomatikong kinukuha ang mga string mula sa isang dialog at idinaragdag ang mga ito sa listahan ng mga na-localize na string ng teksto. Ang mga sumusunod na string ay nakuha:

Ang pamamaraan ay nagbabalik totoo kung matagumpay.

note

Ang dialog kung saan kukunin ang mga string ay hindi dapat bukas kapag tinawag ang pamamaraan.


Kapag a L10N service instance ay nilikha mula sa isang umiiral na PO file, gamitin ang GetTextsFromL10N pamamaraan mula sa Dialog serbisyo upang awtomatikong i-load ang lahat ng isinalin na mga string sa dialog.

Syntax:

svc.AddTextsFromDialog(dialog: svc): bool

Mga Parameter:

diyalogo : isang halimbawa ng serbisyo ng Dialog na tumutugma sa dialog kung saan kukunin ang mga string.

Halimbawa:

Ang sumusunod na halimbawa ay kinukuha ang lahat ng mga string mula sa dialog na "MyDialog" na nakaimbak sa "Standard" na library at ini-export ang mga ito sa isang POT file:

Sa Basic

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

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

ExportToPOTFile

Nag-e-export ng set ng mga hindi na-translate na string bilang isang POT file.

Upang bumuo ng isang hanay ng mga string maaari mong gamitin ang alinman sa isang sunod-sunod na AddText method calls, o sa pamamagitan ng isang matagumpay na panawagan ng L10N serbisyo kasama ang foldername naroroon ang argumento. Posible rin na gumamit ng kumbinasyon ng parehong mga diskarte.

Ang pamamaraan ay nagbabalik totoo kung matagumpay.

Syntax:

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

Mga Parameter:

filename : Ang buong pangalan ng output file sa FileSystem.FileNaming notasyon.

header : Mga komentong idaragdag sa ibabaw ng nabuong POT file.

Huwag isama ang anumang nangungunang "#" na mga character. Kung gusto mong hatiin ang header sa maraming linya, maglagay ng mga escape sequence (\n) kung saan nauugnay. Ang isang karaniwang header ay idaragdag sa tabi ng tekstong tinukoy sa header argumento.

encoding : Ang character set na gagamitin (Default = "UTF-8").

Halimbawa:


       ' 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

Ang nabuong file ay dapat na matagumpay na pumasa sa msgfmt --suriin utos ng GNU.


GetText

Nakukuha ang isinalin na string na tumutugma sa ibinigay msgid argumento.

Maaaring tukuyin ang isang listahan ng mga argumento upang palitan ang mga placeholder (%1, %2, ...) sa string.

Kung walang nakitang isinaling string, ibinabalik ng pamamaraan ang hindi naisalin na string pagkatapos palitan ang mga placeholder ng mga tinukoy na argumento.

Syntax:

Ang pamamaraang ito ay maaaring tawaging alinman sa buong pangalan GetText o sa pamamagitan ng shortcut _ (isang salungguhit):

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

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

note

Sa library ng ScriptForge, ang lahat ng mga pamamaraan na nagsisimula sa karakter na "_" ay nakalaan para sa panloob na paggamit lamang. Gayunpaman, ang shortcut _ ginagamit para sa GetText ay ang tanging pagbubukod sa panuntunang ito, kaya ligtas itong magamit sa mga script ng Basic at Python.


Mga Parameter:

msgid : Ang hindi naisalin na string, na kung saan ay ang text na lumalabas sa program code. Hindi ito dapat walang laman. Maaaring naglalaman ito ng anumang bilang ng mga placeholder (%1 %2 %3 ...) na maaaring magamit upang dynamic na magpasok ng teksto sa runtime.

Bukod sa paggamit ng isang solong msgid string, tinatanggap din ng paraang ito ang mga sumusunod na format:

args : Mga value na ilalagay sa mga placeholder. Ang anumang uri ng variable ay pinapayagan, gayunpaman, ang mga string, numero at petsa lamang ang isasaalang-alang.

Halimbawa:

Sa Basic

Isaalang-alang ang sumusunod na code ay tumatakbo sa isang LibreOffice na pag-install na may lokal na nakatakda sa "es-ES". Bukod pa rito, mayroong isang file na "es-ES.po" sa loob ng tinukoy na folder na nagsasalin ng string na ipinasa sa GetText paraan:


      myPO = CreateScriptService("L10N", "C:\myPOFiles\")
      myPO.GetText("Welcome %1! Hope you enjoy this program", "John")
      ' "¡Bienvenido John! Espero que disfrutes de este programa"
    
Sa 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

Lahat ScriptForge Ang mga pangunahing gawain o identifier na may prefix na may underscore na character na "_" ay nakalaan para sa panloob na paggamit. Ang mga ito ay hindi nilalayong gamitin sa Basic macros o Python script.


Mangyaring suportahan kami!