Bug #65859

Support l10n_mode in extbase

Added by Peter Niederlag about 4 years ago. Updated 6 months ago.

Status:
Needs Feedback
Priority:
Must have
Assignee:
-
Category:
Extbase + l10n
Target version:
-
Start date:
2015-03-20
Due date:
% Done:

0%

TYPO3 Version:
6.2
PHP Version:
Tags:
Complexity:
hard
Is Regression:
No
Sprint Focus:

Description

Intro

Currently extbase lacks support for l10n_mode.

See #62921 for a lengthy discussion of the background. From my point of view support for l10n_mode must explicitly be enabled/added in extbase, that's why I duplicated #62921 here.

Use Case

As Developer I want to be able to assign a relation on a record in the default translation that must not be changed in the translation of the record.
When I set l10n_mode=exclude in $TCA
When I use the \TYPO3\CMS\Extbase\Persistence\QueryInterface to lookup records by a category
Then I expect to find translated records in the Frontend

//$TCA
'faculty' => array(
            'exclude' => 0,
            'l10n_mode' => 'exclude',
            'l10n_display' => 'hideDiff,defaultAsReadonly',
            'label' => 'LLL:EXT:luhjobs/Resources/Private/Language/locallang_db.xlf:tx_luhjobs_domain_model_vacancy.faculty',
            'config' => array(
                'type' => 'select',
                'foreign_table' => 'tx_luhjobs_domain_model_faculty',
                'foreign_table_where' => 'AND tx_luhjobs_domain_model_faculty.sys_language_uid IN (-1,0)',
                'items' => array(
                    array('',''),
                ),
                'minitems' => 1,
                'maxitems' => 1,
            ),
        ),
// QueryInterface
$constraints[] = $query->equals('faculty', $uid);
// resulting SQL(relevant parts only) in case of Frontend with ?L=1
tx_luhjobs_domain_model_vacancy.type = '19' AND tx_luhjobs_domain_model_vacancy.intern = 0
)
AND
(
    tx_luhjobs_domain_model_vacancy.sys_language_uid IN (1,-1)
    OR
    (
        tx_luhjobs_domain_model_vacancy.sys_language_uid=0 AND tx_luhjobs_domain_model_vacancy.uid NOT IN
            (
                SELECT tx_luhjobs_domain_model_vacancy.l10n_parent FROM tx_luhjobs_domain_model_vacancy WHERE tx_luhjobs_domain_model_vacancy.l10n_parent>0 AND tx_luhjobs_domain_model_vacancy.sys_language_uid=1 AND tx_luhjobs_domain_model_vacancy.deleted=0
            )
    )
)

This does miss the translated records as they have faculty=0 due to the l10n_mode=exclude setting in $TCA


Related issues

Related to TYPO3 Core - Bug #62921: l10n_mode with relations does not work in Extbase Accepted 2014-11-13

History

#1 Updated by Peter Niederlag about 4 years ago

  • Description updated (diff)

#2 Updated by Peter Niederlag about 4 years ago

  • Description updated (diff)

#3 Updated by Riccardo De Contardi over 3 years ago

  • Category set to Extbase

#4 Updated by Riccardo De Contardi over 1 year ago

  • Category changed from Extbase to Extbase + l10n

#5 Updated by Benni Mack 9 months ago

  • Status changed from New to Needs Feedback

Peter, I guess this is now fixed with TYPO3 v8, can you verify this?

#6 Updated by Johannes Rebhan 7 months ago

@Benni

Sadly it's not fixed with v8. I've run into the same problem where I have an object which has categories in the base language, then I translate said object with extbase, assign the original object and save it.

The categories field is set as l10n_mode = exclude, but it doesn't work when using core extbase. It seems to work in the backend, because when I edit the translated object (no categories selection shown) and save it - without changing anything - the values are copied. When I do the same in extbase by loading the translated object through a querybuilder query (can't get it any other way in the backend/commandcontrollers), which is then mapped to the object by using DataMapper, it doesn't apply those TCA settings after I've stored with through a repository update().

#7 Updated by Tymoteusz Motylewski 6 months ago

So querying works but data is not propagated when saving a record through extbase?
This is because extbase doesnt use datahandler for storing values.

Also available in: Atom PDF