<?php
// get_text.php
// RJM Programming - August, 2024
// Thanks to brice/axice/be's blurb on https://www.php.net/manual/en/function.setlocale.php

$whereplace=shell_exec("ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'");
if (strpos(($whereplace . ' ' . $_SERVER['SERVER_ADDR']), '65.254.92.213') !== false) {
     header('Location: https://65.254.95.247/PHP/gettext/get_text.php'); 
     exit; 
}

$codeset = "UTF8";  // warning ! not UTF-8 with dash '-'

// for windows compatibility (e.g. xampp) : theses 3 lines are useless for linux systems 

$lang="de_DE";
if (isset($_GET['langin'])) {
  $lang=str_replace('+',' ',urldecode($_GET['langin']));
}

putenv('LANG='.$lang.'.'.$codeset);

putenv('LANGUAGE='.$lang.'.'.$codeset);

bind_textdomain_codeset('messages', $codeset);

// set locale

bindtextdomain('messages', dirname(__FILE__) . '/locale/');

setlocale(LC_ALL, $lang.'.'.$codeset);

textdomain('messages');

$word="Sidebar";
if (isset($_GET['wordin'])) {
  $word=str_replace('+',' ',urldecode($_GET['wordin']));
}

$defdiv="<div>";
// Print a test message
$defdiv.=$word . " translates to $lang as " . gettext($word) . "<br>";
// Or use the alias _() for gettext()
$defdiv.=$word . " translates to $lang as " . _($word) . "<br></div>";

echo "<html>
<body>
<h1>Using gettext with PHP</h1>
<h3>RJM Programming - August, 2024</h3>
" . $defdiv . "
<br><br><br><table cellpadding=10 border=5>
<tr><th>Language From</th><th>Language To</th><th>Word/Phrase to Translate</th></tr>
<tr><td>English ( en_GB )</td><td>
<select id=sellang onchange=\"if (this.value.length > 0 && document.getElementById('selword').value.length != 0) { location.href=document.URL.split('?')[0].split('#')[0] + ('?wordin=' + document.getElementById('selword').value + '&langin=').replace('=&','=Sidebar&') + this.value; } \">
<option value=''>Language To ...</option>
<option value='de_DE'>German ( de_DE )</option>
<option value='fr_FR'>French ( fr_FR )</option>
<option value='it_IT'>Italian ( it_TR )</option>
<option value='es_ES'>Spanish ( es_ES )</option>
</select>
</td><td>
<select id=selword onchange=\"if (this.value.length > 0 && document.getElementById('sellang').value.length != 0) { location.href=document.URL.split('?')[0].split('#')[0] + ('?langin=' + document.getElementById('sellang').value + '&wordin=').replace('=&','=de_DE&') + this.value; } \">
<option value=''>Word/Phrase from ...</option>
<option value='Sidebar'>Sidebar</option>
<option value='Not able to create XMLHttpRequest ... sadly.'>Not able to create XMLHttpRequest ... sadly.</option>
<option value='Similar Meaning'>Similar Meaning</option>
<option value='Opposite Meaning'>Opposite Meaning</option>
<option value='best to tab or click/touch out'>best to tab or click/touch out</option>
<option value='best to finish with keyboard button, not Go button'>best to finish with keyboard button, not Go button</option>
<option value='via'>via</option>
<option value='Results go below'>Results go below</option>
<option value='English Word'>English Word</option>
<option value='French Word'>French Word</option>
<option value='German Word'>German Word</option>
<option value='Italian Word'>Italian Word</option>
<option value='Spanish Word'>Spanish Word</option>
<option value='to Translate to English Word'>to Translate to English Word</option>
<option value='to Translate to French Word'>to Translate to French Word</option>
<option value='to Translate to German Word'>to Translate to German Word</option>
<option value='to Translate to Italian Word'>to Translate to Italian Word</option>
<option value='to Translate to Spanish Word'>to Translate to Spanish Word</option>
<option value='But know the word in ...'>But know the word in ...</option>
<option value='Search'>Search</option>
<option value='Thesaurus'>Thesaurus</option>
<option value='Thesaurus Search'>Thesaurus Search</option>
<option value='English'>English</option>
<option value='French'>French</option>
<option value='German'>German</option>
<option value='Italian'>Italian</option>
<option value='Spanish'>Spanish</option>
<option value='English Word to Translate to English'>English Word to Translate to English</option>
<option value='English Word to Translate to French'>English Word to Translate to French</option>
<option value='English Word to Translate to German'>English Word to Translate to German</option>
<option value='English Word to Translate to Italian'>English Word to Translate to Italian</option>
<option value='English Word to Translate to Spanish'>English Word to Translate to Spanish</option>
<option value='French Word to Translate to French'>French Word to Translate to French</option>
<option value='French Word to Translate to English'>French Word to Translate to English</option>
<option value='French Word to Translate to German'>French Word to Translate to German</option>
<option value='French Word to Translate to Italian'>French Word to Translate to Italian</option>
<option value='French Word to Translate to Spanish'>French Word to Translate to Spanish</option>
<option value='German Word to Translate to French'>German Word to Translate to French</option>
<option value='German Word to Translate to English'>German Word to Translate to English</option>
<option value='German Word to Translate to German'>German Word to Translate to German</option>
<option value='German Word to Translate to Italian'>German Word to Translate to Italian</option>
<option value='German Word to Translate to Spanish'>German Word to Translate to Spanish</option>
<option value='Italian Word to Translate to French'>Italian Word to Translate to French</option>
<option value='Italian Word to Translate to English'>Italian Word to Translate to English</option>
<option value='Italian Word to Translate to German'>Italian Word to Translate to German</option>
<option value='Italian Word to Translate to Italian'>Italian Word to Translate to Italian</option>
<option value='Italian Word to Translate to Spanish'>Italian Word to Translate to Spanish</option>
<option value='Spanish Word to Translate to French'>Spanish Word to Translate to French</option>
<option value='Spanish Word to Translate to English'>Spanish Word to Translate to English</option>
<option value='Spanish Word to Translate to German'>Spanish Word to Translate to German</option>
<option value='Spanish Word to Translate to Italian'>Spanish Word to Translate to Italian</option>
<option value='Spanish Word to Translate to Spanish'>Spanish Word to Translate to Spanish</option>
</select>
</td></tr>
</table>
</body>
</html>";

exit;

putenv('LC_ALL=de_DE');
setlocale(LC_ALL, 'de_DE');
// Specify location of translation tables
bindtextdomain("messages", "/home/rjmprogr/public_html/PHP/gettext/locale/de_DE/LC_MESSAGES");
// Choose domain
textdomain("messages");
// Translation is looking for in ./locale/de_DE/LC_MESSAGES/messages.mo now
// Print a test message
echo gettext("Sidebar");
// Or use the alias _() for gettext()
echo _("Sidebar");
exit;

require_once("localization.php"); 
$results = gettext("Sidebar");
if ($results === "Sidebar") {
    echo "Original English was returned. Something wrong ... \n";
}
echo $results . "\n";
$results = gettext("Similar Meaning");
if ($results === "Similar Meaning") {
    echo "Original English was returned. Something wrong ... \n";
}
echo $results . "\n";
echo "<br>";
echo gettext("via");
echo "<br>";
$n = 3;
printf(ngettext("%d comment", "%d comments", $n), $n);
?>
