1. Go to this page and download the library: Download omega-mvc/gettext library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
omega-mvc / gettext example snippets
use Omega\Gettext\Loader\PoLoader;
use Omega\Gettext\Generator\MoGenerator;
//import from a .po file:
$loader = new PoLoader();
$translations = $loader->loadFile('locales/gl.po');
//edit some translations:
$translation = $translations->find(null, 'apple');
if ($translation) {
$translation->translate('Mazá');
}
//export to a .mo file:
$generator = new MoGenerator();
$generator->generateFile($translations, 'Locale/gl/LC_MESSAGES/messages.mo');
use Omega\Gettext\Translation;
$translation = Translation::create('comments', 'One comment', '%s comments');
$translation->translate('Un comentario');
$translation->translatePlural('%s comentarios');
$translation->getReferences()->add('templates/comments/comment.php', 34);
$translation->getComments()->add('To display the amount of comments in a post');
echo $translation->getContext(); // comments
echo $translation->getOriginal(); // One comment
echo $translation->getTranslation(); // Un comentario
// etc...
use Omega\Gettext\Translations;
$translations = Translations::create('my-domain');
//You can add new translations:
$translation = Translation::create('comments', 'One comment', '%s comments');
$translations->add($translation);
//Find a specific translation
$translation = $translations->find('comments', 'One comment');
//Edit headers, domain, etc
$translations->getHeaders()->set('Last-Translator', 'Oscar Otero');
$translations->setDomain('my-blog');
use Omega\Gettext\Translator;
//Create a new instance of the translator
$t = new Translator();
//Load the translations from php files (generated by Omega\Gettext\Extractors\PhpArray)
$t->loadTranslations(
'locales/gl/domain1.php',
'locales/gl/domain2.php',
'locales/gl/domain3.php',
);
//Now you can use it in your templates
echo $t->gettext('apple');
use Omega\Gettext\GettextTranslator;
//Create a new instance
$t = new GettextTranslator();
//It detects the environment variables to set the locale, but you can change it:
$t->setLanguage('gl');
//Load the domains:
$t->loadDomain('messages', 'project/Locale');
//this means you have the file "project/Locale/gl/LC_MESSAGES/messages.mo"
//Now you can use it in your templates
echo $t->gettext('apple');
use Omega\Gettext\TranslatorFunctions;
//Register the translator (a default Formatter is used if none is provided)
TranslatorFunctions::register($t);
$translator = TranslatorFunctions::getTranslator();
echo $translator->gettext('apple'); // same as $t->gettext('apple');
use Omega\Gettext\Loader\PoLoader;
$loader = new PoLoader();
//From a file
$translations = $loader->loadFile('locales/en.po');
//From a string
$string = file_get_contents('locales2/en.po');
$translations = $loader->loadString($string);
use Omega\Gettext\Loader\StrictPoLoader;
$loader = new StrictPoLoader();
//From a file
$translations = $loader->loadFile('locales/en.po');
//From a string
$string = file_get_contents('locales2/en.po');
$translations = $loader->loadString($string);
//Display error messages using "at line X column Y" instead of "at byte X"
$loader->displayErrorLine = true;
//Throw an exception when a warning happens
$loader->throwOnWarning = true;
//Retrieve the warnings
$loader->getWarnings();
use Omega\Gettext\Generator\ArrayGenerator;
use Omega\Gettext\Loader\PoLoader;
// Load translations from a .po file
$loader = new PoLoader();
$translations = $loader->loadFile('locales/en.po');
// Generate PHP array file with pretty print and strict types
$generator = new ArrayGenerator([
'pretty' => true,
'strictTypes' => true
]);
$phpCode = $generator->generateString($translations);
file_put_contents('locale/en/messages.php', $phpCode);
use Omega\Gettext\Loader\PoLoader;
use Omega\Gettext\Loader\JsonLoader;
use Omega\Gettext\Generator\JsonGenerator;
use Omega\Gettext\Translations;
//Load a .po file and export to .json
$translations = (new PoLoader())->loadFile('locales/translations.po');
(new JsonGenerator())->generateFile($translations, 'locales/translations.json');
//You can load the json file with JsonLoader
$loadedTranslations = (new JsonLoader())->loadFile('locales/translations.json');
use Omega\Gettext\Loader\PoLoader;
use Omega\Gettext\Generator\MoGenerator;
//Load a PO file
$poLoader = new PoLoader();
$translations = $poLoader->loadFile('locales/en.po');
//Save to MO file
$moGenerator = new MoGenerator();
$moGenerator->generateFile($translations, 'locales/en.mo');
//Or return as a string
$content = $moGenerator->generateString($translations);
file_put_contents('locales/en.mo', $content);
use Omega\Gettext\Loader\PoLoader;
use Omega\Gettext\Generator\PoGenerator;
// Load translations from a PO file
$loader = new PoLoader();
$translations = $loader->loadFile('locales/en.po');
// Generate a .po string
$generator = new PoGenerator();
$poContent = $generator->generateString($translations);
// Save to a file
file_put_contents('locales/generated.po', $poContent);
use Omega\Gettext\Scanner\JsScanner;
use Omega\Gettext\Generator\PoGenerator;
use Omega\Gettext\Translations;
//Create a new scanner, adding a translation for each domain we want to get:
$jsScanner = new JsScanner(
Translations::create('domain1'),
Translations::create('domain2'),
Translations::create('domain3')
);
//Scan files
foreach (glob('*.js') as $file) {
$jsScanner->scanFile($file);
}
//Save the translations in .po files
$generator = new PoGenerator();
foreach ($jsScanner->getTranslations() as $translations) {
$domain = $translations->getDomain();
$generator->generateFile($translations, "locales/{$domain}.po");
}
use Omega\Gettext\Scanner\PhpScanner;
use Omega\Gettext\Generator\PoGenerator;
use Omega\Gettext\Translations;
//Create a new scanner, adding a translation for each domain we want to get:
$phpScanner = new PhpScanner(
Translations::create('domain1'),
Translations::create('domain2'),
Translations::create('domain3')
);
//Set a default domain, so any translations with no domain specified, will be added to that domain
$phpScanner->setDefaultDomain('domain1');
//Extract all comments starting with 'i18n:' and 'Translators:'
$phpScanner->extractCommentsStartingWith('i18n:', 'Translators:');
//Scan files
foreach (glob('*.php') as $file) {
$phpScanner->scanFile($file);
}
//Save the translations in .po files
$generator = new PoGenerator();
foreach ($phpScanner->getTranslations() as $domain => $translations) {
$generator->generateFile($translations, "locales/{$domain}.po");
}