Target group: Contributors, Developers


The translation to other languages is done within the Crowdin service. It is appreciated to add missing or incomplete languages. Please navigate to the project home. If the language is not available please drop me a note and I will create it.


For now, the language files are integrated into a release of the extension. When the new translation structure (based on the translations within Crowdin) is in place, the language files (other than English) will be removed in favour of the new infrastructure.

PrismJS Library

For syntax highlighting PrismJS is used. The JavaScript library and its dependencies are managed with yarn and build with gulp:

cd Build
yarn install
yarn build

The yarn build command runs the according gulp task and copies the Prism components (aka languages), plugins and themes to the Resources/Public/Vendor/PrismJs/ folder. Also a PHP file Resources/Private/PHP/AvailableProgrammingLanguages.php is generated with the available languages. It will be used for the select box of programming languages in the backend form. The option values are "translated" via the Resources/Private/Language/ProgrammingLanguages.xlf file.


To update the library to the recent version just call on the console:

cd Build
yarn upgrade prismjs
yarn build

The copied artifacts can now be committed (along with the package.json file to the repository. Don't forget to add new files to the commit and add these to the translation file Resources/Private/Language/ProgrammingLanguages.xlf.


Due to the variants JavaScript files can be integrated into the page (like last modification timestamp is embedded into the filename), the script Build/node_modules/prismjs/plugins/autoloader/prism-autoloader.js was patched: The variable autoloaderFile regex has to be set to adjusted to consider a possibly available timestamp in the filename. When updating the PrismJS library, the patch under Build/patches/prismjs+1.xx.x.patch has to be adjusted eventually. The package patch-package is used for that.

Packaging of extension for TER

Set the new version in the files

  • ext_emconf.php

  • Documentation/Settings.cfg,

adjust the and tag the release. The packaging of the extension for the TYPO3 Extension Repository (TER) can be done with:

make zip

This creates/replaces a file ../zip/ which is ready for upload to TER. x.y.z holds the recent version number.