PHP GNU gettext

Pagina: 1
Acties:
  • 185 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
hey,

voor het dynamisch vertalen van een website wil ik gettext gebruiken

Nou heb ik de volgende test code
code:
1
2
3
4
5
6
7
8
9
10
11
<?php
$language = 'nl';
putenv("LANG=$language");
setlocale(LC_ALL, $language);

$domain = 'messages';
bindtextdomain($domain, "locale");
textdomain($domain);

echo gettext("A string to be translated would go here");
?>


Het aanmaken van de po file gaat goed, de vertaalde en gecompileerde .mo file word ook goed aangemaakt.

Maar nou weet ik niet precies waar ik die .mo moet zetten..
ik heb in de map van test.php de volgende mappen structuur:

/locale
/nl
/LC_MESSAGES
messages.po
messages.mo

volgens alle voorbeelden zou dit goed moeten zijn... Wie weet wat er fout is

Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Staan messages.po en messages.mo in /LC_MESSAGES ?

Dacht dat messages.* in locale/nl/LC_MESSAGES moesten staan.
Meen me te herinneren dat setenv in principe weggelaten kan worden.

[ Voor 58% gewijzigd door Icelus op 30-08-2006 10:19 ]

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 14:29

chem

Reist de wereld rond

nl bestaat niet, dat moet nl_NL zijn.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Moet die putenv("LANG=$language"); niet putenv("LANGUAGE=$language"); zijn?

Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
geen van bovenstaande oplossingen werkt...

Ik denk dat hij toch die .mo file niet kan vinden... wie weet het?

Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Anoniem: 129723 schreef op woensdag 30 augustus 2006 @ 14:41:
geen van bovenstaande oplossingen werkt...

Ik denk dat hij toch die .mo file niet kan vinden... wie weet het?
Dit al geprobeerd?

Van PHP.net:
I think that it bears mentioning that most documentation and tutorials you will find say that you should setenv(LC_ALL, $locale), but this only works IF THE LOCALE IS VALID ON THE LOCAL MACHINE. If you are using a locale that does not exist on the system or is not valid (like something returned from the HTTP Accept-Language header, such as 'ja', which is never a valid locale because it does not include the country code JP), you will probably be pulling your hair out for HOURS trying to figure out why the damn thing isn't working.

What I have found is that setting the LANGUAGE variable (eg. setenv("LANGUAGE=$locale")) will allow gettext to search inside your locale directories, even if the locale is not actually valid on the local system.

So, to summarize:
This will work:
PHP:
1
2
3
4
5
6
$locale = 'ja'; // Pretend this came from the Accept-Language header
$locale_dir = './locale'; // your .po and .mo files should be at $locale_dir/$locale/LC_MESSAGES/messages.{po,mo}

putenv("LANGUAGE=$locale");
bindtextdomain('messages', $locale_dir);
textdomain('messages');

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
werkt ook niet...

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 13-06 11:55

Creepy

Tactical Espionage Splatterer

Je hebt wel je .po/.mo bestanden *IN* je Locale directory gezet?
Dus /what/ever/locale/nl_NL/LC_MESSAGES/

En al geprobeerd een absoluut pad op te geven aan bindtextdomain? of een relatief pad met ./?

Uit je startpost lijkt het net alsof de directories in dezelfde dir staan.

Need waaaaay more info. "werkt ook niet" vertelt ons niet wat je nu precies hebt geprobeerd ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
Ik heb de .mo en.po file ik elke dir gezet. ik krijg geen foutmeldingen alleen te tekst word niet vertaald..

Ik heb geprobeerd ./locale/ ./local /local local/ /var/www/local var/www/local

Ik heb exact gedaan wat hier word beschreven:
http://www.onlamp.com/pub/a/php/2002/06/13/php.html

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-06 14:24

Janoz

Moderator Devschuur®

!litemod

local =/= locale

Kijk daarnaast even naar de VOLLEDIGE padnaam die creepy post en die ook in de quote van Icelus staat.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
Janoz schreef op woensdag 30 augustus 2006 @ 16:07:
local =/= locale

Kijk daarnaast even naar de VOLLEDIGE padnaam die creepy post en die ook in de quote van Icelus staat.
dit is toch het volledige pad?
/var/www/local

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-06 14:24

Janoz

Moderator Devschuur®

!litemod

Schijnbaar heb je een beetje last van woordblindheid of iets dergelijks. Wat is de tweede regel van de post van Creepy? Dat is bij lange na niet de regel die je daar post. Met de quote van Icelus, die trouwens rechtstreeks uit de handleiding komt, moet je dit makkelijk op kunnen lossen. Daarins staat duidelijk uitgelegd op welke plekken de bestanden moeten staan, hoe je dit in php moet aanroepen en aan welke randvoorwaarden de serverinstellingen moeten voldoen. Hoe duidelijk wil je het hebben??

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
Janoz schreef op woensdag 30 augustus 2006 @ 17:01:
Schijnbaar heb je een beetje last van woordblindheid of iets dergelijks. Wat is de tweede regel van de post van Creepy? Dat is bij lange na niet de regel die je daar post. Met de quote van Icelus, die trouwens rechtstreeks uit de handleiding komt, moet je dit makkelijk op kunnen lossen. Daarins staat duidelijk uitgelegd op welke plekken de bestanden moeten staan, hoe je dit in php moet aanroepen en aan welke randvoorwaarden de serverinstellingen moeten voldoen. Hoe duidelijk wil je het hebben??
Sorry dat ik niet zo briljant ben als de rest hier...

ik heb in de map usr een map local, bedoel je die? daar werkt die ieder geval niet.

Zou je de misschien letterlijk kunnen zeggen waar het dan moet komen te staan, of voel je je hier te goed voor??

Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Anoniem: 129723 schreef op woensdag 30 augustus 2006 @ 17:13:
[...]


Sorry dat ik niet zo briljant ben als de rest hier...

ik heb in de map usr een map local, bedoel je die? daar werkt die ieder geval niet.

Zou je de misschien letterlijk kunnen zeggen waar het dan moet komen te staan, of voel je je hier te goed voor??
Maak in de directory local een directory nl; in deze directory maak je een directory LC_MESSAGES waar je de messages.* bestanden in zet.

Structuur:
code:
1
2
3
4
5
6
7
8
9
usr
|
+- local
   |
   +- nl
      |
      +- LC_MESSAGES
           messages.mo
           messgaes.po

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-06 14:24

Janoz

Moderator Devschuur®

!litemod

Lees anders nog ff het bericht van chem

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
Icelus schreef op woensdag 30 augustus 2006 @ 17:23:
[...]
Maak in de directory local een directory nl; in deze directory maak je een directory LC_MESSAGES waar je de messages.* bestanden in zet.

Structuur:
code:
1
2
3
4
5
6
7
8
9
usr
|
+- local
   |
   +- nl
      |
      +- LC_MESSAGES
           messages.mo
           messgaes.po
Dit heb ik al geprobeerd en dit werkt ook niet. zowel nl als nl_NL heb ik geprobeerd

ik heb in mijn code:
putenv("LANG=nl_NL");
setlocale(LC_ALL, "nl_NL");

Acties:
  • 0 Henk 'm!

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Ik heb trouwens nog niet voorbij zien komen wat hij wel weergeeft. Geeft hij ook nog een fout weer of iets anders?

Wat is bijvoorbeeld de output van de volgende code:
PHP:
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
error_reporting(E_ALL);

$language = 'nl_NL';
putenv("LANG=" . $language);
putenv("LANGUAGE=" . $language);
setlocale(LC_ALL, $language);

$domain = 'messages';
bindtextdomain($domain, "locale");
textdomain($domain);

echo "gewone text\n<br>";

echo "Huidige directory: " . getcwd() . "\n<br>";

$dir1 = getcwd() . "/locale/" . $language . "/LC_MESSAGES";
$dir2 = getcwd() . "/local/" . $language . "/LC_MESSAGES";
if (file_exists ($dir1))
    echo "Directory " . $dir1 . " bestaat!\n<br>";
else
    echo "Directory " . $dir1 . " bestaat NIET!\n<br>";

if (file_exists ($dir2))
    echo "Directory " . $dir2 . " bestaat!\n<br>";
else
    echo "Directory " . $dir2 . " bestaat NIET!\n<br>";

echo "Vertaalde text: " . gettext("A string to be translated would go here");

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-06 00:38

NMe

Quia Ego Sic Dico.

Anoniem: 129723 schreef op woensdag 30 augustus 2006 @ 17:13:
[...]

Sorry dat ik niet zo briljant ben als de rest hier...
Je hoeft niet briljant te zijn, je hoeft alleen maar te lezen... Laten we een voorbeeldje nemen:
ik heb in de map usr een map local, bedoel je die? daar werkt die ieder geval niet.
Nou, ehm...
Lijkt me niet dus he? Wat de /usr/local map inhoudt is prima te lezen in elke tutorial over de bestandsstructuur van Linux, en als je dat even gedaan had, dan had je geweten dat je verkeerd zit. Daarnaast wordt het je dus ook nog eens gezegd door Icelus, Creepy én Janoz.
Zou je de misschien letterlijk kunnen zeggen waar het dan moet komen te staan, of voel je je hier te goed voor??
Dat ís je al verschillende keren gezegd in dit topic. :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
-NMe- schreef op woensdag 30 augustus 2006 @ 18:35:
[...]

Je hoeft niet briljant te zijn, je hoeft alleen maar te lezen... Laten we een voorbeeldje nemen:

[...]

Nou, ehm...

[...]

Lijkt me niet dus he? Wat de /usr/local map inhoudt is prima te lezen in elke tutorial over de bestandsstructuur van Linux, en als je dat even gedaan had, dan had je geweten dat je verkeerd zit. Daarnaast wordt het je dus ook nog eens gezegd door Icelus, Creepy én Janoz.

[...]

Dat ís je al verschillende keren gezegd in dit topic. :?
gewone text
Huidige directory: /var/www
Directory /var/www/locale/nl_NL/LC_MESSAGES bestaat!
Directory /var/www/local/nl_NL/LC_MESSAGES bestaat NIET!
Vertaalde text: A string to be translated would go here

en in de map /var/www/locale/nl_NL/LC_MESSAGES staan messages.mo en messages.po

Acties:
  • 0 Henk 'm!

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Dan denk ik dat je messages.mo en messages.po niet goed zijn.

Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-08-30 17:44+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"

#: test.php:12
msgid "A string to be translated would go here"
msgstr "vertaling"


dit is de .po file

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 13-06 11:55

Creepy

Tactical Espionage Splatterer

K.. qua informatie zijn we er nu bijna . Waar staat je .php file? In /var/www? En wat geef je nu precies mee aan bindtextdomain() en welke taal heb je nu ingesteld? (lees: geef nogmaals je huidige PHP code eens, want die in je topicstart lijke me niet meer te kloppen)

Ow, heb je Programming Beleid - De Quickstart al eens gezien? Dat voorkomt dat we maar blijven doorzagen om meer informatie :P

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
in var/www/ heb ik test.php staan met:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// I18N support information here
$language = 'nl_NL';
putenv("LANG=$language"); 
setlocale(LC_ALL, $language);

// Set the text domain as 'messages'
$domain = 'messages';
bindtextdomain($domain, "./locale"); 
textdomain($domain);

echo gettext("A string to be translated would go here");
?>

Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
iemand?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 13-06 11:55

Creepy

Tactical Espionage Splatterer

Heb je al eens op http://nl2.php.net/manual/en/ref.gettext.php gekeken? Daar staan wat handige tips in:
So, to summarize:

This will work:
<?php
$locale = 'ja'; // Pretend this came from the Accept-Language header
$locale_dir = './locale'; // your .po and .mo files should be at $locale_dir/$locale/LC_MESSAGES/messages.{po,mo}

putenv("LANGUAGE=$locale");
bindtextdomain('messages', $locale_dir);
textdomain('messages');
?>

This will not work:
<?php
$locale = 'ja';
$locale_dir = './locale';

putenv("LC_ALL=$locale");
bindtextdomain('messages', $locale_dir);
textdomain('messages');
?>

This will also not work:
<?php
$locale = 'ja';
$locale_dir = './locale';

setlocale(LC_ALL, $locale);
bindtextdomain('messages', $locale_dir);
textdomain('messages');
?>

Nor will this work:
<?php
$locale = 'ja';
$locale_dir = './locale';

setlocale(LC_MESSAGES, $locale);
bindtextdomain('messages', $locale_dir);
textdomain('messages');
?>
En deze is misschien ook handig:
As stated by robert at klugher dot com:
The environment setting 'LANGUAGE' gets priority above any local setting. This means that changing LC_ALL/LC_MESSAGES and LANG as done in almost all examples, won't do anything.

So if you've done
<?php
$language = "nl_NL";
putenv("LANG=$language");
setlocale(LC_ALL, $language);
...
?>
but the text is still displayed in english. Try also setting the LANGUAGE variable.
<?php
$language = "nl_NL";
putenv("LANGUAGE=$language");
putenv("LANG=$language");
setlocale(LC_ALL, $language);
...
?>
Aangezien je LANGUAGE nog helemaal niet hebt gebruikt zou dat wel eens kunnen helpen.
offtopic:
Als dit werkt vindt ik het wel maf dat je dit nog niet hebt geprobeerd

[ Voor 5% gewijzigd door Creepy op 01-09-2006 09:01 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
ik heb dat allemaal al eens geprobeerd

ik heb nu dit
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php


$locale = 'nl_NL'; // Pretend this came from the Accept-Language header
$locale_dir = './locale'; // your .po and .mo files should be at $locale_dir/$locale/LC_MESSAGES/messages.{po,mo}

putenv("LANGUAGE=$locale");
putenv("LANG=$locale");
bindtextdomain('messages', $locale_dir);
textdomain('messages');

echo gettext("A string to be translated would go here");
?>


De tekst blijft in het engels...

Acties:
  • 0 Henk 'm!

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Creepy schreef op vrijdag 01 september 2006 @ 08:59:
Heb je al eens op http://nl2.php.net/manual/en/ref.gettext.php gekeken? Daar staan wat handige tips in:

[...]


En deze is misschien ook handig:

[...]


Aangezien je LANGUAGE nog helemaal niet hebt gebruikt zou dat wel eens kunnen helpen.
offtopic:
Als dit werkt vindt ik het wel maf dat je dit nog niet hebt geprobeerd
In het script wat ik hem heb laten testen (9 posts boven je) staat die LANGUAGE ook in. Daar werkte hij ook al niet.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-06 14:24

Janoz

Moderator Devschuur®

!litemod

En, heb je het volgende stukje uit de manual (en wat ik nu copy past uit het topic) al eens uitgezocht?
I think that it bears mentioning that most documentation and tutorials you will find say that you should setenv(LC_ALL, $locale), but this only works IF THE LOCALE IS VALID ON THE LOCAL MACHINE. If you are using a locale that does not exist on the system or is not valid (like something returned from the HTTP Accept-Language header, such as 'ja', which is never a valid locale because it does not include the country code JP), you will probably be pulling your hair out for HOURS trying to figure out why the damn thing isn't working.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 13-06 11:55

Creepy

Tactical Espionage Splatterer

eghie schreef op vrijdag 01 september 2006 @ 09:59:
[...]

In het script wat ik hem heb laten testen (9 posts boven je) staat die LANGUAGE ook in. Daar werkte hij ook al niet.
offtopic:
Misschien heel flauw hoor, maar het feit dat jij zegt dat iemand iets moet proberen en iemand zegt "ik heb dat geprobeerd" zonder verder enig voorbeeld of melding is geen garantie dat die persoon dat ook daadwerkelijk heeft geprobeerd ;)
Vandaar nogmaals mijn vraag om code en uitleg wat de TS nu precies heeft geprobeerd en wat daar dan niet mee lukte.

De ervaring leert helaas dat het wel eens voorkomt dat iemand heel hard roept dat hij al iets geprobeerd heeft eterwijl dat niet het geval is. Daarom ook: wees zo duidelijk mogelijk en geef precies de zaken aan hoe en wat ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Test 'ns of de nl local überhaupt is geïnstalleerd met dit script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ob_start();
system( 'locale -a' );
$locals = ob_get_contents();
ob_end_clean();

$output = '';

preg_match_all( '/nl_.*/', $locals, $nl_locals );
if ( isset( $nl_locals[0] ) ) {
  $output .= "<h1>NL locals</h1><hr>\n";
  $output .= implode( ' / ', $nl_locals[0] );
}

$output .= "<h1>Geïnstalleerde locals</h1><hr>\n";
$output .= $locals;
$output  = nl2br( $output );

echo $output;

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
dit is de output:

NL locals

nl_NL.utf8
Geïnstalleerde locals

C
POSIX
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
nl_NL.utf8

Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
iemand?

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 14:29

chem

Reist de wereld rond

sowieso is gettext dikke ellende; je kan beter een eigen tool schrijven dan de gettext ellende waar je je aan waagt.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Tepel
  • Registratie: Juni 2006
  • Laatst online: 17-08-2024
Kijk daar is je probleem, jij wil nl_NL maar je hebt alleen nl_NL.utf8.
Je zult dus nog even een
http://nl2.php.net/manual...nd-textdomain-codeset.php
moeten uitvoeren

0x7F


Acties:
  • 0 Henk 'm!

Anoniem: 129723

Topicstarter
language veranderen in nl_NL.utf8 was de oplossing! Bedankt!

Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
chem schreef op maandag 04 september 2006 @ 09:51:
sowieso is gettext dikke ellende; je kan beter een eigen tool schrijven dan de gettext ellende waar je je aan waagt.
Hoezo is dat dikke ellende?
Ik hoor er verder weinig slechte verhalen over?

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Nielsz schreef op maandag 11 september 2006 @ 16:44:
[...]

Hoezo is dat dikke ellende?
Ik hoor er verder weinig slechte verhalen over?
Pak eens een pagina waar vertaalde teksten op staan; en reload heel snel 10 keer achter elkaar. Ik durf te wedden dat er minstens 1 keer een taal voorbijkomt die je niet had verwacht :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 18-05 10:18

JayVee

shibby++!

Voortan kun je ook debuggen met
PHP:
1
2
var_dump( bindtextdomain('watdanook') );
var_dump( textdomain('watdanook') );

Om te zien of de instellingen daadwerkelijk veranderen in wat je verwacht.

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Spider.007 schreef op maandag 11 september 2006 @ 21:24:
[...]

Pak eens een pagina waar vertaalde teksten op staan; en reload heel snel 10 keer achter elkaar. Ik durf te wedden dat er minstens 1 keer een taal voorbijkomt die je niet had verwacht :)
Dat lijkt me dan eerder een configuratie/programmeer fout dan dat het aan gettext ligt. Ik heb hier nog _nooit_ last van gehad namelijk ;)

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 14:29

chem

Reist de wereld rond

Erkens schreef op dinsdag 12 september 2006 @ 08:12:
[...]

Dat lijkt me dan eerder een configuratie/programmeer fout dan dat het aan gettext ligt. Ik heb hier nog _nooit_ last van gehad namelijk ;)
gettext is lastig te debuggen (zoals al aangetoond).

Daarbij is gettext niet thread-safe; niet zo'n probleem bij een hobby site en slechts 1 vertaling; maar knap irritant bij drukkere sites in meerdere talen. Het is niet zo lollig als halverwege je script ineens van taal veranderd :|

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

chem schreef op dinsdag 12 september 2006 @ 09:38:
[...]

gettext is lastig te debuggen (zoals al aangetoond).

Daarbij is gettext niet thread-safe; niet zo'n probleem bij een hobby site en slechts 1 vertaling; maar knap irritant bij drukkere sites in meerdere talen. Het is niet zo lollig als halverwege je script ineens van taal veranderd :|
even voor de goede orde, ik gebruik gettext dus echt niet op een "hobby site" met 1 vertaling maar op een grote webmail/calendar applicatie met ruim 7 verschillende talen ;)

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 14:29

chem

Reist de wereld rond

Erkens schreef op dinsdag 12 september 2006 @ 13:41:
[...]

even voor de goede orde, ik gebruik gettext dus echt niet op een "hobby site" met 1 vertaling maar op een grote webmail/calendar applicatie met ruim 7 verschillende talen ;)
Anoniem: 129723 schreef op woensdag 30 augustus 2006 @ 08:55:
code:
1
2
putenv("LANG=$language");
[...]
even gestripped; die putenv is het probleem.

En dat het nog niet opgevallen is betekend niet dat het niet fout kan gaan. Een zeldzame race-conditie is toch /ook/ een race-conditie? En die wil je toch vermijden?

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Ow, wacht, met een Windows server is er idd een kleine kans dat dit fout gaat ja, maar dat is dan op te lossen door PHP als CGI te draaien.

overigens is het beter imo om gewoon setlocale te gebruiken ipv met putenv te lopen knoeien

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Spider.007 schreef op maandag 11 september 2006 @ 21:24:
[...]

Pak eens een pagina waar vertaalde teksten op staan; en reload heel snel 10 keer achter elkaar. Ik durf te wedden dat er minstens 1 keer een taal voorbijkomt die je niet had verwacht :)
Ben bang dat je toch gelijk krijgt :p
Ik ben bezig om chinese teksten er in te krijgen. Ik heb een testtext er in gezet met een aantal uitroeptekens. Nu kreeg ik idd 1 op de 15a20 keer een Ni Hao terug zonder uitroeptekens. Dat was dan idd de versie die ik eerst had. Maar ik had (minstens 4uur geleden ) een nieuwe .mo neergezet. Pas na een apache restart hield hij daar mee op.

Zowiezo is het me nog niet gelukt om chinese tekens goed door gettext te krijgen. Gewoon in m'n browser weergeven gaat wel. Maar de compile programma's die ik getest heb gaan allemaal over hun nek.
Altijd fijn, vertaalprogramma's die geen chinees aankunnen. :{
Pagina: 1