---
title: "Labels"
manual: "Academic Programs"
version: "3.0"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-programs:configuration-labels@3.0"
source: "Configuration/Labels/Index.rst"
rendered: "2026-10-26T17:55:42+00:00"
---

# Labels {#configuration-labels}

The labels this extension shows in the frontend come from
[`EXT:academic_programs/Resources/Private/Language/locallang.xlf`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Resources/Private/Language.html#file-extension-resources-private-language-locallang-xlf) and its
translations; the table below names the ones that come from another file. A site
changes a label without copying a template, in TypoScript:
under `plugin.tx_academicprograms._LOCAL_LANG` for every content element
of the extension, or under `plugin.tx_academicprograms_<plugin>._LOCAL_LANG`
for one of them. A label set for the plugin wins over one set for the extension.

**EXT:my_sitepackage/Configuration/TypoScript/setup.typoscript**

```typoscript
plugin.tx_academicprograms._LOCAL_LANG {
  default.page.backToList = All study programs
  de.page.backToList = Alle Studiengänge
}

# Only in one content element:
plugin.tx_academicprograms_programlist._LOCAL_LANG.default.page.backToList = All study programs
```

The dots of a key need no escaping: TypoScript reads them as levels of its tree,
and TYPO3 joins the levels to the key again. A label of another language goes
under its language key, `de` for German.

| Content element | Path |
| --- | --- |
| **Course List** (`academicprograms_programlist`) | `plugin.tx_academicprograms_programlist._LOCAL_LANG` |
| **Course Data** (`academicprograms_programdetails`) | `plugin.tx_academicprograms_programdetails._LOCAL_LANG` |
| **Course Finder** (`academicprograms_programfinder`) | `plugin.tx_academicprograms_programfinder._LOCAL_LANG` |

The page template of a program page is not rendered by a plugin: a site sets
its labels, the facts it shows among them, under the path of the extension.

A language file override works as well, and replaces the label of the file
itself: `$GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride']` on
TYPO3 v13, `$GLOBALS['TYPO3_CONF_VARS']['LANG']['resourceOverrides']` on
TYPO3 v14.

Earlier versions of this extension read these overrides on TYPO3 v13 from
`plugin.tx_academic_programs` instead, see
[the changelog](https://docs.typo3.org/permalink/fgtclb/academic-programs:important-label-overrides-use-the-documented-path@3.0).

## Category types of a project {#configuration-labels-category-types}

A category type is named by the label `sys_category.programs.<type>`. The
language file of this extension has one for each type it ships. A type a
project registers for the group `programs` has none, and is named by the title
it is registered with in `Configuration/CategoryTypes.yaml` instead,
translated into the language of the page when the title is an `LLL:`
reference. A label set under
`plugin.tx_academicprograms._LOCAL_LANG`, or under the path of one
content element, wins over the title:

**EXT:my_sitepackage/Configuration/TypoScript/setup.typoscript**

```typoscript
plugin.tx_academicprograms._LOCAL_LANG {
  default.sys_category.programs.teaching_form = Mode of study
  de.sys_category.programs.teaching_form = Studienform
}
```

A template override hands the label to the title view helper, see
[the changelog](https://docs.typo3.org/permalink/fgtclb/academic-programs:feature-1791035982@3.0).

## Where the labels are shown {#where-the-labels-are-shown}

Placeholders in angle brackets stand for a part of the key that the template
or the code fills in, a category type or a field name for example.

| Key | Shown by |
| --- | --- |
| `filter.activeFilters.label`, `filter.activeFilters.remove`, `filter.reset` | `Partials/Program/ActiveFilters.html` |
| `filter.moreFilters` | `Partials/Program/DemandCategories.html` |
| `finder.submit` | `Templates/Program/Finder.html` |
| `list.noProgramsFound` | `Partials/Program/ItemList.html` |
| `list.resultCount.singular`, `list.resultCount.plural` | `Partials/Program/ResultCount.html`, and the announcement after an update in place, `Templates/Program/List.html` |
| `list.submit` | `Partials/Program/SortingAndFilters.html`, the submit button for a visitor without JavaScript |
| `page.applicationLink.defaultLabel` | `Partials/Program/Page/CallToAction.html` |
| `page.backToList` | `Partials/Program/Page/Header.html` |
| `sorting.direction.label` | `Partials/Program/DemandSorting.html` |
| `sorting.field.label` | `Partials/Program/DemandSorting.html` |
| `sys_category.programs.<type>` | `Partials/Program/DemandCategories.html`, `Templates/Program/Finder.html` |
| `sys_category.programs.allOptions` | `Partials/Program/DemandCategories.html`, `Templates/Program/Finder.html` |
| `sys_category.programs.allOptions.<type>` | `Partials/Program/DemandCategories.html`, `Templates/Program/Finder.html` |
| `sorting.field.<field>`, `sorting.direction.<direction>` | The options of the sorting select, translated by its view helper |
| `sys_category.programs.<type>`, `program.<field>` | The labels of the program facts, `Partials/Program/Facts/Item.html`; the key is built from the configured fact |
