Jump to content

Gettext not passing values


chrisguk

Recommended Posts

Hi,

 

I have looked through the forum for a fix for this but I was unable to find one.

 

Basically the code I have provided below is not giving me the correct output in other words changing the text to German.

 

I am using an "Ubuntu" environment with Apache2 and php5 installed.  I have checked that php-gettext is installed.

 

I have also attached my .mo file  (I have added the .txt extension to upload here)

 

local.php

<?php

$locale = false;
if (isSet($_GET["locale"])){
$locale = $_GET["locale"];
setcookie("locale", $locale, time()+60*60*24*30, "/");// save a cookie
}
if (!$locale && isSet($_COOKIE["locale"])){
$locale = $_COOKIE["locale"];
}
putenv("LC_ALL=$locale");//needed on some systems
putenv("LANGUAGE=$locale");//needed on some systems
setlocale(LC_ALL, $locale);
bindtextdomain("messages", $_SERVER["DOCUMENT_ROOT"]."locale");
bind_textdomain_codeset("messages", "UTF-8");
textdomain("messages");

?>

 

test.php

<?php require_once "local.php";

echo $_SERVER["DOCUMENT_ROOT"]."locale";  //for testing
?>
<html><head></head>
<body>
<a href='?locale=en_US'>English</a> |
<a href='?locale=es_ES'>Spanish</a> |
<a href='?locale=de_DE'>German</a>
<br>
<?php echo _("Hello World!");?><br>
<p><?php echo _("My name is");?> Bob.</p>
</body>
</html>

Link to comment
Share on other sites

found this in the php gettext manual hope it works 8)

 

it said it works without having to reboot the apache or window server.

 

<?php
$gettext_domain = 'sk'; // change by language
setlocale(LC_ALL, 'sk_SK.UTF-8'); // change by language, directory name sk_SK, not sk_SK.UTF-8
bindtextdomain($gettext_domain, "lang");
textdomain($gettext_domain);
bind_textdomain_codeset($gettext_domain, 'UTF-8');
?>

Link to comment
Share on other sites

Hi,

 

Here it is:

 

<?php

$gettext_domain = 'de'; // change by language

setlocale(LC_ALL, 'de_DE.UTF-8'); // change by language, directory name sk_SK, not sk_SK.UTF-8

bindtextdomain($gettext_domain, "lang");

textdomain($gettext_domain);

bind_textdomain_codeset($gettext_domain, 'UTF-8');

 

$locale = "de_DE";

if (isSet($_GET["locale"])) $locale = $_GET["locale"];

putenv("LC_ALL=$locale");

setlocale(LC_ALL, $locale);

bindtextdomain("messages", "locale");

bind_textdomain_codeset("messages", 'UTF-8');

textdomain("messages");

?>

 

test.php

<?php require_once "local.php";

 

?>

<html><head></head>

<body>

<a href='?locale=en_US'>English</a> |

<a href='?locale=es_ES'>Spanish</a> |

<a href='?locale=de_DE'>German</a>

<br>

<?php echo _("Hello World!");?><br>

<?php

$world = 'world';

 

printf(gettext("Hello %s!"), $world); ?>

<p><?php echo _("My name is");?> Bob.</p>

</body>

</html>

Link to comment
Share on other sites

Hi dark,

 

Unfortunately that has not resolved the issue.  I have made a final amendment to the code below, if you can figure out the issue you are a better man than me lol:

 

<?php

$gettext_domain = 'sk'; // change by language

setlocale(LC_ALL, 'sk_SK.UTF-8'); // change by language, directory name sk_SK, not sk_SK.UTF-8

bindtextdomain($gettext_domain, "lang");

textdomain($gettext_domain);

bind_textdomain_codeset($gettext_domain, 'UTF-8');

 

local.php

$locale = false;
if (isSet($_GET["locale"])){
$locale = $_GET["locale"];
setcookie("locale", $locale, time()+60*60*24*30, "/");// save a cookie
}
if (!$locale && isSet($_COOKIE["locale"])){
$locale = $_COOKIE["locale"];
}
putenv("LC_ALL=$locale");//needed on some systems
putenv("LANGUAGE=$locale");//needed on some systems
setlocale(LC_ALL, $locale);
bindtextdomain("messages", $_SERVER['DOCUMENT_ROOT']. "locale");
bind_textdomain_codeset("messages", "UTF-8");
textdomain("messages");
?>

 

test.php

<?php require_once "local.php";?>
<html><head></head>
<body>
<a href="?locale=en_US">English</a> |
<a href="?locale=es_ES">Spanish</a> |
<a href="?locale=de_DE">German</a>
<br>
<?php echo _("Hello World!");?><br>
<p><?php echo _("My name is");?> Bob.</p>
</body>
</html>

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.