Toon posts:

[Perl] Ondersteuning voor verscheidene talen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een klein projectje in Perl en ik wil vanaf het begin ondersteuning voor verscheidene talen toevoegen (denk: Engels, Nederlands, Duits enz). Is hier een standaard voor? Zoja, zijn er tutorials met voorbeelden voor Perl?

d0g1e

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op vrijdag 08 februari 2002 22:38 schreef d0g1e het volgende:
Ik ben bezig met een klein projectje in Perl en ik wil vanaf het begin ondersteuning voor verscheidene talen toevoegen (denk: Engels, Nederlands, Duits enz). Is hier een standaard voor? Zoja, zijn er tutorials met voorbeelden voor Perl?
Wat bedoel je hier nou precies mee? Dat je programma's wil gaan maken die zowel in het Engels, Nederlands en Duits zijn? Daar zijn verschillende construncties voor te vinden, bijvoorbeeld met arrays. Of wil je gebruik maken van Aspell/Ispell libraries? Verduidelijk je vraag even.

Verwijderd

Topicstarter
Is er een standaard manier (in de zin van 'door veel mensen gebruikt') om verschillende taal-versies van een programma op te slaan?

Ik wil dus niet voor elke taal in de broncode duiken om alle strings te vervangen.

************
Ik zat zelf te denken aan een simpel plat bestand (naam: translation.TAAL, bijv translation.nl) met als inhoud:

stringID=string

bijv:

1=U bent ingelogd

Mijn programma leest dit bestand in en maakt een array zodat:

$array[$stringID] == $string
************

Maar misschien is hier al een standaard voor en dan hou ik
me daar graag aan.

Snappie :P

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op vrijdag 08 februari 2002 23:32 schreef d0g1e het volgende:
Maar misschien is hier al een standaard voor en dan hou ik
me daar graag aan.

Snappie :P
Ik weet niet of hier een standaard voor is, maar als je data goed gestructureerd wilt krijgen, kun je ook gebruik maken van XML. Ik weet niet zeker of er speciale parsers voor Perl zijn, maar ik denk het wel (het moet haast wel). XML heeft als voordeel dat het een internationale standaard is.

Verwijderd

Topicstarter
Hmmm, ik denk dat XML (te)veel ruimte in gaat nemen...
(of d0g1e weet nix van XML af)
code:
1
2
3
<xml>
    <string id=1>U bent ingelogd!</string>
</xml>

tegen
code:
1
1=U bent ingelogd!

Bovendien is het laatste makkelijker te verwerken.

  • tomato
  • Registratie: November 1999
  • Niet online
d0g1e: Hmmm, ik denk dat XML (te)veel ruimte in gaat nemen...
Wat maakt een paar regels aan tekst tegenwoordig nog uit? Gaat het om extreem veel tekst?
code:
1
2
3
<xml>
    <string id=1>U bent ingelogd!</string>
</xml>
Ik zou dan eerder aan zoiets denken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="ISO-8859-1"?>
<languages>
   <language>
    <title>English</title>
    <strings>
       <messages>
        <message>
           <title>LoggedIn</title>
           <string>You're logged in!</string>
        </message>
       </messages>
       <warnings></warnings>
       <errors></errors>
    </strings>
   </language>
   <language>
    <title>Nederlands</title>
    <strings>
       <messages>
        <message>
           <title>LoggedIn</title>
           <string>U bent ingelogd!</string>
        </message>
       </messages>
       <warnings></warnings>
       <errors></errors>
    </strings>
   </language>
</languages>

Eventueel zou je natuurlijk de verschillende talen in verschillende files kunnen zetten.
tegen
code:
1
1=U bent ingelogd!
Dat kan natuurlijk ook, in perl is dat ook erg makkelijk te verwerken.
Bovendien is het laatste makkelijker te verwerken.
Makkelijker zou ik eigenlijk niet willen zeggen. Het voordeel van de XML structuur is dat het een standaard is waar al zeer veel parsers voor beschikbaar zijn (ook perl implementaties). Al het vieze werk zal je dus uit handen genomen worden, waardoor je automatisch een abstractie laag hebt.

Verwijderd

Topicstarter
Ik ben er vergeten bij te vermelden dat de applicatie voornamelijk op oude computers (denk P60 16MB) wordt gedraaid en ik *eigenlijk* geen externe modules wil toevoegen (kortom zelf alles implementeren)

Maar ik kan me niet voorstellen dat hier geen standaard voor is. Doet elke applicatie dit anders?

Verwijderd

Een beetje leuk forumpje of gastenboek heeft verschillende talen (text) files die je apart kunt includen.
In de ene is ;
$variabele = "Hallo";
en de ander is;
$variabele = "Hello";

Lijkt me gewoon kwestie van goeie variabele namen kiezen en deze dan later van inhoud veranderen.

Verwijderd

Topicstarter
hmmm, zelf al even rondgesnuffeld en niks bijzonders gevonden (http://www.google.com/search?q=multilingual+perl). Ze gebruiken allemaal hun eigen methodes.

Ik denk dat ik voor mijn eigen stringID=string methode ga.
De $variabele = "Hallo"; methode van Tizzwat lijkt met wat onhandig omdat je miscchien in de knoop raakt met andere variabelen. Je zou dan alsnog $array[0] = "Hallo"; dingen moeten gebruiken en dat maakt het niet makkelijker om later te vervangen, of zelf te editten.

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 23:09
Er zal toch ook wel een Perl module zijn voor gettext? Ik weet niet of dit is wat je wilt, maar ik vind dit zelf het makkelijkste werken: elke string die vertaald moet worden wrap je gewoon in de functie-call _('string') en dan hoeven er alleen nog maar vertalingen gemaakt te worden. Het goede van deze methode vindt ik dat je de Engelse(waarschijnlijk dan) string meteen ziet ipv een var, zodat wel meteen duidelijk is wat je wil zeggen naar de gebruiker, maar vertaling toch nog mogelijk is.

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


Verwijderd

Topicstarter
Aaah, gettext, zoiets zocht ik!
Vielen dank :P
Pagina: 1