Zum Inhalt springen

Standardsprache nicht in der URL

Erstellt am 25. Januar 2008 · 5 Antworten · letzte Antwort am 17. Juni 2008

Tags: RealURL, Frage

Backdraft007 ·

Hallo,

folgende Extensions im Einsatz:
- rlmp_language_detection
- sr_language_menu
- realurl

Englisch = 0 und Standard
Deutsch = 4 derzeit deaktiviert.

Die Extensions an sich funktionieren einwandfrei. Jetzt habe ich aber folgendes Problem:
Wenn im Browser nur eine Sprache angegeben ist und diese "de" ist, wird nicht auf "www.domain.tld/en/home" geleitet, sondern nur auf "www.domain.tld/home". Klicke ich Menü auf einen Unterpunkt, erkennt realurl diesen nicht.

Sind im Browser mehrere Sprache eingestellt, funktioniert alles wunderbar.

Wie kann ich realurl sagen, wenn nichts gesetzt ist, "en" an die URL zu hängen?

Hier das TS:

config.linkVars = L
config.sys_language_uid = 0
config.sys_language_mode = content_fallback
config.language = en
config.locale_all = en_EN

[globalVar = GP:L = 0]
   config.sys_language_uid = 0
   config.language = en
   config.locale_all = en_EN
   temp.BREADCRUMB.wrap = You are here: 
[global]
[globalVar = GP:L = 4]
   config.sys_language_uid = 4
   config.language = de
   config.locale_all = de_DE
   temp.BREADCRUMB.wrap = Sie sind hier: 
[global]

Und hier die htaccess:

RewriteEngine On
RewriteRule ^typo3$ - [L]
RewriteRule ^typo3/.*$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php
Backdraft007 ·

Sorry,

irgendwie vergessen.

<?php

$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tstemplate.php']['linkData-PostProc']['tx_realurl'] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->encodeSpURL';
$TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods-PostProc']['tx_realurl'] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->decodeSpURL';
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearPageCacheEval']['tx_realurl'] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->clearPageCacheMgm';

$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_urldecodecache'] = 'tx_realurl_urldecodecache';
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_urlencodecache'] = 'tx_realurl_urlencodecache';
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_pathcache'] = 'tx_realurl_pathcache';

$TYPO3_CONF_VARS['FE'] ['addRootLineFields'] .=',tx_realurl_pathsegment,alias,nav_title,title';
$TYPO3_CONF_VARS['EXTCONF'] ['realurl'] ['_DEFAULT'] = array(
	'init' => array(
		'enableCHashCache' => 1,
		'enableUrlDecodeCache' => 1,
		'enableUrlEncodeHash' => 1,
		//'postVarSet_failureMode' => 'redirect_goodUpperDir',
	),
	'rewrite' => array(
	),
	'preVars' => array(
		array(
			'GETvar' => 'L',
			'valueMap' => array(
				'en' => '0',
				'de' => '4',
				'valueDefault' => 'en',
			),
		),
	),
	'pagePath' => array(
		'type' => 'user',
		'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
		'spaceCharacter' => '-',
		'languageGetVar' => 'L',
		'expireDays' => 3,
		'rootpage_id' => '1'
	),
	'fileName' => array (
		'defaultToHTMLsuffixOnPrev' => 1,
		'index' => array(
			'page.html' => array(
				'keyValues' => array (
					'type' => 1,
				),
			),
		),
	),
	'fixedPostVarSets' => array(
	),
	'postVarSets' => array(
		'_DEFAULT' => array(
			//archive
			'user' => array(
	                    array(
	                        'GETvar' => 'tx_srfeuserregister_pi1[regHash]'
	                    ),
			),
			'period' => array (
				array (
					'condPrevValue' => -1,
					'GETvar' => 'tx_ttnews[pS]',
					//'valueMap => array()
					),
					array (
						'GETvar' => 'tx_ttnews[pL]',
						//'valueMap => array()
					),
					array (
						'GETvar' => 'tx_ttnews[arc]',
						'valueMap' => array(
							'non-archived' => -1,
						),
					),
				),
				'browse' => array (
					array (
						'GETvar' => 'tx_ttnews[pointer]',
					),
				),
				'select' => array (
					array (
						'GETvar' => 'tx_ttnews[cat]',
						'lookUpTable' => array (
							'table' => 'tt_news_cat',
							'id_field' => 'uid',
							'alias_field' => 'title',
							'addWhereClause'=> 'AND NOT deleted',
							'useUniqueCache'=> 1,
							'useUniqueCache_conf' => array (
								'strtolower' => 1,
								'spaceCharacter' => '-',
							),
						),
					),
				),
				'article' => array(
					array (
						'GETvar' => 'tx_ttnews[backPid]',
						// 'valueMap => array(
						// ),
					),
					array (
						'GETvar' => 'tx_ttnews[tt_news]',
						'lookUpTable' => array (
							'table' => 'tt_news',
							'id_field' => 'uid',
							'alias_field' => 'title',
							'maxLength' => 12,
							'addWhereClause'=> 'AND NOT deleted',
							'useUniqueCache'=> 1,
							'useUniqueCache_conf' => array (
								'strtolower' => 1,
								'spaceCharacter' => '-',
							),
						),
					),
				),
			),
		),
	);
?>
Michaelh74 ·

It seems that I am having the same problem.

Default language is en and second one is de.

When I call site url I get all links on that page except my language menu with no "en/" in url which prevents any link from working. As soon as I click once on the language menu for de or en all other links do work.

So I guess the parameter "valueDefault => 'en'" is not working right.

Well a workaround might be a htaccess redirect to mysite/en/home.html, but that should not be necessary I guess.

Michael

Michaelh74 ·

Ok, gleich nach dem Posting hab ich die Lösung gefunden. Ist genau das gleich Problem wie bei mir. Der Fehler liegt in der realurl_conf.php

Diesen Part einfach so korrigieren:

        'preVars' => array(
                array(
                        'GETvar' => 'L',
                        'valueMap' => array(
                                'en' => '0',
                                'de' => '4',
                        ),
                        'valueDefault' => 'en',
                ),
        ),

Der Paramter "valueDefault" muß aus dem Array valueMap raus und somit außerhalb stehen.

Gruß
Michael

T3000 ·

Komisch, ich habe das außerhalb und es will trotzdem von anfang an nicht funktionieren 😢
Hat jemand noch eine Idee? Kann es evt. an der standard HTACCESS Datei von TYPO3 liegen? An der habe ich nämlich bisher noch nichts verändert. Bis auf das hier geschliderte Problem funktioniert auch alles super (Ich hätte eben nur gern die default-Sprache auch in der URL...)

Edit: TYPO3 v4.2.0 auf einem Apache, falls das weiterhilft.

array(
	'GETvar' => 'L',
	'valueMap' => array(
		'deutsch' => '0',
		'english' => '1',
	),
	'valueDefault' => 'deutsch',
	'noMatch' => 'bypass',
),