afragen/github-updater-language-pack-maker

Library that helps create git sourced WordPress Language Packs from po files.


Keywords
wordpress, translations, language packs
License
MIT

Documentation

Language Pack Maker

Uses class Language_Pack_Maker installed via composer into your local translation repository to create a directory of zip archives of translation .mo/.po/.json files and a language-pack.json file containing data to pass to GitHub Updater or Translations Updater library.

Install the package via composer.

Run the composer command: composer require afragen/language-pack-maker:dev-master

Requirements

This library requires all .po files to be in a /languages directory located in the repository root.

  • It will copy all .po files from /languages to a temporary directory.
  • It can run wp i18n make-json given the proper repository composer.json to create .json translation files for your javascript.
  • It will create .mo files from the .po files.
  • It will create zipfiles in a /packages directory in the repository root.
  • It will create a language-pack.json file in the repository root.
  • It will then cleanup the temporary directory.

The format of the generated JSON file is as follows.

[
  {
    "{language}": [
      {
        "type": "{plugin|theme} from GitHub Updater",
        "slug": "{$slug}",
        "language": "en_US",
        "version": "from GitHub Updater",
        "updated": "PO-Revision-Date from .po file header",
        "package": "/packages/github-updater-en_US.zip",
        "autoupdate": "1"
      }
    ]
  }
]

The update transient expects the $transient->translations in the following format.

$transient->translations( array(
	0 => array(
		'type'       => 'plugin',
		'slug'       => 'akismet',
		'language'   => 'de_CH',
		'version'    => '3.1.11',
		'updated'    => '2016-05-12 18:04:38',
		'package'    => 'https://downloads.wordpress.org/translation/plugin/akismet/3.1.11/de_CH.zip',
		'autoupdate' => 1,

	),
) );

GitHub Updater or the Translations Updater library will merge the correlative plugin or theme data with the data retrieved from the language-pack.json to add data to the update transient. Language updates will appear in the WordPress dashboard.

To utilize the Language Pack Creator, you will need to open and run http://localhost/<my-translation-repo>/vendor/autoload.php in localhost. This will create the necessary .mo, .json, zipfiles, and language-pack.json.

If you have translations in javascript files you should also do the following.

With the following added to your composer.json file, it will run the sequence described above on composer update.

  "scripts": {
    "post-update-cmd": [
      "mkdir -p ./tmp; cp -r ./languages/*.po ./tmp",
      "wp i18n make-json tmp/"
    ]
  }