Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!
Spis treści

Spis treści

O autorze

O autorze

Grzegorz (scanner) Tlołka
Reklama

Reklama

Podobne Artykuły

Poniżej znajduje się lista podobnych artykułów:

PHP a sprawa polska

Każdy chyba serwis internetowy ma przynajmniej jeden element wykorzystujący datę. Datę wykorzystujemy przy wyświetlaniu newsów, informacji o ostatnim logowaniu, itp. W php wyświetlenie daty jest banalnie proste, ale... właśnie. domyślnie data wyświetlana jest po angielsku. A to raczej nie jest zbyt wskazane na polskojęzycznej stronie.

Każdy chętniej widziałby "Poniedziałek" niż "Monday", prawda? Na sieci znaleźć można wiele miejsc, gdzie autorzy artykułów stosują sztuczki z tablicami i parametryzacją funcji date(). My spróbujemy skorzystać z mechanizmów domyślnie wbudowanych w parser PHP.W php istnieje jedna dość ważna a zwykle pomijana funkcja, jaką jest setlocale(). Umiejętnie zastosowana umożliwia zlokalizowanie tekstów generowanych przez sam interpreter w taki sposób, jakby wygrany przez nas język był jego natywnym. Składnię tej funkcji poznać można zaglądając do manuala (którego nie mam zamiaru tutaj przepisywać). Pierwszym parametrem jest typ modyfikowanych lokali - ich kategoria. Drugim parametrem jest ciąg znaków opisujących kraj i język. I tutaj napotykamy problem. Użytkownicy serwerów postawionych w środowisku Windows zmuszeni są do stosowania kolejnego "standardu" giganta z Redmont. Różnica pomiędzy zapisem Unix/Linux a Windows polega na tym, iż ten drugi stosuje własne kody krajów/regionów i języka.

Każdy taki kod składa się z dwu członów, rozdzielonych znakiem "_". Zakładając, ze interesuje nas tylko język polski, string lokalizacyjny wygląda następująco:

  • "pl_PL" - dla systemów Unixowych
  • "polish_pol" - dla Windowsa.

I teraz mamy problem. Skąd skrypt ma wiedzieć, na jakim systemie jest uruchomiony? Można sprawdzać zmienne superglobalne, czy próbować odczytać taką informację w inny sposób, ale nie jest to konieczne. setlocale pozwala na podanie jako drugiego parametru tablicy. Jeśli tylko do tej tablicy zapiszemy preferowane przez nas lokalizacje, skrypt będzie automagicznie próbował ustawić je w kolejności takiej, w jakiej je podaliśmy. Zaprzestanie tych prób, w momencie gdy:

  1. Prawidłowo ustawiona zostanie bieżąca lokalizacja
  2. Osiągnie koniec tablicy.

Nam wystarczy stworzyć tablicę dwuelementową i już możemy się cieszyć polskimi napisami. Bez zbędnej zabawy w tablicowanie nazw miesięcy. Proponuję przeanalizować poniższy listing, oraz uruchomić go raz na Windowsie, raz na Unixie/Linixie. Oczywiście należałoby jeszcze ustawić stronę kodową, ale to już potraficie.

<?php
    $arrLocale = array( "pl_PL", "polish_pol" );
    setlocale( LC_ALL, $arrLocale );
    echo strftime("%A, %d %B %Y");
?>
Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (0)
Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2017 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System