Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

lokalisering

3 views
Skip to first unread message

Petter Gustad

unread,
Mar 3, 2007, 12:10:01 PM3/3/07
to

Finnes det noen bra bibliotek for lokalisering? Jeg har typisk gjort
litt ad-hoc koding som f.eks. norsk.cl som inneholder:

(defun lang-str (strsym)
"return the language dependent string given by symbol strsym"
(ecase strsym
(:yes "ja")
(:no "nei")
(:login-button "Logg inn")
(:logout-button "Logg ut")
(:version "versjon")
(:username "Brukernavn")
(:password "Passord")
(:e-mail "E-post")
...


I programmet bruker jeg da f.eks

#.(lang-str :username))

Så er det en del rutiner for å skrive ut pengeverdier, dato,
klokkeslett, postnummer, osv. Men det er fort gjort å gå i baret fordi
man antar et setninger er bygget opp på en bestemt måte.

Men jeg føler at dette er å finne opp hjulet på nytt og at det kanskje
finnes en del bra bibliotek for dette samt at noen har støtte for å
endre locale på runtime.

Noen som har erfaring med slike biblioteker eller erfaring og tips for
lokalisering generelt?

Petter

--
Sv: Fordi det roter til rekkefølgen i forhold til hvordan man
vanligvis leser tekst.
Sp: Hvorfor er det et problem?
Sv: Top-posting.
Sp: Hva er det mest irriterende du vet på usenet og i e-post?

Espen Vestre

unread,
Mar 5, 2007, 4:06:02 AM3/5/07
to
Petter Gustad <newsm...@gustad.com> writes:

> I programmet bruker jeg da f.eks
>
> #.(lang-str :username))

Jeg har gjort noe liknende selv, og i tillegg definert en readermacro
for å gjøre det mer kompakt:

(defun |#!-reader| (stream char arg)
(declare (ignore char arg))
`(int-string ,(read stream)))

(set-dispatch-macro-character #\# #\! #'|#!-reader|)

I mitt system kan man velge å bruke keywords i koden eller å skrive
strengene i koden på ett språk og oversette til andre språk, dvs.
jeg har både slike definisjoner:

(in-package :intl)

(native-language :no)

(use-language :se)

(dt "kjøpt" "köpt")

...osv (dt er en makro som dytter ting inn i oversettelsestabellene).
...og slike definisjoner:

(use-language :no-latex)

(dt :addr-header
"\\documentclass[norsk,oneside,a4paper,12pt]{article}
\\usepackage[latin1]{inputenc}
\\usepackage{fontenc}
\\usepackage{latexsym}
\\usepackage{babel}
\\usepackage{array}

...osv. ;-)

For ordens skyld: Med readermacroen kan man da f.eks. gjøre slikt:

(format stream #!"Ordrestatus for ordre nr. ~a~%~%" bo-db:id)

> Men jeg føler at dette er å finne opp hjulet på nytt og at det kanskje
> finnes en del bra bibliotek for dette samt at noen har støtte for å
> endre locale på runtime.

Jeg har lurt på det samme, men siden dette er så enkelt å få til i
lisp, lurer jeg på om en vel så grei løsning kan være å implementere
støtte for gettext gjennom å lage en tolker/oversetter for .po-filer.
Men så langt har jeg ikke kommet ennå, så det blir foreløpig "dobbelt
språkbokføring".
--
(espen)

Petter Gustad

unread,
Mar 7, 2007, 1:46:01 PM3/7/07
to
Espen Vestre <es...@vestre.net> writes:

> Jeg har gjort noe liknende selv, og i tillegg definert en readermacro
> for å gjøre det mer kompakt:

Det ble jo mye mer elegant med reader-macroer da.

> Jeg har lurt på det samme, men siden dette er så enkelt å få til i
> lisp, lurer jeg på om en vel så grei løsning kan være å implementere
> støtte for gettext gjennom å lage en tolker/oversetter for .po-filer.

Det var jo ingen dum ide. Jeg kjenner ikke så godt til .po filene, men
slik jeg har forstått så er rekkefølgen på argumentene (ordene) som
settes inn i strengene hardkodet ("%s bla bla %s"). Jeg mener å huske
(en del år siden nå) at i resedit på Macintosh så kunne man bruke ^1,
^2, ^3 og ^4 for å velge hvor argumentene skulle inn i de oversatte
strengene.

Jeg var inne på tanken å gjøre noe liknende, men bruke en SQL database
i stedet for en resource fork for å lagre format-strengene og listene
av argumentene som man kan sette inn i ønsket rekkefølge, f.eks.

'("gå til det ~A ~A" (color building)) => gå til det gule huset
'("Ir á ~A ~A" (building color)) => Ir á la casa amarilla

0 new messages