Labels 

The labels this extension shows in the frontend come from EXT:academic_jobs/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_academicjobs._LOCAL_LANG for every content element of the extension, or under plugin.tx_academicjobs_<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
plugin.tx_academicjobs._LOCAL_LANG {
  default.jobs.back = All vacancies
  de.jobs.back = Alle Stellen
}

# Only in one content element:
plugin.tx_academicjobs_detail._LOCAL_LANG.default.jobs.back = All vacancies
Copied!

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
Job list ( academicjobs_list ) plugin.tx_academicjobs_list._LOCAL_LANG
Job detail ( academicjobs_detail ) plugin.tx_academicjobs_detail._LOCAL_LANG
New job form ( academicjobs_newjobform ) plugin.tx_academicjobs_newjobform._LOCAL_LANG

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_jobs instead, see the changelog.

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. The form partials below Partials/Job/Forms/ render the shared form partials of EXT:academic_base, which read their keys from this extension.

Key Shown by
create.<field>.error.<code> Partials/Job/Forms/FieldWrapper.html, see The messages of a rejected field
create.<field>.label Partials/Job/Forms/FieldWrapper.html
create.error.<code> Partials/Job/Forms/FieldWrapper.html, see The messages of a rejected field
create.job.employmentType.none Partials/Job/Properties/Job.html
create.job.incorrectValues Partials/Job/Forms/Errors.html
create.job.type.none Partials/Job/Properties/Job.html
create.required Partials/Job/Forms/FieldWrapper.html, the title of the mark of a required field
edit.<field>.placeholder Partials/Job/Forms/Textarea.html, Partials/Job/Forms/Textfield.html
jobs.<property> Partials/Job/Information.html, Partials/Job/Item.html
jobs.<property>.<value> Partials/Job/Information.html, Partials/Job/Item.html
jobs.back Templates/Job/Show.html
jobs.contact Partials/Job/Contact.html
jobs.linkText Partials/Job/Information.html, Partials/Job/Item.html
jobs.submit Templates/Job/New.html
tx_academicjobs.fe.alert.<alert>.title , tx_academicjobs.fe.alert.<alert>.body The messages after a job is saved
tx_academicjobs_domain_model_job.jobtype.<type> , tx_academicjobs_domain_model_job.employmenttype.<type> The options of the job type and employment type selects of the form; the labels live in locallang_be.xlf, the override is keyed by their id

The messages of a rejected field 

A field of the new job form that was rejected on submit shows a message below it. The message of an error is the first of these that exists:

  1. The label for the field and the error code, for example create.job.contactEmail.error.1221559976 .
  2. The label for the error code, for example create.error.1221559976 . The extension ships one for each error the shipped validation settings produce: a required field left empty, an invalid email address, an invalid URL and a date that cannot be read.
  3. The message of the validator or of the conversion of the value.

Each of them is given the arguments of the error, so a label can name the rejected value with %s, for example the text that could not be read as a date: create.job.employmentStartDate.error.1307719788 with "%s" is no date.