Tilbake til startsida IKT i praksis - Pascal

Meny
 
 
 
 
 
 
 
• Endre språk
 
 
 

 

Norsk tekst på knappane

Colors

Har du irritert deg over at meldingane på diverse knappar kjem opp med engelsk tekst utan at du har funne ein metode for å legge inn norsk tekst? Eg gjorde det i alle fall lenge, heilt til eg dumpa over ein måte å endre dette på.

Dei som utviklar Free Pascal og Lazarus har sikkert ein fornuftig grunn til å ikkje gjere det enkelt å skifte tekst på desse knappane. Sjølv skulle eg ønskt det var like enkelt som å legge tekst på dei vanlege knappane.

Men, det finst altså ei løysing. Ho er ikkje lett å finne, men ikkje uoverkomeleg vanskeleg når ein ført har funne løysinga. Det einaste som krevst er litt kunnskap om filhandtering og redigering, noe ein må rekne ein programmerar har.

Det første du må gjere er å gå inn i mappa der Lazarus er lagra og leite deg fram til Lazarus/lcl/languages/lclstrconsts.po. Finn du ikkje lclstrconsts.po? Kanskje du har hamna i mappa Lazarus/languages/ i staden?

Har du redigeringsprogram for po-filer, opnar du fila lclstrconsts.po i dette og omset alle «Yes», «No», «Cancel» osv som du meiner du kan ha bruk for. Lagra fila som lclstrconsts.no.po. Sjølvsagt kan du setje om heile fila om du har lyst til det.

Må du bruke Notisblokk, Notepad++ eller liknande, blir prosessen litt meire tungvindt men fullt ut løysande. Når fila er opna, pass på at ho blir vist i UTF-0 format. Fila er ei teikstfil med mange linjer noe liknande

#: lclstrconsts.rsmbyes
msgid "&Yes"
msgstr ""

Den første linja som bli innleidd med «#» fortel kvar ordet blir brukt i systemet. Denne treng du ikkje bry deg så mykje om. I msgid finn du det engelske ordet. I msgstr skal du skrive inn det norske ordet. Ein omsett sekvens vil då sjå slik ut:

#: lclstrconsts.rsmbyes
msgid "&Yes"
msgstr "&Ja"

(Teiknet & framføre betyr at den første bokstaven i ordet skal vere understreka (Yes, Ja) slik du finn det i mange menyar for å vise kva tast som er snarvegtast). Også i dette tilfellet må du sjølvsagt lagra fila som lclstrconsts.no.po. I tillegg må du hugse på å lagre i UTF-8 format.

Ikkje prøv å redigere fila med vanlege tekstbehandlingsprogram. Dei legg inn for mange ekstra koder.

Det du nå har laga er ei fil med norske ord som skal erstatte dei engelske orda i ein del komandoar. Neste steg er å fortelje Lazarus at du har gjort det.

Rutinen bruker translations, så du må legge denne inn i uses.

I programmet ditt går du inn i Object Inspector på venstre side av skjermen. Her klikkar du fram Events og endeleg OnCreate. Dobbeltklikk på denne og du får fram prosedyren i Source Editor. Her skriv du inn:

uses …, translations;


procedure TForm1.FormCreate(Sender: TObject);
var
  POMappe, Lang, Lang2: String;
begin
  POMappe := 'C:/lazarus/lcl/languages/';
  GetLanguageIDs(Lang, Lang2);
  TranslateUnitResourceStrings('LCLStrConsts', POMappe + 'lclstrconsts.%s.po', Lang, Lang2);

  // Dialogvindauget er ein test. Nå skal det vere norske ord på knappane
  MessageDlg('Spørsmål', 'Vil du halde fram?' , mtInformation, [mbYes, mbNo, mbCancel], 0); end;

Har du plassert languages-filene andre stader, må du endre variabelen POMappe til å peike på den staden du har dei.

GetLanguageIDs(Lang, Lang2); hentar språkkoden maskinen er sett opp med. Ønskjer du å overstyre dette, fjernar du denne kommandoen. I staden definerer du aktuelt språk i variabelen Lang. Prosedyren kan då sjå t.d. slik ut:

procedure TForm1.FormCreate(Sender: TObject);
var
  POMappe, Lang, Lang2: String;
begin
  POMappe := 'C:/lazarus/lcl/languages/';
  Lang := 'nn';
  TranslateUnitResourceStrings('LCLStrConsts', POMappe + 'lclstrconsts.%s.po', Lang, Lang2);
end;

Språkkoden er den du har brukt for språkfila di. Her har eg lagra fila som lclstrconsts.nn.po. Difor «nn» som språkkode. Sidan eg er heilt sikker på kva eg kalla språkfila mi, treng eg ikkje setje opp noe alternativ i Lang2

Grunnen til at det blir brukt to variantar av Lang er at ikkje alle operativsystem er standardisterte. Difor kan t.d. norsk bli koda med språkkoden «no_NO» eller «no» sjølv om ingen av desse eigentleg er gyldige. «no» er landkoden, men var tidlegare kode for norsk generelt og kan nok finnast i gamle maskiner eller i operativsystem som ikkje er oppdaterte. For norsk er kodene nå «nb» for bokmål og «nn» for nynorsk.


Send melding

© Innhald og design:  Kolbjørn StuestølStuestøl heimesideSist endra 11. april 2013