54 $site = GeneralUtility::makeInstance(SiteMatcher::class)->matchByPageId((
int)$pageId);
57 if (!isset($siteLanguages[0])) {
58 $siteLanguages[0] = $site->getDefaultLanguage();
59 ksort($siteLanguages);
63 foreach ($siteLanguages as $id => $siteLanguage) {
66 'title' => $siteLanguage->getTitle(),
67 'ISOcode' => $siteLanguage->getTwoLetterIsoCode(),
68 'flagIcon' => $siteLanguage->getFlagIdentifier(),
87 'flagIcon' =>
'flags-multiple',
92 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(
'sys_language');
93 $languageRecords = $queryBuilder
95 ->from(
'sys_language')
99 foreach ($languageRecords as $languageRecord) {
100 $languages[$languageRecord[
'uid']] = $languageRecord;
104 if ($staticLangRow[
'lg_iso_2']) {
105 $languages[$languageRecord[
'uid']][
'ISOcode'] = $staticLangRow[
'lg_iso_2'];
108 if ($languageRecord[
'flag'] !==
'') {
109 $languages[$languageRecord[
'uid']][
'flagIcon'] =
'flags-' . $languageRecord[
'flag'];
128 public function translationInfo($table, $uid, $languageUid = 0, array $row =
null, $selFieldList =
'')
130 if (!
$GLOBALS[
'TCA'][$table] || !$uid) {
131 return 'No table "' . $table .
'" or no UID value';
136 if (!is_array($row)) {
137 return 'Record "' . $table .
'_' . $uid .
'" was not found';
140 return 'Translation is not supported for this table!';
142 if ($row[
$GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField']] > 0) {
143 return 'Record "' . $table .
'_' . $uid .
'" seems to be a translation already (has a language value "' . $row[
$GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField']] .
'", relation to record "' . $row[
$GLOBALS[
'TCA'][$table][
'ctrl'][
'transOrigPointerField']] .
'")';
145 if ($row[
$GLOBALS[
'TCA'][$table][
'ctrl'][
'transOrigPointerField']] != 0) {
146 return 'Record "' . $table .
'_' . $uid .
'" seems to be a translation already (has a relation to record "' . $row[
$GLOBALS[
'TCA'][$table][
'ctrl'][
'transOrigPointerField']] .
'")';
149 if (!$selFieldList) {
150 $selFieldList =
'uid,' .
$GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField'];
152 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($table);
153 $queryBuilder->getRestrictions()
155 ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
156 ->add(GeneralUtility::makeInstance(BackendWorkspaceRestriction::class));
158 ->select(...GeneralUtility::trimExplode(
',', $selFieldList))
161 $queryBuilder->expr()->eq(
162 $GLOBALS[
'TCA'][$table][
'ctrl'][
'transOrigPointerField'],
163 $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)
165 $queryBuilder->expr()->eq(
167 $queryBuilder->createNamedParameter(
174 $queryBuilder->andWhere(
175 $queryBuilder->expr()->gt(
176 $GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField'],
177 $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
183 $queryBuilder->expr()->eq(
184 $GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField'],
185 $queryBuilder->createNamedParameter($languageUid, \PDO::PARAM_INT)
189 $translationRecords = $queryBuilder
194 $translationsErrors = [];
195 foreach ($translationRecords as $translationRecord) {
196 if (!isset($translations[$translationRecord[
$GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField']]])) {
197 $translations[$translationRecord[
$GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField']]] = $translationRecord;
199 $translationsErrors[$translationRecord[
$GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField']]][] = $translationRecord;
205 'CType' => $row[
'CType'],
206 'sys_language_uid' => $row[
$GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField']],
207 'translations' => $translations,
208 'excessive_translations' => $translationsErrors
221 trigger_error(
'TranslationConfigurationProvider->getTranslationTable() will be removed in TYPO3 v10.0, as the translation table is always the same as the original table.', E_USER_DEPRECATED);
234 trigger_error(
'TranslationConfigurationProvider->isTranslationInOwnTable() will be removed in TYPO3 v10.0, as the translation table is always the same as the original table.', E_USER_DEPRECATED);
235 return $GLOBALS[
'TCA'][$table][
'ctrl'][
'languageField'] &&
$GLOBALS[
'TCA'][$table][
'ctrl'][
'transOrigPointerField'];
249 trigger_error(
'TranslationConfigurationProvider->foreignTranslationTable() will be removed in TYPO3 v10.0, as the translation table is always the same as the original table.', E_USER_DEPRECATED);
259 if (strlen($modSharedTSconfig[
'defaultLanguageFlag'])) {
260 $defaultLanguageFlag =
'flags-' . $modSharedTSconfig[
'defaultLanguageFlag'];
262 $defaultLanguageFlag =
'empty-empty';
264 return $defaultLanguageFlag;
273 if (strlen($modSharedTSconfig[
'defaultLanguageLabel'])) {
274 $defaultLanguageLabel = $modSharedTSconfig[
'defaultLanguageLabel'] .
' (' . $this->
getLanguageService()->
sL(
'LLL:EXT:core/Resources/Private/Language/locallang_mod_web_list.xlf:defaultLanguage') .
')';
276 $defaultLanguageLabel = $this->
getLanguageService()->
sL(
'LLL:EXT:core/Resources/Private/Language/locallang_mod_web_list.xlf:defaultLanguage');
278 return $defaultLanguageLabel;