Coding Guidelines 

More information is found in the Coding Guidelines section of the "TYPO3 Explained" manual (formerly known as "Core API").

This is just a very brief overview.

PHP 

Make sure you are using the correct PHP code style. It is based on the TYPO3 Coding Standards, (which follows PER-CS1.0 / PSR-12 and transition into PER-CS2.0 at the time of this writing), and covered in the TYPO3 Coding Guidelines.

See PhpStorm setup: CGL for information on how to configure the correct coding style.

The Appendix contains information on scripts to check / fix coding guideline issues: CGL check and fix

Most PHP coding guidelines can be automatically applied with the command:

Build/Scripts/runTests.sh -s cgl
Copied!

JavaScript 

The following rules should be applied for JavaScript: Airbnb JavaScript Style Guide

TypeScript 

The following rules should be applied for TypeScript: Excel Micro TypeScript Style Guide.

Xliff files 

Language files are usually stored in a Folder Resources/Private/Language in files with the ending .xlf. While no tabs are allowed to indent in PHP files, you should edit Xliff files using tabs. Please also check Xliff / language files for Xliff-specific things to pay attention to.

XLIFF file naming 

XLIFF files have historically been named with file names starting with locallang_. Newly introduced XLIFF files should drop the locallang_ prefix and only be named according to their purpose, for example clipboard.xlf or db/tt_content.xlf. Newly introduced file names should use snake_case.

TCA-related XLIFF files should either be called db.xlf or be stored in a folder named db, for example db/tt_content.xlf.

Label reference naming 

Newly introduced label references should use snake case. Different parts of a label reference can be separated by dots, for example:

<trans-unit id="my_field.title">
    <source>My title</source>
</trans-unit>
<trans-unit id="my_field.description">
    <source>My description</source>
</trans-unit>
Copied!

Existing labels should not be mass-changed to snake case, as each changed label must be retranslated into all languages.