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
USysWklTextsaplikacije: 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.Textvrne 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 klicWklTexts.Localizev 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 tabeloUSysWklTexts. Č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
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)", dbFailOnErrorZaradi predpone
USystabela v podoknu za krmarjenje ni vidna, dokler so sistemski objekti skriti.Vnesite besedila. Za vsak ključ en zapis v angleščini in po enega za vsak drug jezik:
TextKey Language TextValue 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.
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 SubNew WklTextszahteva sklic WKL Forms x.y Object Library (urejevalnik VBA: Orodja › Sklici); brez sklica napišiteCreateObject("WklForms.Texts").V napise vpišite ključe. V pogledu načrta nastavite lastnost Napis obrazca na
@orders.title, gumba za shranjevanje na@wkl.savein 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 SubLocalizezamenja 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 vReport_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:
| Kje | Napis, ki sprejme ključ |
|---|---|
| WklGrid, WklTreeList | Napisi stolpcev in pasov, gumbi ukazov v vrsticah, zavihki podrobnih pogledov |
| WklPropertyGrid | Napisi polj in kategorije |
WklNavBar in tabela za krmarjenje USysWklShellNavigation | Skupine in vnosi (stolpec Caption tabele) |
| WklActionBar | Naslov, podnaslov, ukazi, njihovi opisi orodij, gumb Več |
| WklButton | Napis, vnosi menija, segmenti |
| WklToggleSwitch, WklGauge | Napis, 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
neutralvsebujejo 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, stolpecslostane prazen. Vrstni red je: zahtevani jezik,neutral,en,[key]. - Poljubni jeziki. Besedila aplikacije so lahko v katerem koli jeziku, na primer
fr,plalies; regionalna koda, kot jefr-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>.jsoninneutral.jsonv mapii18npoleg 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.Languagenastavi 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 metodeText;{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-.@Homeali@ pisarnaostaneta, kot sta zapisana.@@na začetku zapiše dobesedni@:@@orders.titleprikaže@orders.title. Ključ brez kakršnega koli besedila se prikaže kot[key]in se pojavi vMissing, enako kot priText. Localizepokličite enkrat ob vsakem odprtju, v pogledu obrazca ali poročila. Nato lastnosti vsebujejo besedila. V pogledu načrtaLocalizesprož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.Missingnato navede vsak ključ, ki v zahtevanem jeziku ni imel besedila, vsakega v svoji vrstici v oblikiključ 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.Reloadznova prebere. - IntelliSense in imena članov ostanejo angleški; v drugem jeziku so le besedila.