Hvis du vil tilføje et ekstra sprog, er der to ting, der skal være opfyldt:
For at tilføje et sprog, oprettes en række i LANGUAGES tabellen. Et sprog oprettes med et ID (laves automatisk med auto_increment, så undlad at taste i feltet), et navn i LANGUAGES.NAME (f.eks. "Deutsch") og et kort navn i LANGUAGES.SHORTNAME (f.eks "de" for tysk).
Når sproget er oprettet, er det tilgængeligt de steder i Instans CMS, hvor der er en sprog-vælger - f.eks. under Sideredigering. Når man gemmer en side, gemmes den med ID på det valgte sprog i feltet PAGES.LANGUAGE.
Filen cms_language.inc.php indeholder en multidimensionel array ved navn $cmsLang, som har en plads for hvert sprog - og hver af disse pladser er atter en array, som indeholder en plads for hvert oversat ord. F.eks. ligger sproget "dansk" i $cmsLang["da"], hvor pladsen i arrayet ("da") stemmer overens med et LANGUAGES.SHORTNAME.
Næste dimension i arrayet er en plads for hvert ord på det pågældende. Hvert ord har en universel "key", som bruges af funktionen cmsTranslate til at oversætte. F.eks. har vi:
$cmsLang[da][rtf_bestregards] = "Venlig hilsen";
Det betyder, at det "ord", der i systemet har key'en "rtf_bestregards", på dansk hedder "Venlig hilsen". Tilsvarende på engelsk:
$cmsLang[en][rtf_bestregards] = "Best regards";
Hvis man nu vil tilføje den tyske oversættelse, laver man linjen:
$cmsLang[de][rtf_bestregards] = "Mit freundliche Grüssen";
Læs mere om funktionen cmsTranslate her.
Hvis rewrite ikke er slået til, kan man skifte sprog ved at kalde /index.php?lang=[shortname] - f.eks. /index.php?lang=en for at skifte til engelsk.
Når man skifter sprog, sendes man til den side, som er defineret som startside for det pågældende sprog for det pågældende site i Instans CMS. Dette angives under sideredigering i fanebladet "Menu".
Hvis man vil vide, hvilket sprog, der er sat, kan man kigge på $_SESSION[CURRENT_LANGUAGE] eller i $arr_content[lang].
I sin template vil man ofte gerne outputte forskellige menuer for forskellige sprog. Det kan gøres ved at lave en switch på $_SESSION[CURRENT_LANGUAGE], således at menu-funktionen kaldes med forskellige menu-ID'er på baggrund af sproget:
<?php
if ($_SESSION[CURRENT_LANGUAGE] == "da"){
newBuildFrontendMenu(1,1, ...)
} else if ($_SESSION[CURRENT_LANGUAGE] == "en"){
newBuildFrontendMenu(1,2, ...)
} else { /* .. etc. for yderligere sprog */ }
?>
Denne fremgangsmåde kræver naturligvis, at man har defineret en separat menu pr. sprog i MENUS-tabellen. I eksemplet ovenfor har den danske menu MENUS.MENU_ID = 1 og den engelske MENUS.MENU_ID = 2.