---
title: "Labels"
manual: "Academic Projects"
version: "main"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-projects:configuration-labels@main"
source: "Configuration/Labels/Index.rst"
rendered: "2026-10-12T23:12:54+00:00"
---

# Labels {#configuration-labels}

The labels this extension shows in the frontend come from
[`EXT:academic_projects/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_academicprojects._LOCAL_LANG` for every content element
of the extension, or under `plugin.tx_academicprojects_<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_academicprojects._LOCAL_LANG {
  default.project.runtime = Duration
  de.project.runtime = Laufzeit
}

# Only in one content element:
plugin.tx_academicprojects_projectlist._LOCAL_LANG.default.project.runtime = Duration
```

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 |
| --- | --- |
| **Projects** (`academicprojects_projectlist`) | `plugin.tx_academicprojects_projectlist._LOCAL_LANG` |
| **Selected Projects** (`academicprojects_projectlistsingle`) | `plugin.tx_academicprojects_projectlistsingle._LOCAL_LANG` |

The page template of a project page is not rendered by a plugin: a site sets
its labels 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_projects` instead, see
[the changelog](https://docs.typo3.org/permalink/fgtclb/academic-projects:important-label-overrides-use-the-documented-path@main).

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

A category type is named by the label `sys_category.projects.<type>`. The
language file of this extension has one for each type it ships. A type a
project registers for the group `projects` 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_academicprojects._LOCAL_LANG`, or under the path of one
content element, wins over the title:

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

```typoscript
plugin.tx_academicprojects._LOCAL_LANG {
  default.sys_category.projects.funding_body = Funding
  de.sys_category.projects.funding_body = Förderung
}
```

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

## 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 |
| --- | --- |
| `activeState.<state>` | `Partials/Project/DemandActiveState.html`, `Partials/Project/ActiveFilters.html`, `Partials/Project/Item.html` |
| `activeState.label` | `Partials/Project/DemandActiveState.html` |
| `filter.activeFilters.label`, `filter.activeFilters.remove`, `filter.reset` | `Partials/Project/ActiveFilters.html` |
| `filter.moreFilters` | `Partials/Project/DemandCategories.html` |
| `list.noProjectsFound` | `Partials/Project/ItemList.html` |
| `list.resultCount.singular`, `list.resultCount.plural` | `Partials/Project/ResultCount.html` |
| `project.budget` | `Partials/Project/Page/Facts.html` |
| `project.funders` | `Partials/Project/Page/Facts.html` |
| `project.runtime` | `Partials/Project/Page/Facts.html` |
| `project.since` | `Partials/Project/Page/Facts.html` |
| `project.until` | `Partials/Project/Page/Facts.html` |
| `sorting.direction.label` | `Partials/Project/DemandSorting.html` |
| `sorting.field.label` | `Partials/Project/DemandSorting.html` |
| `sys_category.projects.<type>` | `Partials/Project/Page/Categories.html`, `Partials/Project/DemandCategories.html`, `Partials/Project/Item.html` |
| `sys_category.projects.allOptions` | `Partials/Project/DemandCategories.html` |
| `sys_category.projects.allOptions.<type>` | `Partials/Project/DemandCategories.html` |
| `sorting.field.<field>`, `sorting.direction.<direction>` | The options of the sorting select, translated by its view helper |
