Kategorier
Blogginlägg

Lansera internationellt – översätt sajten till andra språk

Jag har sedan tidigare en hel del erfarenheter vad gäller internationalisering av programvaror, det var ju jag som uppfann RAD komponenterna för att hantera ”Multi Languages”, dvs möjligheten att växla språk under tiden man körde programmet. Jag utvecklade en hel del verktyg under ett företag som jag startade i Australien när jag bodde där under namnet Lingscape Ltd, vi sålde produkterna över hela världen. Men nog om det nu ska jag berätta lite om hur jag gjort för att skapa en internationell bas till vårt nuvarande projekt.

Jag kan alltså erkänna att vi i vår affärsplan har planer på att lansera konceptet i flera andra länder också.

Egentligen är det busenkelt att göra en sajt på flera språk och det är egentligen bara två processer:

  1. Internationalisera kodbasen
  2. Översätta texter, även vissa bilder, storlekar och layout

Internationalisera kodbasen
Den första fasen är att se till att alla texter går att översätta på ett enkelt och smidigt sätt. För att vara teknisk så använder jag en komponent i Zend Framework som heter Zend_Translate som fungerar som en hjälpklass till texter som behövs översättas. För närvarande klarar den bara av att hantera texter, bl.a. har den inget stöd för bilder och länkar men det är inget större problem att lösa. Förenklat så fungerar det såhär:

<?php echo "Denna textsträng är inte internationaliserad"; ?>
<?php echo $this->translate("Denna textsträng är internationaliserad"); ?>

Den andra kodsnutten här ovanför översätter den svenska textsträngen till det språk jag ställt in i applikationen och är det svenska så översätter den inte strängen alls. Nu var det här väldigt förenklat, man behöver ibland ta hänsyn till flera saker såsom olika texter för formen singular och plural, eller om texten innehåller nummer etc. Man använder då t.ex. printf istället för echo osv.

I mitt fall nu när jag använder komponenten Zend_Translate så måste man välja vilket format på källfilerna till texterna som man ska använda för översättning. Jag använder gettext som är den vanligaste och som det finns en massa program till och som i princip 95% av alla översättningsbyråer är vana med. Till denna lösning finns ett Open Source program som heter Poedit (www.poedit.com) som kan extrahera ut alla strängar i källkoden så att man får en komplett lista på texter att översätta.

Tänk också på att det underlättar om man helt använder teckenkodningen UTF8 som fungerar perfekt i PHP5. Det är en teckenkodning från systemet Unicode som kan representera i princip alla tecken, pictogram och siffror som finns i världen. De vanligaste latinska tecknen använder 8bitar, medans mer ovanligare tecken använder 16 eller i vissa fall 24bitar.

Översätta texter
Det här är det enklaste, skicka bara textfilerna till en översättningsbyrå så fixar dom det mesta. Men att jobba med översättningar kräver kvalitetsgranskning som är väldigt viktigt för det är svårt att hitta rätt översättningar för översättningsbyrån när de inte ser i vilken kontext den används.

Som ett exempel brukar jag visa det här med engelska termen ”Edit” som flitigt används i två olika kontext. Den används i alla menyer (redigera menyn) och termen används oftast också på knappar. Men t.ex. i svenska så är vi vana att menyn heter ”Redigera” medans om det handlar om en knapp så är det mer naturligt att översätta det med ”Ändra”. Man kan alltså inte rakt av använda samma översättning i olika kontext och det är sådant som man får fram när man kvalitetsgranskar översättningarna som de visas på sidan.

Man behöver sedan anpassa layout, bilder och storlekar och då får man fixa och trixa lite med koden så att det enkelt går att ändra med de olika språken. Översättningsbyrån kan även hjälpa till med att översätta bilder och symboler som kan vara mer lämpade att anpassa i vissa regioner.