Uwaga! Od sierpnia 2017 forum jest w trybie tylko do odczytu.

Dlaczego? Dlatego, że społeczność TYPO3 przeniosła się na slack'a i stackoverflow:
  • Przeczytaj artykuł wprowadzający do slacka, w którym dowiesz gdzie i jak się zarejestrować.
  • Jeżeli masz pytania odnośnie Polskiej Społeczności TYPO3 zapraszamy na kanał slack'a #community-pl. Rozmawiamy tam w języku polskim.
  • Pytania dotyczące samego TYPO3 zadawaj po angielsku na stackoverflow oznaczając je tagiem "typo3". Następnie posługując się linkiem do tego pytania postaraj się zachęcić ludzi z kanału slack'a #typo3-cms lub bardziej pasujących kanałów tematycznych, żeby na nie odpowiedzieli.
  • Możesz też oczywiście zadawać pytania na slacku bez zakładania wątków na stackoverflow, ale wówczas wiedza ta nie jest indeksowana przez googla i część osób nie będzie chciała Ci z tego powodu pomagać.
  • Dla części osób dzielących się wiedzą ważne jest też budowanie reputacji na stackoverflow. Jest to kolejny powód dla którego powinieneś zadawać pytania na stackoverflow by zwiększyć swoje szanse na znalezienie odpowiedzi. Pamiętaj, żeby oceniać odpowiedzi!
Temat z wieloma odpowiedziami

Złe tłumaczenie menu dla strony głównej


Autor Wiadomość
Napisane: 28.11.2011 [13:42]
Imp
Twórca tematu
zarejestrowany: 13.04.2011
Posty: 170
Mam problem z poprawnym tłumaczeniem strony głównej.

Strona posiada język polski jako domyślny oraz angielski jako drugi język.
Zainstalowane i włączone RealURL.

Na stronie głównej, podczas zmiany języka na angielski, do adresu jest dopisywane en/, podmieniane są tłumaczenia dla elementów, nie jest natomiast tłumaczone menu, nadal wyświetlają się polskie tytuły stron.
Menu językowe również nie wskazuję poprawnego języka, nada pokazuje że jesteśmy na stronie w wersji PL, mimo przełączenia na język angielski.

Na dowolnej innej podstronie wszystko działa prawidłowo, tzn menu wyboru języka wskazuje poprawny aktualny język, treści są zamieniane, tłumaczone jest menu, adres poprawny. Problem dotyczy tylko strony głównej, która jest rootem.

Tu można sprawdzić to co opisałem wyżej: LINK

Przy wyłączonym RealURL sytuacja wygląda tak samo.

Czy ktoś spotkał podobne zachowanie?
Pozdrawiam
IMP

[Ten temat był edytowany 1 razy. Ostatnio 28.11.2011 o 13:44.]
Napisane: 30.11.2011 [13:42]
tomkraw1
admin
zarejestrowany: 14.07.2008
Posty: 530
Czy strona główna ma dodany język alternatywny?
Czy realurl zna ID obu języków?


pozdrawiam
Tomek
Napisane: 30.11.2011 [15:57]
Imp
Twórca tematu
zarejestrowany: 13.04.2011
Posty: 170
Tak jest. Strona główna ma dodany język alternatywny.

W TS strony głównej jest:
TYPOSCRIPT
mod.SHARED.defaultLanguageLabel = Polski
mod.SHARED.defaultLanguageFlag = pl


Setup głownego szablonu:
TYPOSCRIPT
config {
  sys_language_uid = 0
  sys_language_mode = content_fallback
  sys_language_overlay = hideNonTranslated
  linkVars = L(0-1)
  uniqueLinkVars = 1
  locale_all = pl_PL
  language = pl
}
# First localization - English
[globalVar = GP:L = 1]
config {
  sys_language_uid = 1
  locale_all = en_GB
  language = en
}
[global]


Menu zmiany wersji językowej:
TYPOSCRIPT
lib.field_langmenu = HMENU
lib.field_langmenu {
  special = language
  special.value = 0,1
  special.normalWhenNoLanguage = 0
  1 = TMENU
  1 {
    noBlur = 1
    NO = 1
    NO.allWrap = <span>|</span>
    NO.stdWrap.setCurrent = <span class="lang_left">PL</span> || EN
    NO.stdWrap.current = 1
    ACT < .NO
    ACT.allWrap = <b>|</b>
    ACT.doNotLinkIt = 1
    USERDEF1 < .NO
    USERDEF1.doNotLinkIt = 1
  }
}


Wszystko standardowo i bez kombinacji, jak z podręcznika.

Jeśli chodzi o RealURL, w tabeli tx_realurl_pathcache są wszystkie PODSTRONY dla obu wersji językowych.
tx_realurl_urldecodecache oraz tx_realurl_urlencodecache są puste.

W przypadku wyłączenia RealURL problem nie znika. Nadal na pierwszej stronie jest tylko język polski tak jakby nie było w ogóle angielskiego dla strony głównej.

IMP

Napisane: 03.12.2011 [07:51]
tomkraw1
admin
zarejestrowany: 14.07.2008
Posty: 530
Czy czyścisz cache RealUrl np. rozszerzeniem RealUrl Clear Cache?
Czy strona główna ma dodany alternatywny content?


pozdrawiam
Tomek
Napisane: 03.12.2011 [13:32]
Imp
Twórca tematu
zarejestrowany: 13.04.2011
Posty: 170
Czyściłem cache RealURL, ręcznie czyszcząc tabele.

Strona główna ma dodany alternatywny content, swoją droga przypomina to trochę zachowanie jak gdyby nie miała tego contentu i domyślnie pokazywana byłaby wersja polska.
Jednak content dla języka o id=1 jest, podmieniany w TS, zamienia się tłumaczenie formularza logowania, tytuł przycisku rozwijającego panel logowania, cały slider na stronie głównej jest wyświetlany w angielskiej wersji, jedynie w menu główne są wrzucane tytułu stron z polskiej wersji stron a nie z alternative page langueage > title.

Zainstalowałem cbrealurl, skonfigurowałem jak w dokumentacji, wszystko działa dokładnie tak jak bez tego ext (czyli z samym RealURL), oraz bez RealURL nawet.
TYPO3 w każdym przypadku nie kuma, że na stronie głównej w wersji angielskiej w menu ma wrzucić angielskie tytuły stron i podstron. Treści zamienia, źle generuje jedynie menu, menu językowe również pokazuje zły język.
Zaznaczam jednak, że to się dzieje tylko na stronie głównej (id=1). na pozostałych podstronach działa prawidłowo.

Na upartego można to obejść wstawiając w głównym szablonie warunek, w którym dla strony głównej i dla języka o id=1 to małe menu będę generował nie za pomocą HMENU tylko ręcznie wstawionego fragmentu kodu, ale to jest tylko "proteza" i nie rozwiązuje poroblemu do końca.

np tak:
TYPOSCRIPT
[globalVar = TSFE:id=1] AND [globalVar = GP:L=1]
lib.field_top_menu >
lib.field_top_menu = TEXT
lib.field_top_menu.value (
<ul id="topmenu_ul">
<li id="selected"><a href="/en/" >Home</a></li>
<li><a href="/en/about-us/" >About Us</a></li>
<li><a href="/en/what-we-do/" >What We Do</a></li>
<li><a href="/en/our-projects/" >Our Projects</a></li>
<li><a href="/en/who-is-who/" >Who is Who</a></li>
<li><a href="/en/contact/" >Contact</a></li>
</ul>
)
[end]



IMP

[Ten temat był edytowany 3 razy. Ostatnio 03.12.2011 o 17:10.]
Napisane: 03.12.2011 [21:21]
tomkraw1
admin
zarejestrowany: 14.07.2008
Posty: 530
Trochę przekombinowałeś to menu. TYPO3 zawsze bierze sobie tytuły do menu z alternatywnego języka. Tu masz przykład z wypunktowanymi ID stron w menu (special = list).

TYPOSCRIPT
10 = HMENU
  10 {
    special = list
    special.value = 7,19,24,12
    includeNotInMenu = 1
    1 = TMENU
    1 {
      noBlur = 1
      NO.allWrap = <div class="flItem"> | </div>
      NO.stdWrap.htmlSpecialChars = 1
      ACT < NO
    }
  }


Przy okazji. Pokaż plik konfiguracyjny RealUrl bo do multilanga automatyczna konfiguracja nie wystarczy.

pozdrawiam
Tomek
Napisane: 04.12.2011 [14:41]
Imp
Twórca tematu
zarejestrowany: 13.04.2011
Posty: 170
Tak wiem skąd TYPO3 bierze tytuły do menu. I to działa dobrze dla wszystkich stron i podstron z wyjątkiem strony głównej w wersji angielskiej - wrzuca tam uparcie tytuły polskie.
Stąd ten warunek, żeby wymusić to co chcę w tym menu, ale tylko na stronie głównej w wersji angielskiej.

Na reszcie stron menu jest generowane za pomocą list menu właśnie, o tak:
TYPOSCRIPT
lib.field_top_menu = HMENU
lib.field_top_menu {
  special = list
  special.value = 1,2,3,4,5,6
  wrap = <ul id="topmenu_ul">|</ul>
  1 = TMENU
  1 {
    noBlur = 1
    NO = 1
    NO {
      wrapItemAndSub = <li>|</li>
    }
    CUR < .NO
    CUR = 1
    CUR.wrapItemAndSub = <li id="selected">|</li>
  }
}


Natomiast wracając do RealURL. Nie mam w pliku konfiguracyjnym żadnej dodatkowej konfiguracji, ponieważ zawsze RealURL działał mi z wielojęzycznymi stronami bez dodatkowej konfiguracji (czy to błąd?).
plik wygląda standardowo:
PHP
<?php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']=unserialize('a:1:{s:8:"_DEFAULT";a:4:{s:4:"init";a:6:{s:16:"enableCHashCache";b:1;s:18:"appendMissingSlash";s:18:"ifNotFile,redirect";s:18:"adminJumpToBackend";b:1;s:20:"enableUrlDecodeCache";b:1;s:20:"enableUrlEncodeCache";b:1;s:19:"emptyUrlReturnValue";s:1:"/";}s:8:"pagePath";a:5:{s:4:"type";s:4:"user";s:8:"userFunc";s:68:"EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main";s:14:"spaceCharacter";s:1:"-";s:14:"languageGetVar";s:1:"L";s:11:"rootpage_id";s:1:"1";}s:8:"fileName";a:2:{s:25:"defaultToHTMLsuffixOnPrev";i:0;s:16:"acceptHTMLsuffix";i:1;}s:7:"preVars";a:1:{i:0;a:3:{s:6:"GETvar";s:1:"L";s:8:"valueMap";a:1:{s:2:"en";s:1:"1";}s:7:"noMatch";s:6:"bypass";}}}}');
 
?>


Ja bym to RealURL zostawił teraz w spokoju (takie są moje wnioski z tej historii), ponieważ z wyłączonym RealURL, i zanim zostało zainstalowane, było dokładnie to samo. W menu tylko na Stronie Głównej, w wersji angielskiej, zamiast tytułów angielskich były polskie.

[Ten temat był edytowany 1 razy. Ostatnio 04.12.2011 o 14:44.]
Napisane: 04.12.2011 [15:31]
tomkraw1
admin
zarejestrowany: 14.07.2008
Posty: 530
RealUrl musi mieć podane ID języków w jego pliku konfiguracyjnym. Tu masz kawałek konfiguracji jednej z moich stron.

PHP
$TYPO3_CONF_VARS['EXTCONF']['realurl'] = array(
 
	'www.domena.pl' => array(
		'init' => array(
			'enableCHashCache' => 1,
			'appendMissingSlash' => 'ifNotFile',
			'enableUrlDecodeCache' => 1,
			'enableUrlEncodeCache' => 1,
			'emptyUrlReturnValue' => '/',
		),
		'redirects' => array(),
 
		'preVars' => array(
			array(
				'GETvar' => 'L',
				'valueMap' => array(
					'en' => '0',
					'de' => '1',
					'pl' => '2',
				),
				'noMatch' => 'bypass',
			),


Biesior w tym wątku ładnie wypunktował jak zmienić autoconf na własna konfigurację - http://forum.typo3.pl/forum/post/wielojezycznosc/2058.html.

RealUrl jest ważne bo źle skonfigurowany powoduje różne kwiatuszki.

Ty masz podany angielski.
PHP
{s:6:"GETvar";s:1:"L";s:8:"valueMap";a:1:{s:2:"en";s:1:"1";}s:7:"noMatch";s:6:"bypass";}

Prawda?

pozdrawiam
Tomek
Napisane: 04.12.2011 [16:47]
Imp
Twórca tematu
zarejestrowany: 13.04.2011
Posty: 170
Dzięki za wskazówki, wykonałem więc manualną konfigurację za pomocą pliku realurl_conf.php.

PHP
<?php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']=array (
  '_DEFAULT' => 
  array (
    'init' => 
    array (
      'enableCHashCache' => true,
      'appendMissingSlash' => 'ifNotFile,redirect',
      'adminJumpToBackend' => true,
      'enableUrlDecodeCache' => true,
      'enableUrlEncodeCache' => true,
      'emptyUrlReturnValue' => '/',
    ),
    'pagePath' => 
    array (
      'type' => 'user',
      'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
      'spaceCharacter' => '-',
      'languageGetVar' => 'L',
      'rootpage_id' => '1',
    ),
    'fileName' => 
    array (
      'defaultToHTMLsuffixOnPrev' => 0,
      'acceptHTMLsuffix' => 1,
    ),
    'preVars' => 
    array (
      0 => 
      array (
        'GETvar' => 'L',
        'valueMap' => 
        array (
          'pl' => '0',
	  'en' => '1',
        ),
        'noMatch' => 'bypass',
      ),
    ),
  ),
);
?>


Wszystko działa tak samo. Tzn wszędzie są poprawne tłumaczenia, także w menu, z wyjątkiem strony głównej w wersji angielskiej, w menu nadal są wrzucane polskie tytuły.
Czy czegoś może brakuje w pliku konfiguracyjnym?
Napisane: 04.12.2011 [17:12]
tomkraw1
admin
zarejestrowany: 14.07.2008
Posty: 530
Więc działamy dalej. Zainstaluj ext RealUrl Clear Cache. Ręczne czyszczenie tablic jest niewygodne. Z tym rozszerzeniem "piorunem" wyczyść cache.

Zrób zrzut ekranu strony głównej WEB->Page - Główna i rozwiń Language żebyśmy zobaczyli elementy treści w widoku języków.

pozdrawiam
Tomek