Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Language Pack Maker

Requires PHP 7.0 or higher.

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


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 will create .mo files from the .po files.
  • It will create .json translation files for your javascript.
  • 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 cleanup/remove the temporary directory when finished.

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/",
        "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'    => '',
		'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": [
      "php ./vendor/autoload.php"


A framework to help make git sourced WordPress Language Packs.




No releases published


No packages published


You can’t perform that action at this time.