Search code examples
phpinternationalizationtranslationlocalegettext

Make translations in multiple languages


I have my php gettext default language in English let's say

I would like in one of my controller, to translate some words in 2 other languages and put them all in an array.

ideally I could do

$word_sv = gettext($word, 'sv_SV');
$word_fi = gettext($word, 'fi_FI');

but it doesn't exist.

Is the only way to change the overall gettext settings each time?

function setLang($lang){
    putenv("LC_ALL=$lang");
    setlocale(LC_ALL, $lang);
    bindtextdomain("myPHPApp", "./locale");
    textdomain("myPHPApp");
}

setLang('sv_SV');
$word_sv = gettext($word);
setLang('fi_FI');
$word_fi = gettext($word);

related: saw it on Google after : i18n with gettext but without the locale hassle?


Edit

here are the proposed answered solutions:


Solution

  • I know the pains of using gettext, but its performance is what keeps me with it !

    In your case, you might want to look at this little project ? i'm pretty sure this might help you !

    this simply uses .ini files with translations, you can freely switch between files and echo the different languages for the same word.

    https://github.com/Philipp15b/php-i18n