Download the PHP package gettext-voo4/gettext without Composer
On this page you can find all versions of the php package gettext-voo4/gettext. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download gettext-voo4/gettext
More information about gettext-voo4/gettext
Files in gettext-voo4/gettext
Package gettext
Short Description PHP gettext manager
License MIT
Homepage https://github.com/epikgr/Gettext
Informations about the package gettext
Gettext
Created by Oscar Otero http://oscarotero.com [email protected] (MIT License)
Gettext is a PHP (>=5.4) library to import/export/edit gettext from PO, MO, PHP, JS files, etc.
Installation
With composer (recomended):
If you don't use composer in your project, you have to download and place this package in a directory of your project. You need to install also gettext/languages. Then, include the autoloaders of both projects in any place of your php code:
Classes and functions
This package contains the following classes:
Gettext\Translation
- A translation definitionGettext\Translations
- A collection of translationsGettext\Extractors\*
- Import translations from various sources (po, mo, php, js, etc)Gettext\Generators\*
- Export translations to various formats (po, mo, php, json, etc)Gettext\Translator
- To use the translations in your php templates instead the gettext extensionGettext\GettextTranslator
- To use the gettext extension
Usage example
If you want use this translations in your php templates without using the gettext extension:
To use this translations with the gettext extension:
The benefits of using the functions provided by this library (__()
instead _()
or gettext()
) are:
- You are using the same functions, no matter whether the translations are provided by gettext extension or any other method.
- You can use variables easier because
sprintf
functionality is included. For example:__('Hello %s', 'world')
insteadsprintf(_('Hello %s'), 'world')
. - You can also use named placeholders if the second argument is an array. For example:
__('Hello %name%', ['%name%' => 'world'])
instead ofstrtr(_('Hello %name%'), ['%name%' => 'world'])
.
Translation
The Gettext\Translation
class stores all information about a translation: the original text, the translated text, source references, comments, etc.
Translations
The Gettext\Translations
class stores a collection of translations:
Extractors
The extrators allows to fetch gettext values from any source. For example, to scan a .po file:
The better way to use extractors is using the magic methods of Gettext\Translations
:
The available extractors are the following:
Name | Description | Example |
---|---|---|
Blade | Scans a Blade template (For laravel users). | example |
Csv | Gets the messages from csv. | example |
CsvDictionary | Gets the messages from csv (without plurals and context). | example |
Jed | Gets the messages from a json compatible with Jed. | example |
JsCode | Scans javascript code looking for all gettext functions (the same than PhpCode but for javascript). You can use the javascript gettext-translator library | example |
Json | Gets the messages from json compatible with gettext-translator. | example |
JsonDictionary | Gets the messages from a json (without plurals and context). | example |
Mo | Gets the messages from MO. | example |
PhpArray | Gets the messages from a php file that returns an array. | example |
PhpCode | Scans php code looking for all gettext functions (see translator_functions.php ). |
example |
Po | Gets the messages from PO. | example |
Twig | To scan a Twig template. | example |
Xliff | Gets the messages from xliff (2.0). | example |
Yaml | Gets the messages from yaml. | example |
YamlDictionary | Gets the messages from a yaml (without plurals and context). | example |
VueJs | Gets the messages from a VueJs template. | example |
Generators
The generators export a Gettext\Translations
instance to any format (po, mo, array, etc).
Like extractors, the better way to use generators is using the magic methods of Gettext\Translations
:
The available generators are the following:
Name | Description | Example |
---|---|---|
Csv | Exports to csv. | example |
CsvDictionary | Exports to csv (without plurals and context). | example |
Json | Exports to json, compatible with gettext-translator. | example |
JsonDictionary | Exports to json (without plurals and context). | example |
Mo | Exports to Mo. | example |
PhpArray | Exports to php code that returns an array. | example |
Po | Exports to Po. | example |
Jed | Exports to json format compatible with Jed. | example |
Xliff | Exports to xliff (2.0). | example |
Yaml | Exports to yaml. | example |
YamlDictionary | Exports to yaml (without plurals and context). | example |
Translator
The class Gettext\Translator
implements the gettext functions in php. Useful if you don't have the native gettext extension for php or want to avoid problems with it. You can load the translations from a php array file or using a Gettext\Translations
instance:
GettextTranslator
The class Gettext\GettextTranslator
uses the gettext extension. It's useful because combines the performance of using real gettext functions but with the same API than Translator
class, so you can switch to one or other translator deppending of the environment without change code of your app.
Global functions
To ease the use of translations in your php templates, you can use the provided functions:
You can scan the php files containing these functions and extract the values with the PhpCode extractor:
Merge translations
To work with different translations you may want merge them in an unique file. There are two ways to do this:
The simplest way is adding new translations:
A more advanced way is merge two Translations
instances:
The second argument of mergeWith
defines how the merge will be done. Use the Gettext\Merge
constants to configure the merging:
Constant | Description |
---|---|
Merge::ADD |
Adds the translations from $translations2 that are missing |
Merge::REMOVE |
Removes the translations missing in $translations2 |
Merge::HEADERS_ADD |
Adds the headers from $translations2 that are missing |
Merge::HEADERS_REMOVE |
Removes the headers missing in $translations2 |
Merge::HEADERS_OVERRIDE |
Overrides the headers with the values of $translations2 |
Merge::LANGUAGE_OVERRIDE |
Set the language defined in $translations2 |
Merge::DOMAIN_OVERRIDE |
Set the domain defined in $translations2 |
Merge::TRANSLATION_OVERRIDE |
Override the translation and plural translations with the value of $translation2 |
Merge::COMMENTS_OURS |
Use only the comments of $translation1 |
Merge::COMMENTS_THEIRS |
Use only the comments of $translation2 |
Merge::EXTRACTED_COMMENTS_OURS |
Use only the extracted comments of $translation1 |
Merge::EXTRACTED_COMMENTS_THEIRS |
Use only the extracted comments of $translation2 |
Merge::FLAGS_OURS |
Use only the flags of $translation1 |
Merge::FLAGS_THEIRS |
Use only the flags of $translation2 |
Merge::REFERENCES_OURS |
Use only the references of $translation1 |
Merge::REFERENCES_THEIRS |
Use only the references of $translation2 |
Example:
Note, if the second argument is not defined, the default value is Merge::DEFAULTS
that's equivalent to Merge::ADD | Merge::HEADERS_ADD
.
Use from CLI
There's a Robo task to use this library from the command line interface: https://github.com/oscarotero/GettextRobo
Use in the browser
If you want to use your translations in the browser, there's a javascript translator: https://github.com/oscarotero/gettext-translator
Third party packages
Twig integration:
Framework integration:
Contributors
Thanks to all contributors specially to @mlocati.
Donations
If this library is useful for you, consider to donate to the author.
Thanks in advance!