---
title: "Labels"
manual: "Academic Profiles Edit"
version: "2.4"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-persons-edit:configuration-labels@2.4"
source: "Configuration/Labels/Index.rst"
rendered: "2026-10-26T16:44:21+00:00"
---

# Labels {#configuration-labels}

The labels this extension shows in the frontend come from
[`EXT:academic_persons_edit/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_academicpersonsedit._LOCAL_LANG` for every content element
of the extension, or under `plugin.tx_academicpersonsedit_<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_academicpersonsedit._LOCAL_LANG {
  default.list.profile = Profile
  de.list.profile = Profil
}

# Only in one content element:
plugin.tx_academicpersonsedit_profileediting._LOCAL_LANG.default.list.profile = Profile
```

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 |
| --- | --- |
| **Profile editing** (`academicpersonsedit_profileediting`) | `plugin.tx_academicpersonsedit_profileediting._LOCAL_LANG` |

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

Earlier versions of this extension read these overrides on TYPO3 v12 and v13 from
`plugin.tx_academic_persons_edit` instead, and the options of its select fields from
`plugin.tx_persons_edit`, see
[the changelog](https://docs.typo3.org/permalink/fgtclb/academic-persons-edit:important-label-overrides-use-the-documented-path@2.4).

## 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 |
| --- | --- |
| `<field>.label` | `Partials/Profile/Forms/FieldWrapper.html` |
| `<field>.placeholder` | `Partials/Profile/Forms/Textarea.html`, `Partials/Profile/Forms/Textfield.html` |
| `<property>.delete` | `Partials/Profile/Buttons/DeleteCancel.html` |
| `<formObject>.<field>.error.<code>`, see [Messages of a rejected form](https://docs.typo3.org/permalink/fgtclb/academic-persons-edit:configuration-labels-validation@2.4) | `Partials/Profile/Forms/ErrorMessage.html` |
| `actions.add` | `Templates/Contract/Show.html`, `Templates/Profile/Show.html` |
| `actions.cancel` | `Partials/Profile/Buttons/DeleteCancel.html`, `Partials/Profile/Buttons/SaveExitCancel.html`, `Templates/Profile/EditImage.html` |
| `actions.delete` | `Partials/Profile/Buttons/DeleteCancel.html`, `Partials/Profile/List/Contracts.html`, `Partials/Profile/List/EmailAddresses.html`, `Partials/Profile/List/PhoneNumbers.html`, `Partials/Profile/List/PhysicalAddresses.html`, `Partials/Profile/List/ProfileInformation.html`, `Templates/Profile/Show.html` |
| `actions.edit` | `Partials/Profile/List/Contracts.html`, `Partials/Profile/List/EmailAddresses.html`, `Partials/Profile/List/PhoneNumbers.html`, `Partials/Profile/List/PhysicalAddresses.html`, `Partials/Profile/List/ProfileInformation.html`, `Partials/Profile/Show/Personal.html`, `Templates/Contract/Show.html`, `Templates/EmailAddress/Show.html`, `Templates/PhoneNumber/Show.html`, `Templates/PhysicalAddress/Show.html`, `Templates/Profile/List.html`, `Templates/ProfileInformation/Show.html` |
| `actions.hide` | `Partials/Profile/List/EmailAddresses.html`, `Partials/Profile/List/PhoneNumbers.html`, `Partials/Profile/List/PhysicalAddresses.html` |
| `actions.save` | `Partials/Profile/Buttons/SaveExitCancel.html`, `Templates/Profile/EditImage.html` |
| `actions.saveAndExit` | `Partials/Profile/Buttons/SaveExitCancel.html` |
| `actions.setToBottom` | `Partials/Profile/List/Contracts.html`, `Partials/Profile/List/EmailAddresses.html`, `Partials/Profile/List/PhoneNumbers.html`, `Partials/Profile/List/PhysicalAddresses.html`, `Partials/Profile/List/ProfileInformation.html` |
| `actions.setToTop` | `Partials/Profile/List/Contracts.html`, `Partials/Profile/List/EmailAddresses.html`, `Partials/Profile/List/PhoneNumbers.html`, `Partials/Profile/List/PhysicalAddresses.html`, `Partials/Profile/List/ProfileInformation.html` |
| `actions.show` | `Partials/Profile/List/EmailAddresses.html`, `Partials/Profile/List/PhoneNumbers.html`, `Partials/Profile/List/PhysicalAddresses.html` |
| `actions.sortDown` | `Partials/Profile/List/Contracts.html`, `Partials/Profile/List/EmailAddresses.html`, `Partials/Profile/List/PhoneNumbers.html`, `Partials/Profile/List/PhysicalAddresses.html`, `Partials/Profile/List/ProfileInformation.html` |
| `actions.sortUp` | `Partials/Profile/List/Contracts.html`, `Partials/Profile/List/EmailAddresses.html`, `Partials/Profile/List/PhoneNumbers.html`, `Partials/Profile/List/PhysicalAddresses.html`, `Partials/Profile/List/ProfileInformation.html` |
| `actions.translate` | `Templates/Profile/Edit.html` |
| `actions.view` | `Partials/Profile/List/Contracts.html`, `Partials/Profile/List/PhysicalAddresses.html`, `Partials/Profile/List/ProfileInformation.html`, `Templates/Profile/List.html` |
| `back` | `Layouts/ProfileEdit.html` |
| `contract` | `Templates/Contract/New.html` |
| `contract.<field>.label` | `Templates/Contract/Show.html` |
| `contract.data` | `Templates/Contract/Show.html` |
| `contract.emailAddress` | `Templates/EmailAddress/Edit.html`, `Templates/EmailAddress/New.html`, `Templates/EmailAddress/Show.html` |
| `contract.emailAddresses` | `Templates/Contract/Show.html` |
| `contract.phoneNumber` | `Templates/PhoneNumber/Edit.html`, `Templates/PhoneNumber/New.html`, `Templates/PhoneNumber/Show.html` |
| `contract.phoneNumbers` | `Templates/Contract/Show.html` |
| `contract.physicalAddress` | `Templates/PhysicalAddress/Edit.html`, `Templates/PhysicalAddress/New.html`, `Templates/PhysicalAddress/Show.html` |
| `contract.physicalAddresses` | `Templates/Contract/Show.html` |
| `emailAddress.<field>` | `Templates/EmailAddress/Show.html` |
| `emailAddress.email.label` | `Partials/Profile/List/EmailAddresses.html` |
| `emailAddress.type.label` | `Partials/Profile/List/EmailAddresses.html` |
| `form.error.<code>`, see [Messages of a rejected form](https://docs.typo3.org/permalink/fgtclb/academic-persons-edit:configuration-labels-validation@2.4) | `Partials/Profile/Forms/ErrorMessage.html` |
| `form.errors` | `Partials/Profile/Forms/Errors.html` |
| `list.actions` | `Partials/Profile/List/Contracts.html`, `Partials/Profile/List/EmailAddresses.html`, `Partials/Profile/List/PhoneNumbers.html`, `Partials/Profile/List/PhysicalAddresses.html`, `Partials/Profile/List/ProfileInformation.html`, `Templates/Profile/List.html` |
| `list.contract.position` | `Partials/Profile/List/Contracts.html` |
| `list.hidden.badge` | `Partials/Profile/List/EmailAddresses.html`, `Partials/Profile/List/PhoneNumbers.html`, `Partials/Profile/List/PhysicalAddresses.html` |
| `list.no<type>Found` | `Partials/Profile/List/ProfileInformation.html` |
| `list.noContractsFound` | `Partials/Profile/List/Contracts.html` |
| `list.noEmailAddressesFound` | `Partials/Profile/List/EmailAddresses.html` |
| `list.noPhoneNumbersFound` | `Partials/Profile/List/PhoneNumbers.html` |
| `list.noPhysicalAddressesFound` | `Partials/Profile/List/PhysicalAddresses.html` |
| `list.noProfilesFound` | `Templates/Profile/List.html` |
| `list.noTranslationFound` | `Templates/Profile/Edit.html` |
| `list.profile` | `Templates/Profile/List.html` |
| `list.profile.assigned` | `Templates/Profile/List.html` |
| `list.profileInformations.title` | `Partials/Profile/List/ProfileInformation.html` |
| `list.profileInformations.year` | `Partials/Profile/List/ProfileInformation.html` |
| `phoneNumber.<field>.label` | `Templates/PhoneNumber/Show.html` |
| `phoneNumber.phoneNumber.label` | `Partials/Profile/List/PhoneNumbers.html` |
| `phoneNumber.type.label` | `Partials/Profile/List/PhoneNumbers.html` |
| `physicalAddress.<field>.label` | `Templates/PhysicalAddress/Show.html` |
| `physicalAddress.city.label` | `Partials/Profile/List/PhysicalAddresses.html` |
| `physicalAddress.country.label` | `Partials/Profile/List/PhysicalAddresses.html` |
| `physicalAddress.street.label` | `Partials/Profile/List/PhysicalAddresses.html` |
| `profile.<textarea>.label` | `Partials/Profile/Show/Personal.html` |
| `profile.<type>` | `Templates/Profile/Show.html` |
| `profile.contracts` | `Templates/Profile/Show.html` |
| `profile.gender.label` | `Partials/Profile/Show/Personal.html` |
| `profile.image` | `Templates/Profile/EditImage.html`, `Templates/Profile/Show.html` |
| `profile.name.label` | `Partials/Profile/Show/Personal.html` |
| `profile.personal` | `Partials/Profile/Show/Personal.html` |
| `profile.profileInformations.<type>` | `Templates/ProfileInformation/Edit.html`, `Templates/ProfileInformation/New.html`, `Templates/ProfileInformation/Show.html` |
| `profile.publicationsLink.label` | `Partials/Profile/Show/Personal.html` |
| `profile.skipSync.description` | `Templates/Profile/Show.html` |
| `profile.website.label` | `Partials/Profile/Show/Personal.html` |
| `profileInformation.<field>.label` | `Templates/ProfileInformation/Show.html` |
| The flash messages of the editor, keyed by the action that shows them, for example `profile.update.success` | The messages after a profile or one of its records is saved or deleted |
| The item labels of the select fields in TCA, full references into a language file of academic_persons: the override is keyed by the id of the label in that file | The options of the select fields of the editor forms |
| `detail.since`, `detail.till` of `EXT:academic_persons/Resources/Private/Language/locallang.xlf`, read with the extension name of academic_persons: from `plugin.tx_academicpersons._LOCAL_LANG` only, shared with the profile detail | `Partials/Profile/List/ProfileInformation.html` |
| The messages of a rejected image upload, `upload.error.<code>` and `validation.error.1471708998` of `EXT:academic_base/Resources/Private/Language/locallang.xlf`: no `_LOCAL_LANG` reaches them, a language file override does | `Templates/Profile/EditImage.html` |

## Messages of a rejected form {#configuration-labels-validation}

A form the editor rejects is shown again with the values that were entered, a
note above it, `form.errors`, and a message at every field that was
rejected. The message is the first label found of these:

1.  `<formObject>.<field>.error.<code>`, for one field of one form, for
    example `contractFormData.validTo.error.1307719788`. The form objects
    are `addressFormData`, `contractFormData`,
    `emailAddressFormData`, `phoneNumberFormData`,
    `profileFormData` and `profileInformationFormData`.
1.  `form.error.<code>`, for every field, for example
    `form.error.1221560718` for a required field that was left empty.
1.  The message of the TYPO3 validator that rejected the value.

`<code>` is the code of the validation error. The extension ships a label
for the codes its forms produce: 1221560718 and 1221560910 for a required field
left empty, 1221559976 for an invalid email address, 1332933658 for a year that
is not a number and 1307719788 for an invalid date.

A `form.error.<code>` label is formatted with the arguments of the error,
the way `sprintf()` formats a string, whenever the error carries any. The
two conversion errors do: 1332933658 passes the entered value, 1307719788 the
entered value and the expected date format. In such a label a literal percent
sign is written `%%`, and `%1$s` inserts the first argument. A single
`%` there makes the rendering fail. A
`<formObject>.<field>.error.<code>` label is shown as it is written, never
formatted.
