Kim Schulz wrote:
> Nogen der har fået det til at virke stabilt og som i så fald kan give mig
et fungerende eksempel??
Jep. En ting, der kan snyde en hel del, er at du skal genstarte webserveren
hvis du udskifter/overskriver dine .mo filer. Det skyldes, at php cacher
placeringerne af teksterne i .mo filerne, og så går det meget galt, når du
udskrifter .mo filerne.
En anden mulighed, som jeg bruger, er at skifte textdomain hver gang man har
uploadet en ny .mo fil, og så kalde .mo filen noget nyt.
I øvrigt ser min start på mit eksempel sådan ud:
Header ("Content-Type: text/html; charset=utf-8");
setgettextlocale();
$domain="dxgettext001";
BindTextDomain ($domain,$_SERVER["DOCUMENT_ROOT"]."/dxgettext/locale");
TextDomain ($domain);
Her bruges denne funktion, som auto-detekterer browserens sprog og vælger
mellem dansk og engelsk som mulige sprog:
function setgettextlocale() {
global $gtlocale;
$gtlocale="C";
if (!isset($_COOKIE["english"])) {
$s=array("da","en");
$langs=explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
reset ($langs);
while (list($key,$value)=each($langs)) {
$cur=explode(";",$value);
$first=substr($cur[0],0,2);
if (in_array($first,$s)) {
$gtlocale=$first;
break;
}
}
}
putenv ("LANG=".$gtlocale);
}
Og herefter virker _("My text") ganske glimrende. Mine .mo filer ligger
sådan her:
locale/da/LC_MESSAGES:
total 78
-rw-r--r-- 1 dybdahl users 7133 Apr 12 07:43 dxgettext.mo
-rw-r--r-- 1 dybdahl users 7252 Apr 12 07:53 dxgettext.po
-rw-r--r-- 1 dybdahl users 12047 Apr 12 11:01 dxgettext001.mo
-rw-r--r-- 1 dybdahl users 12265 Apr 12 11:01 dxgettext001.po
Her kan du se to sæt .mo filer og .po filer, hvor .po filerne ikke bruges på
produktionswebsiten, og hvor dxgettext.mo er den gamle version, der ikke
bruges mere.
Hilsen,
Lars.
--
Freelance programmør
Programmering mod timebetaling
|