---
title: "Maintenance"
manual: "Code Highlight"
version: "5.0"
permalink: "https://docs.typo3.org/permalink/brotkrueml/codehighlight:maintenance@5.0"
source: "Maintenance/Index.rst"
rendered: "2026-10-12T15:21:37+00:00"
---

# Maintenance {#maintenance}

Target group: **Contributors, Developers**

## Translations {#maintenance-translations}

The translation to other languages is done within the
[Crowdin](https://crowdin.com/) service. It is appreciated to add missing or
incomplete languages. Please navigate to the
[project home](https://crowdin.com/project/typo3-extension-codehighlight).
If the language is not available please drop me a [note](https://docs.typo3.org/permalink/brotkrueml/codehighlight:start@5.0) and I will
create it.

> [!NOTE]
> For now, the language files are integrated into a release of the extension.
> When the new
> [translation structure](https://github.com/TYPO3-Initiatives/crowdin)
> (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 {#maintenance-prism}

For syntax highlighting [PrismJS](https://prismjs.com/) is used. The JavaScript
library and its dependencies are managed with npm and build with gulp:

```shell
cd Build
npm ci
npm run build
```

The `npm run 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.

### Update {#maintenance-prism-update}

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

```shell
cd Build
npm update prismjs
npm run 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`.

> [!NOTE]
> 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](https://github.com/ds300/patch-package#readme)
> is used for that.

## Packaging of extension for TER {#maintenance-packaging-extension}

Set the new version in the files

-   `ext_emconf.php`
-   `Documentation/guides.xml`,

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

```shell
make zip
```

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