https://github.com/pherrymason/php-po-parser
Parse Gettext *.PO files with PHP
https://github.com/pherrymason/php-po-parser
gettext parser po-files
Last synced: 3 months ago
JSON representation
Parse Gettext *.PO files with PHP
- Host: GitHub
- URL: https://github.com/pherrymason/php-po-parser
- Owner: pherrymason
- License: bsd-3-clause
- Created: 2012-11-10T10:19:30.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2023-08-02T15:47:59.000Z (about 2 years ago)
- Last Synced: 2024-09-07T14:40:25.632Z (about 1 year ago)
- Topics: gettext, parser, po-files
- Language: PHP
- Homepage: http://raulferras.github.io/PHP-po-parser/
- Size: 572 KB
- Stars: 128
- Watchers: 16
- Forks: 57
- Open Issues: 3
-
Metadata Files:
- Readme: readme.md
- Changelog: changelog.md
- License: license.txt
Awesome Lists containing this project
README
PoParser
=======
PoParser is a personal project to fulfill a need I got: parse Gettext Portable files (*.po files) and edit its content using PHP.PoParser requires PHP >= 5.4, but may work in 5.3 too.
[Changelog](changelog.md)[](https://packagist.org/packages/sepia/po-parser)
[](https://packagist.org/packages/sepia/po-parser)
[](https://packagist.org/packages/sepia/po-parser)
[](https://travis-ci.org/raulferras/PHP-po-parser)
[](https://scrutinizer-ci.com/g/raulferras/PHP-po-parser/)
[](https://scrutinizer-ci.com/g/raulferras/PHP-po-parser/)[](https://gitter.im/raulferras/PHP-po-parser?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
Features
========
It supports following parsing features:- header section.
- msgid, both single and multiline.
- msgstr, both single and multiline.
- msgctxt (Message context).
- msgid_plural (plurals forms).
- #, keys (flags).
- # keys (translator comments).
- #. keys (Comments extracted from source code).
- #: keys (references).
- #| keys (previous strings), both single and multiline.
- #~ keys (old entries), both single and multiline.Installation
============```
composer require sepia/po-parser
```Usage
=====
```php
parse();// Get an entry
$entry = $catalog->getEntry('welcome.user');// Update entry
$entry = new Entry('welcome.user', 'Welcome User!');
$catalog->setEntry($entry);// You can also modify other entry attributes as translator comments, code comments, flags...
$entry->setTranslatorComments(array('This is shown whenever a new user registers in the website'));
$entry->setFlags(array('fuzzy', 'php-code'));
```## Save Changes back to a file
Use `PoCompiler` together with `FileSystem` to save a catalog back to a file:
```php
$fileHandler = new Sepia\PoParser\SourceHandler\FileSystem('en.po');
$compiler = new Sepia\PoParser\PoCompiler();
$fileHandler->save($compiler->compile($catalog));
```Documentation
=============
- [v5 Documentation](https://github.com/raulferras/PHP-po-parser/wiki/Documentation-5.0)
- [Migration guide from v4 to v5](https://github.com/raulferras/PHP-po-parser/wiki/Migration-v4-to-v5)
- [v4 documentation](https://github.com/raulferras/PHP-po-parser/wiki/Documentation-4.0)Testing
=======
Tests are done using PHPUnit.
To execute tests, from command line type:```
php vendor/bin/phpunit
```TODO
====
* Add compatibility with older disambiguating contexts formats.