PDA

Zobacz pełną wersję : Format daty na stronach wielojęzycznych



dac59
25-04-2006, 05:32
Witam, mam problem z poprawnym wyświetlaniem daty na stronie wielojęzycznej. Na polskiej wyświetla w formacie skróconym a w innych jązykach z polskimi nazwami miesięcy. Zainstalowany Joom!Fish 1.7 beta2. Proszę o jakieś wskazówki

magic
25-04-2006, 12:59
W plikach języka .../languages/ np. english.php itd. masz definicję formatu wyswietlania daty. Zmień na inną. W Pomocy (http://www.pomoc.joomla.pl/pomoc/index.php/content/view/348/30/) masz szczegóły.

dac59
26-04-2006, 23:42
tak - rozumiem tu jest wszystko jasne. Natomiast dalej nurtuje mnie ze przy formatach daty DEFINE("_DATE_FORMAT_LC","%A, %d %B %Y"); w innych językach pokazuje polskie nazwy. Zgodnie z zaleceniami w pomocy używam tylko tego formatu (usunąłem DEFINE('_DATE_FORMAT','.....'); Dlaczego tak się dzieje? Można oczywiście pozostać przy skróconych formatach i nie zawracać sobie tym głowy, no ale jednak ... warto by wiedzieć. Gdzie diabeł pogrzebany?

Rybik
27-04-2006, 00:20
byc moze serwer stara sie byc uprzejmy :) i rozpoznaje ustawienia jezykowe przegladarki i podsuwa Ci zawsze tekst w rodzimym jezyku

magic
27-04-2006, 00:32
No toż własnie o to chodziło, żebyś zastosował skrócone formaty daty dla innych języków niż polski. Po to cię skierowałem do plików języka w folderze .../language/, bo tam w definicji formatu daty możesz to zmienić (na skrócone) dla innych języków niż polski.

Dlaczego tak?

W konfiguracji witryny (configuration.php) masz ustawiony Kod kraju (Country locale). Joomla! przy instalacji sprawdza ustawienia serwera www - jakie obsługuje zmienne środowiskowe dla różnych krajów (Country locale - np. właśnie nazwy dni tygodnia, formaty daty, walut, itp), w tym - jaki kod kraju jest domyślny dla tego serwera, i taki proponuje (np. pl_PL dla serwerów Apache zainstalowanych w Polsce).

I tutaj zaczynają się schody z JoomFish
- w konfiguracji dla całego serwisu masz ustawione pl_PL czyli przy formatowaniu daty obejmującym nazwę dnia tygodnia środa nazywa się "środa" (tak jest ustawione na serwerze), a nie "wednesday";
- JoomFish przełącza przy zmianie języka właściwy plik językowy z folderu language (w którym zdefiniowane są zaróno etykiety ekranowe, jak również strona kodowa, jak również - format wyświetlania daty)
- we wszystkich plikach językowych (domyślnie) jest ustawiony długi format daty (obejmujący nazwę dnia tygodnia);
- wszystko jest ok w j. polskim (bo się zgadza ze zmiennymi środowiskowymi dla pl_PL), ale w innych językach też się pojawi środa zamiast np. wednesday (bo to informacja pochodząca od serwera) ...

Przepraszam, jeśli coś nie dość jasno (prawidłowo) wyjaśniłem, być może też jest inny sposób rozwiązania (np. dynamiczna zmiana Kodu kraju) ...

Moim zdaniem najprościej - w innych językach niż polski (albo we wszystkich): skrócić datę do krótkiej.

dac59
27-04-2006, 00:55
Oki dziękuje Wam bardzo - teraz jestem w pełni usatysfakcjonowany i zrozumiałem wszystko :) . Czasami taka "****************rela" człowiekowi zawróci głowę i będzie dociekał, żeby to wyjaśnić. Cóż, taka natura. A teraz będę mógł zająć się spokojnie innymi problemami. Pozdrawiam

sepuk
02-11-2006, 14:46
W każdym pliku języka np. polish.php, english.php, french.php, marsian.php greek.php etc. należy (około lini 400) zmienić (tj. dodać)

Przykład dla french.php
zmieniamy z



/** templates/*.php */
DEFINE('_ISO','charset=iso-8859-1');
DEFINE('_DATE_FORMAT','l, F d Y'); //Uses PHP's DATE Command Format - Depreciated

na



/** templates/*.php */
setlocale(LC_ALL,'fr_FR.ISO8859-1'); // fix french locale for dates on linux (most common)
DEFINE('_ISO','charset=iso-8859-1');
DEFINE('_DATE_FORMAT','l, F d Y'); //Uses PHP's DATE Command Format - Depreciated

W każdym pliku językowym definiujemy setlocale analogicznie do ww przykładu znieniając np. dla polish.php "pl_PL.ISO8859-2" te zmiene pokazuje joomla podczas "pre instalation check". Nawet jest tam porada aby sobie zapisać jakie "locale" są na serwerze.

Rozwiązanie bardzo przydatne ludziom którym zależy na profesjonaliżmie i chcą mieć datę w długim formacie niezależnie od wybranej przez odwiedzającego opcji językowej. Czyli mi.
Rozwiązanie pochodzi z tąd (http://www.webpr.gr/joomla/2006_07_01_archive.html) .


Pozdrawiam :)

EDIT

Napisałem

W każdym pliku językowym definiujemy setlocale analogicznie do ww przykładu znieniając np. dla polish.php "pl_PL.ISO8859-2" te zmiene pokazuje joomla podczas "pre instalation check". Nawet jest tam porada aby sobie zapisać jakie "locale" są na serwerze.

A powinno być:
W plikach języków które nie są ustawione w panelu administracyjnym witryny jako domyślne dla frontendu definiujemy setlocale analogicznie ...

Chodzi o to że przy zdefiniowaniu setlocale w pliku językowym który mamy ustawione jako domyślny wyskakują błędy. Defiuniujemy setlocale tylko w językach innych niż ten który mamy ustawiony jako domyślny.