Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Lokalizacija aplikacije

Lokalizacija aplikacije

Lastna besedila aplikacije Access – sporočila, napise in vprašanja – prikažite v jeziku, v katerem z uporabnikom govorijo tudi komponente WKL: v angleščini, nemščini, slovenščini, hrvaščini ali italijanščini, z eno podatkovno zbirko za vse jezike.

Zahteva: WKL Forms Object Library 1.65 ali novejša različica; napisi s ključem (@orders.title) zahtevajo 1.66, nevtralna besedila, dodatni jeziki in jezikovna mapa pa 1.67.

Pregled rešitve

  • Besedila so v tabeli USysWklTexts aplikacije: en zapis za vsak ključ in jezik. Tabela je v sami podatkovni zbirki, zato ACCDE in Access Runtime ne potrebujeta ničesar drugega.
  • V kodi WklTexts.Text vrne besedilo po ključu, in sicer v jeziku, ki so ga komponente izbrale za podatkovno zbirko (Izbira jezika komponent); če prevod manjka, v angleščini.
  • Napisi, ki jih nastavite v pogledu načrta, namesto besedila navedejo ključ: @orders.title. Kontrolniki WKL in trak besedilo prikažejo sami; za lastne kontrolnike Accessa v obrazcu ali poročilu zadošča en klic WklTexts.Localize v dogodku Ob odprtju. En obrazec tako služi vsem jezikom.
  • Za gumbe in vprašanja, ki jih potrebuje vsaka aplikacija (V redu, Prekliči, Shrani, Izbriši …), so na voljo standardna besedila s stalnimi ključi wkl.*. Preverjena so v vseh petih jezikih in se v vsaki aplikaciji WKL glasijo enako.

Projekti WKL Office SDK: namesto korakov 1 in 2 besedila hranite kot datoteke projekta source/texts/<jezik>.json; gradnja iz njih zapiše tabelo USysWklTexts. Če je med izvornimi datotekami še tabela s tem imenom, se gradnja ustavi (dokumentacija WKL Office SDK, „Prevajanje aplikacije“). Koraka 3 in 4 veljata nespremenjeno.

Izvedba

  1. Ustvarite tabelo. Stavek zaženite enkrat, na primer v oknu Immediate urejevalnika VBA:

    CurrentDb.Execute "CREATE TABLE USysWklTexts (ID COUNTER CONSTRAINT pkUSysWklTexts PRIMARY KEY, " & _
        "TextKey TEXT(255), Language TEXT(10), TextValue MEMO)", dbFailOnError

    Zaradi predpone USys tabela v podoknu za krmarjenje ni vidna, dokler so sistemski objekti skriti.

  2. Vnesite besedila. Za vsak ključ en zapis v angleščini in po enega za vsak drug jezik:

    TextKeyLanguageTextValue
    orders.titleenOrders
    orders.titleslNaročila
    orders.saveden{0} orders saved.
    orders.savedslShranjenih naročil: {0}.

    Nadomestni jezik je angleščina, zato vsakemu ključu dodajte vsaj angleško besedilo.

  3. Besedila uporabite v kodi:

    Private Sub cmdSave_Click()
        Dim texts As New WklTexts
        Dim count As Long
        On Error GoTo ErrorHandler
     
        count = SaveOrders()
        MsgBox texts.Text("orders.saved", count), vbInformation, texts.Text("wkl.information")
     
    FinalHandler:
        Exit Sub
     
    ErrorHandler:
        MsgBox Err.Description, vbExclamation, texts.Text("wkl.error")
        Resume FinalHandler
    End Sub

    New WklTexts zahteva sklic WKL Forms x.y Object Library (urejevalnik VBA: Orodja › Sklici); brez sklica napišite CreateObject("WklForms.Texts").

  4. V napise vpišite ključe. V pogledu načrta nastavite lastnost Napis obrazca na @orders.title, gumba za shranjevanje na @wkl.save in gumba za zapiranje na @wkl.close. Obrazec nato lokalizirajte ob odpiranju:

    Private Sub Form_Open(Cancel As Integer)
        Dim texts As New WklTexts
        texts.Localize Me
    End Sub

    Localize zamenja lastnosti Napis (Caption), Besedilo nasveta kontrolnika (ControlTipText) in Besedilo vrstice stanja (StatusBarText) obrazca in vseh njegovih kontrolnikov, katerih vrednost je ključ, ter vrne število zamenjanih vrednosti. Poročilo naredi enako v Report_Open; podobrazec se lokalizira v lastnem dogodku Ob odprtju.

Kontrolniki WKL, trak in krmarjenje

Kontrolniki WKL sprejmejo ključ povsod, kjer imajo napis, in njegovo besedilo prikažejo brez kode:

KjeNapis, ki sprejme ključ
WklGrid, WklTreeListNapisi stolpcev in pasov, gumbi ukazov v vrsticah, zavihki podrobnih pogledov
WklPropertyGridNapisi polj in kategorije
WklNavBar in tabela za krmarjenje USysWklShellNavigationSkupine in vnosi (stolpec Caption tabele)
WklActionBarNaslov, podnaslov, ukazi, njihovi opisi orodij, gumb Več
WklButtonNapis, vnosi menija, segmenti
WklToggleSwitch, WklGaugeNapis, besedili za vklop in izklop; napis, namig in napisi palic
Model traku (USysWklRibbon)Napisi zavihkov, skupin, elementov pogleda Backstage in ukazov

Pogled načrta, listi z lastnostmi, oblikovalniki in shranjena definicija ohranijo ključ, zato je obrazec v vseh jezikih enak. Zaslonski namigi in izboljšani zaslonski namigi traku (screentip, supertip) se zapišejo, kot so, in ključev ne sprejmejo.

Nevtralna besedila, dodatni jeziki in jezikovna mapa

  • Nevtralna besedila. Zapisi z jezikom neutral vsebujejo besedilo, ki ga ključ prikaže v vsakem jeziku brez lastnega prevoda, še pred angleščino. Vanje zapišite besedila v svojem jeziku in dodajte samo prevode: če so nevtralna besedila slovenska, stolpec sl ostane prazen. Vrstni red je: zahtevani jezik, neutral, en, [key].
  • Poljubni jeziki. Besedila aplikacije so lahko v katerem koli jeziku, na primer fr, pl ali es; regionalna koda, kot je fr-CA, šteje kot njen jezik. Jezik seje je prvi med jezikom modela aplikacije, Officea in sistema Windows, v katerem ima aplikacija besedila. Kontrolniki WKL ostanejo pri svojih petih jezikih: ob francoskih besedilih aplikacije prikažejo svoja besedila v jeziku, ki bi ga sicer izbrali.
  • Jezikovna mapa i18n. Datoteke <jezik>.json in neutral.json v mapi i18n poleg podatkovne zbirke dopolnijo besedila in zamenjajo zapise tabele z enakim ključem in jezikom – za popravek ali dodaten jezik po izdaji, brez nove gradnje. Vsaka datoteka je objekt JSON s ključi in besedili v kodiranju UTF-8:

    { "orders.title": "Commandes", "orders.saved": "{0} commandes enregistrées." }

    Datoteka, ki je ni mogoče prebrati, se preskoči; ostala besedila veljajo še naprej. Kdor lahko piše v mapo, spreminja besedila aplikacije: v omrežni skupni rabi jo zaščitite enako kot samo podatkovno zbirko.

  • Excel in Word. Delovni zvezek ali dokument nima tabele; besedila dobi iz jezikovne mape, ki jo koda enkrat navede, na primer v Workbook_Open:

    Dim texts As New WklTexts
    texts.Folder = ThisWorkbook.Path & "\i18n"

    Jezik je tam jezik uporabniškega vmesnika sistema Windows, če ima mapa v njem besedila, sicer jezik komponent; texts.Language nastavi drug jezik.

Pričakovani rezultat

V slovenskem Officeu obrazec prikaže „Naročila“ ter gumba „Shrani“ in „Zapri“, v nemškem pa „Aufträge“, „Speichern“ in „Schließen“. Stolpec kontrolnika WklGrid z napisom @orders.customer prav tako prikaže „Stranka“ ali „Kunde“. Če ključ orders.title nima nemškega prevoda, se prikaže njegovo nevtralno besedilo, brez njega pa „Orders“. Ključ brez kakršnega koli besedila se prikaže kot [orders.title], tako da vrzel takoj opazite in napis ne ostane prazen.

Opombe

  • Ograde: {0}, {1} … se po vrsti napolnijo z nadaljnjimi argumenti metode Text; {0:N2} prikaže število z dvema decimalnima mestoma, {1:d} kratek datum. Števila in datumi sledijo področnim nastavitvam sistema Windows, tako kot vse, kar oblikuje Access, in ne jeziku besedila.
  • Ključi ne razlikujejo med velikimi in malimi črkami. S pikami jih razvrstite po obrazcu ali temi (orders.title, orders.saved).
  • Kateri napisi so ključi: @, ki mu sledi ključ z vsaj eno piko ter samo s črkami, števkami, ., _ in -. @Home ali @ pisarna ostaneta, kot sta zapisana. @@ na začetku zapiše dobesedni @: @@orders.title prikaže @orders.title. Ključ brez kakršnega koli besedila se prikaže kot [key] in se pojavi v Missing, enako kot pri Text.
  • Localize pokličite enkrat ob vsakem odprtju, v pogledu obrazca ali poročila. Nato lastnosti vsebujejo besedila. V pogledu načrta Localize sproži napako, namesto da bi zamenjal ključe, ki bi se sicer shranili z obrazcem.
  • Napisi kot podatki: texts.CaptionText(vrednost) razreši vrednost po istem pravilu kot kontrolniki, na primer napis iz tabele za krmarjenje, ki ga aplikacija prenese v tabelo ali poročilo.
  • Standardnih besedil wkl.* ni mogoče zamenjati; WklTexts zapis aplikacije s takim ključem prezre. Seznam je v referenčnem priročniku API za WklTexts.
  • Jezik za preskus: texts.Language = "sl" do konca seje programa Access prikaže vsa besedila – tudi besedila komponent – v slovenščini, ne glede na jezik Officea; texts.Language = "" znova velja samodejno izbrani jezik. texts.Missing nato navede vsak ključ, ki v zahtevanem jeziku ni imel besedila, vsakega v svoji vrstici v obliki ključ jezik. Tako lahko preskus preveri, ali je prevod popoln.
  • Kdaj se besedila preberejo: tabela in jezikovna mapa enkrat za vsako podatkovno zbirko in sejo programa Access. Če ju aplikacija med delovanjem spremeni, ju texts.Reload znova prebere.
  • IntelliSense in imena članov ostanejo angleški; v drugem jeziku so le besedila.

Sorodne teme

sl/wiki/msaccess/comctl/how-to/localize-an-application.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille