---
title: "Mehrere Sprachen in eigener Extension"
url: "https://www.typo3.net/d/22855-mehrere-sprachen-in-eigener-extension"
source: "typo3.net"
tags: ["TYPO3","Mehrsprachigkeit","Frage","TCA"]
created: "2005-03-23"
last_reply: "2007-02-26"
replies: 4
solved: false
page: 1
pages: 1
lang: "de"
---

# Mehrere Sprachen in eigener Extension

TYPO3 › Mehrsprachigkeit · 4 Antworten · gestartet 2005-03-23

## Eröffnungsbeitrag

**ops** · 2005-03-23 · [Beitrag #1](https://www.typo3.net/d/22855-mehrere-sprachen-in-eigener-extension/1)

Hallo,

habe mir eine Extension geschrieben, die eine eigene
Tabelle benutzt (FAQ), dort sind jeweils in einem
Datensatz Frage (String) und Antwort (Text/RTE)
gespeichert.

Frage: wie kann ich am besten jetzt Mehrsprachigkeit
einbauen? Einfach für jede Sprache extra Tabellenfelder
anlegen, oder geht das irgendwie mit eingebauten
Typo3-Funktionen, evtl mit dem Feld sys_language_uid
in meiner Tabell drin?

Oder kennt jemand ne (nicht zu komplizierte) Extension,
die sowas umsetzt?

Grüße,
Patrick

## Antworten

### [#2](https://www.typo3.net/d/22855-mehrere-sprachen-in-eigener-extension/2) · ops · 2005-03-24

OK, hab das Problem dann mal wieder selbst gelöst ;)

Meine Extension läuft jetzt, ich kann im Backend die
Tabelle bearbeiten, Localizations anlegen und der Content
wird auch schön nach ausgewählter Sprache angezeigt :)

Hab mir die notwendigen Schritte mal soweit notiert,
denke das interessiert bestimmt noch mehr Leute hier...

```plaintext
Multilanguage Extension Howto
-----------------------------


1) Extension im Kickstarter anlegen, benötigte Sprachen dort angeben


2) Einfügen in ext_tables.sql:

   sys_language_uid int(11) DEFAULT '0' NOT NULL,
   l18n_parent int(11) DEFAULT '0' NOT NULL,
   l18n_diffsource mediumblob NOT NULL,
  

3) Einfügen in ext_tables.php: $TCA["tx_foo_bar"]["ctrl"])   

   'prependAtCopy' => 'LLL:EXT:lang/locallang_general.php:LGL.prependAtCopy',
   'copyAfterDuplFields' => 'sys_language_uid',
   'useColumnsForDefaultValues' => 'sys_language_uid',
   'transOrigPointerField' => 'l18n_parent',
   'transOrigDiffSourceField' => 'l18n_diffsource',
   'languageField' => 'sys_language_uid',


4) Einfügen in tca.php: $TCA["tx_foo_bar"]["columns"]

   - Für jede Spalte einfügen:

   'l10n_mode' => 'prefixLangTitle',  (bzw. 'mergeIfNotBlank' / 'exclude')

   - Neue Spalten sys_language_uid, l18n_parent, l18n_diffsource:

   'sys_language_uid' => Array(
    'exclude' => 1,
    'label' => 'LLL:EXT:lang/locallang_general.php:LGL.language',
    'config' => Array(
     'type' => 'select',
     'foreign_table' => 'sys_language',
     'foreign_table_where' => 'ORDER BY sys_language.title',
     'items' => Array(
      Array('LLL:EXT:lang/locallang_general.php:LGL.allLanguages',-1),
      Array('LLL:EXT:lang/locallang_general.php:LGL.default_value',0)
     )
    )
   ),
   'l18n_parent' => Array(
    'displayCond' => 'FIELD:sys_language_uid:>:0',
    'exclude' => 1,
    'label' => 'LLL:EXT:lang/locallang_general.php:LGL.l18n_parent',
    'config' => Array(
     'type' => 'select',
     'items' => Array(
      Array('', 0),
     ),
     'foreign_table' => 'tt_news',
     'foreign_table_where' => 'AND tx_foo_bar.uid=###REC_FIELD_l18n_parent### AND tx_foo_bar.sys_language_uid IN (-1,0)',
     'wizards' => Array(
      '_PADDING' => 2,
      '_VERTICAL' => 1, 
      'edit' => Array(
       'type' => 'popup',
       'title' => 'edit default language version of this record ',
       'script' => 'wizard_edit.php',
       'popup_onlyOpenIfSelected' => 1,
       'icon' => 'edit2.gif',
       'JSopenParams' => 'height=600,width=700,status=0,menubar=0,scrollbars=1,resizable=1',
      )
     )
    )
   ),
   'l18n_diffsource' => Array(
    'config' => Array(
     'type'=>'passthrough'
    )
   ),


5) Extension laden, am besten eigenen Sysfolder für Extension anlegen, darin alternative Seitensprachen anlegen

   Im Backend kann man jetzt bereits die Tabelle bearbeiten, samt Localizations


6) Bei Select-Abfragen im PHP-Code einfügen:

   '... AND sys_language_uid='.$GLOBALS['TSFE']->sys_language_content'
```

noch zu klären wäre: wann/wie sind Overlays zu benutzen?

```php
  if ($GLOBALS['TSFE']->sys_language_content) {
   $OLmode = ($this->sys_language_mode == 'strict'?'hideNonTranslated':'');
   $row = $GLOBALS['TSFE']->sys_page->getRecordOverlay('tx_foo', $row, $GLOBALS['TSFE']->sys_language_content, $OLmode);
  }
```

ich versteh noch nicht, warum getRecordOverlay nötig
ist, man kann doch direkt per sys_language_uid den
entsprechenden Eintrag auslesen... vielleicht hat ja
jemand ne Idee?

Grüße,
Patrick

### [#3](https://www.typo3.net/d/22855-mehrere-sprachen-in-eigener-extension/3) · Arkala · 2005-05-04

Hallo ops,

erst mal vielen Dank für die Mühe die Du Dir gemacht hast, um die Vorgehensweise zu beschreiben.

Ich habe mich auch bemüht, nach bestem Wissen und Gewissen, die einzelnen Punkte umzusetzen. Aber leider kann ich immer noch keine Sprache auswählen. Wo soll man denn die Sprache auswählen können? Bin leider etwas ratlos.

Ich verwende Typo3.6.0. Sollte damit doch funktionieren, oder?

Gruss,
    Arkala

### [#4](https://www.typo3.net/d/22855-mehrere-sprachen-in-eigener-extension/4) · fez · 2005-07-01

Ich weiss ned, ob es an typo3 3.6.0 liegt: Bei mir 3.7.1 hat es aber auch end funktioniert!
Und ich hab den Fehler in der tca.php gefunden

im tutorial hier steht, man sollte

```php
   'l18n_parent' => Array(
    'displayCond' => 'FIELD:sys_language_uid:>:0',
    'exclude' => 1,
    'label' => 'LLL:EXT:lang/locallang_general.php:LGL.l18n_parent',
    'config' => Array(
     'type' => 'select',
     'items' => Array(
      Array('', 0),
     ),
     'foreign_table' => 'tt_news',
     'foreign_table_where' => 'AND tx_foo_bar.uid=###REC_FIELD_l18n_parent### AND tx_foo_bar.sys_language_uid IN (-1,0)',
     'wizards' => Array(
      '_PADDING' => 2,
      '_VERTICAL' => 1,
      'edit' => Array(
       'type' => 'popup',
       'title' => 'edit default language version of this record ',
       'script' => 'wizard_edit.php',
       'popup_onlyOpenIfSelected' => 1,
       'icon' => 'edit2.gif',
       'JSopenParams' => 'height=600,width=700,status=0,menubar=0,scrollbars=1,resizable=1',
      )
     )
    )
   ),
```

einfügen, was aber nich tut!
Wenn man statt dessen

```php
'l18n_parent' => Array(
			'displayCond' => 'FIELD:sys_language_uid:>:0',
			'exclude' => 1,
			'label' => 'LLL:EXT:lang/locallang_general.php:LGL.l18n_parent',
			'config' => Array(
				'type' => 'select',
				'items' => Array(
					Array('', 0),
				),
				'foreign_table' => 'tt_news',
				'foreign_table_where' => 'AND tt_news.uid=###REC_FIELD_l18n_parent### AND tt_news.sys_language_uid IN (-1,0)',
			)				
		),
```

verwendet, dann funktioniert das wunderbar!!!

Natürlich muss man noch tt_news durch seine eigene Tabelle ersetzen :-)

FEZ

### [#5](https://www.typo3.net/d/22855-mehrere-sprachen-in-eigener-extension/5) · Slurp · 2007-02-26

Hallo.
Auch ich bedanke mich für diese mini HowTo.
Jedoch verstehe ich als typo3 noob nur die 1/2.
Ich habe es schon hinbekommen, das bei mir lokal die Mehrsprachigkeit funktioniert. Ich areite auch gerade an einer Extension, die auch
Mehrsprachigkeit kompatibel sein sollte.

Hier meine Fragen:
Zu Schritt 1)
Ist keine Frage, nur ein Hinweis.
Diese Sprach-Einstellungen sind nur für die Feld-bezeichnungen.
Da ich aber nicht weiß, welche Sprachen im T3-BE eingerichtet sind,
bzw ich nicht jede Sprache sprechen kann, lege ich hier nur die Feldbezeichnungen meiner Standard-Sprache an. Die Feldbezeichnungen werden dann immer so dargestellt.

Zu Schritt 2)

```html
#
Einfügen in ext_tables.sql:
sys_language_uid int(11) DEFAULT '0' NOT NULL,
l18n_parent int(11) DEFAULT '0' NOT NULL,
l18n_diffsource mediumblob NOT NULL,
```

Wo muss ich das genau einfügen?

Danke für jede Hilfe.
Slurp.

---

Quelle: „Mehrere Sprachen in eigener Extension“, typo3.net, https://www.typo3.net/d/22855-mehrere-sprachen-in-eigener-extension
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
