问题
I've posted a question yesterday but I just realized that the answer doesn't seem to be working for a certain situation. The post was php string variables in gettext and here is what I asked about:
Hello,
How does gettext translate string variables? It doesn't seem to want to do it.. lets say I have $sentence = "Hello World"; and then I want to echo ($sentence); ... how can I do that so that I can translate what's inside $sentence in Poedit?I can use -> echo sprintf(("%s test"), $sentence) and this will print "Hello World test" in the browser but it will appear as "%s test" in Poedit and I won't get the translated version of Hello World inside of Poedit. So how can I use string variables inside Poedit? Thanks!
This has been solved.
The problem occurs if I want to grab data from an XML file and translate it.
I want to be able to do the following:
$foo = $xmlData -> titleText;
and then
echo _($foo);
or something like
$finalVar = _($foo);
If I look at the php file in the browser I can see the content of $foo on the page but Poedit doesn't pick up the string inside $foo so I can translate it.
(I believe this problem will also occur when translating info within js files)
Thank you for your help,
Simon
回答1:
Obviously you can't make Poedit understand PHP.
EDIT: Have you considered a different approach?
if (true) {
$foo = _('variable holds true');
}
else {
$foo = _('variable holds false');
}
echo $foo;
You can have PHP generated the gettext compatible XML and regarding the database, I believe the best solution is to store the translation in the DB itself, however you can also create a script to dump all the keys and values from the database and use gettext on it.
来源:https://stackoverflow.com/questions/1351259/php-string-variables-in-gettext-forgot-one-case-scenario