Format daty i czasu zależny od ustawień przeglądarki użytkownika

0

Pracuje obecnie na CMSie. Zauwazylem, ze wszsytkie daty oraz czas jest formatowany ze wzgledu na ustawienia jezyka w przegladarce uzytkownika. Tak jak z jezykiem polskim nie ma wiekszego problemu. Tak pojawia sie problem np z angielskim. Poniewaz ten jezyk jest uzywany w kilku krajach oraz kilku roznych lokalizacjach np US, Canada czy Wielka Brytania. W USA uzywa sie format m/d/yy i 12 godzinny zegar. W Wielkiej Brytanii uzywa sie d/m/yy oraz 24 godzinny zegar.

W wiekszosci przegladarkach w krajach Europejskich sa zainstalowne dwa jezyki. EN US oraz EN. Pewnie zalezy to od producenta czy moze instalacji OS. Ja mam 4 lapki i na kazdym mam EN US oraz EN.

I tutaj jest moj problem. Poniewaz Jezeli EN US jest ustawiony jako jezyk glowny oraz format na date/time. To powoduje, ze strona wyswietla zly format np w krajach Europejskich.

Samo EN to tez tak naprawde EN US.

I zastanawiam sie czy mozna cos z tym zrobic. Generalnie uwazam, ze jezeli uzystkownik ma ustawiony EN US w przegladarce jako jezyk glowny to w sumie jego problem. Tylko gosc ode mnie z team mowi mi po raz kolejny, ze tak nie moze byc, ze mamy to poprawic. Nooo spoko, ale jak? Niby moge sprawdzic moze timezone albo locale z IP address? Ale skad mam wiedziec np kiedy uzyc jezyk z przegladarki a kiedy IP address? Ludzie tez uzywaja VPNow. Niby idzie to ogarnac, ale troche to jakis bezsensu jest dla mnie. Czy ktos tez zauwazyl ten problem? Czy jakos to poprawiliscie?

0

A to formatowanie NA PEWNO zachodzi w aplikacji server-side ?
Pytanie dałeś jako PHP

0
AnyKtokolwiek napisał(a):

A to formatowanie NA PEWNO zachodzi w aplikacji server-side ?
Pytanie dałeś jako PHP

Tak, PHP pobiera language oraz locale z tego co pamietam przez header $_SERVER['HTTP_ACCEPT_LANGUAGE']. I PHP manipuluje tymi danymi oraz ustawia language i locale na podstawie tych informacji, ktore sa wyslane z przegladarki uzytkownika.

2

Użytkownik powinien mieć w danych konta kraj/strefę czasową. Potem zapisujesz/wyświetlasz czas używając właściwej strefy.
Żadne IP, żaden język przeglądarki. Jak chciałbyś np. Rosję czy USA ograć? Jeden język a mnóstwo stref czasowych.

0

@poniatowski: Uważam, że się mylisz. PHP nie ustawia sobie formatu daty i czasu ze względu na to co ma użytkownik w przeglądarce. Problemem jest to w jakim formacie te dane są wysyłane z przeglądarki do skryptu i to wszystko i rozwiązanie jakie przedstawił @jurek1980 jest chyba najlepsze.

0

Podczas instalacji np Windowsa uzytkownik musi wybierac jezyk, strefe czasowa itd. Na podstawie tych ustawien jak user instaluje pierwszy raz przegladarke to te same wartosci zostana ustawione w przegladarce. Np powiedzmy, ze user wybrac language = EN i locale = US. To tak zostanie ustawione w przegladarce EN-US.

Wydaje sie, ze to ma super sense, zeby ustawic date/time format w profilu usera. Tylko takiego profilu u nas nie ma i raczej szybko nie bedzie. Niestety.

1
poniatowski napisał(a):

Generalnie uwazam, ze jezeli uzystkownik ma ustawiony EN US w przegladarce jako jezyk glowny to w sumie jego problem.

No i masz rację

Tylko gosc ode mnie z team mowi mi po raz kolejny, ze tak nie moze byc, ze mamy to poprawic.

Jak płacą to zrób im opcję w profilu która może nadpisać ten język, ewentualnie ustaw domyślny język na taki którego używa większość użytkowników. Jeśli to apka która jest używana wyłącznie w polsce to gość z teamu ma rację

0
poniatowski napisał(a):

Podczas instalacji np Windowsa uzytkownik musi wybierac jezyk, strefe czasowa itd. Na podstawie tych ustawien jak user instaluje pierwszy raz przegladarke to te same wartosci zostana ustawione w przegladarce. Np powiedzmy, ze user wybrac language = EN i locale = US. To tak zostanie ustawione w przegladarce EN-US.

Ale instalacja Windowsa nijak ma się do serwera PHP :)

Wydaje sie, ze to ma super sense, zeby ustawic date/time format w profilu usera. Tylko takiego profilu u nas nie ma i raczej szybko nie bedzie. Niestety.

No co najwyżej możesz sprawdzać w jakim formacie dostajesz datę i po stronie skryptu konwertować ją do "normalnego" formatu. Później podobnie z wyświetlaniem.

0

A nie wolałbyś żeby server manipulował timestampem, i niech klient wyświetli datę z odpowiednimi ustawieniami i strefą czasową?

0
Riddle napisał(a):

A nie wolałbyś żeby server manipulował timestampem, i niech klient wyświetli datę z odpowiednimi ustawieniami i strefą czasową?

a co za różnica skoro klient użyje tych samych ustawień przeglądarki i data będzie w tym samym formacie

0
obscurity napisał(a):
Riddle napisał(a):

A nie wolałbyś żeby server manipulował timestampem, i niech klient wyświetli datę z odpowiednimi ustawieniami i strefą czasową?

a co za różnica skoro klient użyje tych samych ustawień przeglądarki i data będzie w tym samym formacie

No nie koniecznie, bo klient może mieć dane których nie wysyła do servera.

Poza tym, nawet jeśli to nic nie zmieni, to prościej się operuje samym timestampem.

1
poniatowski napisał(a):

Tylko gosc ode mnie z team mowi mi po raz kolejny, ze tak nie moze byc, ze mamy to poprawic.

A czy Ty porozmawiales z tym gościem i opisałeś mu problem tak jak tutaj?
Bo mam wrażenie, że dostałeś info że "masz to poprawić". Zgodzileś się na to, ale nadal nie wiadomo w czym dokładnie tkwi problem i jak chcecie z nim poradzić. Załóżmy że wybierzesz jedną z porad udzielonych Ci tutaj, zaimplementujesz to, a potem ten sam "gość" powie Ci - "... ale wiesz.. to nie o to mi chodziło"

Czy komunikowałeś problematykę temu gościowi?

0

Hm, formatowanie daty, wybieranie strefy czasowej na podstawie języka przeglądarki czy geolokalizacji po IP..?
Jeśli profil Usera to za dużo to może chociaż prosty modal z dropdownem wyświetlany na pierwsze wejście na strone/logowanie lub dla osób, które nie mają tego ustawionego?

0

Tez coraz bardziej mysle w tym kierunku. zeby sobie user ustawil co tam chce sam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1