---
title: "Important: The job table records its translation source"
manual: "Academic Jobs"
version: "main"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-jobs:important-ace-463-academic-jobs@main"
source: "Changelog/2.4/Important-JobTableRecordsItsTranslationSource.rst"
rendered: "2026-10-12T10:12:12+00:00"
---

# Important: The job table records its translation source {#important-ace-463-academic-jobs}

## Description {#description}

`tx_academicjobs_domain_model_job` declared a `languageField` and a
`transOrigPointerField`, and no `translationSource`.

The two answer different questions. `l10n_parent` says which record a
translation belongs to. `l10n_source` says which record it was written
*from*. They hold the same value when a translation was made from the default
language and different ones when it was made from another translation, and
without the second field that information is not recorded at all.

The `ctrl` section of the table now carries:

```php
'translationSource' => 'l10n_source',
```

## Impact {#impact}

TYPO3 adds an `l10n_source` column with an index to the table on the next
database comparison, as an unsigned integer that defaults to `0`. The
column is derived from the TCA, so there is nothing to add to
[`ext_tables.sql`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/ExtTablesSql.html#file-extension-ext-tables-sql).

The backend records the source of a job translation made from another
translation, and the localization state selector of a translated field can
refer to the value of that source.

## Affected Installations {#affected-installations}

All installations of this extension. Apply the database comparison in
**Admin Tools > Maintenance > Analyze Database Structure**, or with
`vendor/bin/typo3 extension:setup`.

No data migration is needed, and none is offered. Existing rows get the column
default `0`:

-   On a **default language record** that is the correct value. Such a record
    has no source.
-   On a **translation that predates this change** it means "not recorded". The
    backend then treats the translation as made from the default language, as
    it did before.

Translations created from now on record their source. A record whose value
matters can be translated again, or the column set by hand. Neither is required
for the extension to work.
