"Wczoraj" jest po polsku, pełna data po angielsku

3

Dlaczego przy dacie i godzinie ostatniego postu w temacie pełne daty są w innym języku niż odniesienie do wczoraj/dzisiaj?

Zrzut-ekranu-2020-01-8-o-13-01-06.png

0

Daj link do miejsca, w którym to zobaczyłeś. Zajrzałem w parę miejsc, ale nigdzie nie udało mi się tego znaleźć.

2

@cerrato: sprawdź jaki masz ustawiony format daty i wybierz ten z pełną nazwą miesiąca, a następnie kuknij na stronę kategorii forum i zobacz na jakiś starszy wątek. ;)

forum.png

1

Dzięki za zgłoszenie. To zapewne ma związek z migracją na nowy serwer. Nie jest ustawione prawidłowe locale w kontenerze.

5

To ja skorzystam z okazji i poproszę o opcję wyłączenia tych wszystkich dzisiów, wczorajów i sekund temu, tak by można było zawsze mieć dokładną datę i godzinę.

0

Konia z rzędem temu kto zainstaluje locale na Linux Alpine :/ Chyba trzeba będzie powrócić do Ubuntu.

0

Czy mam zrozumieć przez to, że 4P Stoi na Alpine? Nie żebym krytykował czy się czepiał, po prostu się mocno zdziwiłem.

Z tego co kojarzę, Alpine jest taką mocno okrojoną dystrybucją przeznaczoną do urządzeń embedded:

Alpine Linux to niezależna dystrybucja systemu Linux przeznaczona do obsługi routerów, bramek telefonii VoIP oraz zapór sieciowych. Skierowana jest do pracy w urządzeniach wbudowanych

4

Tzn. sam kontener dockera w którym jest PHP, jest na Alpine. Tak, jest mocno okrojona, ale przez co obraz zajmuje z 300 MB zamiast 1 GB :)

0

A poza tym z PHP to ile jest jeszcze dockerów? I na czym one stoją - też na Alpine?

0

Dockera średnio ogarniam, więc wolę się dopewnić, czy dobrze odczytałem podany link: jest tam 11 obrazów?

Bo mamy najpierw sekcje w stylu

services:
  db:
    image: postgres:11-alpine
[...]

i tam jest 11 pozycji, ale potem jeszcze jest

volumes:
  postgres:
  elasticsearch:
  minio:
  codebase:
  mongo:
  graylog:

i tutaj jest na liście jedynie 6 elementów.

0

Na końcu są volumes, serwisy są w sekcji services. Nie liczyłem, ale skoro mówisz że jest 11 to pewnie tak jest :)
Na produkcji dodatkowo niektóre usługi są zreplikowane tak więc rzeczywiście kontenerów jest więcej.

0

@Adam Boduch: rozwiązałeś może już problem z locale na Alpine?

0

Nie :( Niby jest zrobione tak jak w internecie piszą ale nadal w EN wyświetla daty :(

0

To ja spróbuję, ale nic nie obiecuję (jeszcze nie zainstalowałem Alpine, więc wszystko może się zdarzyć).


PS. Ja wybrałem wersję "Standard"; nie wiem, czy to będzie robić różnicę.

0

fajnie :) Polecam użyć dockera. Łatwo mozesz ściągnąć obraz tego systemu.

Moje wypociny są tutaj: https://github.com/adam-boduch/coyote/blob/master/docker/php/Dockerfile#L75

0

@Adam Boduch: nie znam Dockera, wolałbym go nie uczyć się teraz, jeśli nie muszę.

Zainstalowałem Alpine. Jak sprawdzić, jakie locales są zainstalowane? Innymi słowy, jak zweryfikować, czy udało mi się osiągnąć to, co Ty chcesz osiągnąć, czy jeszcze nie?

0

@Silv: spojrzałem w źródło i kod używa klasy Carbon i metody formatLocalized czyli możesz zmontować sobie coś w ten deseń:

<?php
echo Carbon::today()->formatLocalized('%B');

Ale od 3 lat nie napisałem linijki w PHP, więc może coś poknociłem.

0

@Marooned: ale ja mam czysty Alpine, nic jeszcze nie instalowałem (prócz man i man-pages). Czy mógłbyś mi napisać krok po kroku, jak to zrobić, bo nie bardzo znam się na PHP?

1

Możesz np. w konsoli odpalić php -r "setlocale(LC_ALL, 'pl_PL.UTF-8');echo strftime('%A');"

Powinno zwrócić dzień tygodnia (po polsku oczywiście).

Możesz użyć dowolnego języka programowania który wyświetli datę

0

@Adam Boduch: dzięki! Jednak na razie w ogóle nie wiem, jak sprawdzić, jakie locales są zainstalowane – czy w ogóle są. Ale będę jeszcze szukać na to poleceń/plików.

0

@Adam Boduch: wydaje mi się, że domyślna wersja Alpine (nie na Dockera) jest bardzo okrojona. Będę jeszcze próbować, a na razie znalazłem https://github.com/gliderlabs/docker-alpine/issues/144 (nie czytałem jeszcze całości). Może coś pomoże.

0

Zobacz to rozwiązanie: https://gist.github.com/Herz3h/0ffc2198cb63949a20ef61c1d2086cc0

Ja zrobiłem tak, ale nadal mi nie działa :/

2

Polecenie php -r "setlocale(LC_ALL, 'pl_PL.UTF-8');echo strftime('%A');", które podałeś, nie zwróciło mi nic.


PS. Tzn. użyłem php7 zamiast php.


UPDATE: Po wpisaniu do pliku /etc/profile następujących linijek:

LANG=pl_PL.UTF-8
LC_ALL=pl_PL.UTF-8

polecenie date w ashu pokazuje datę zaczynającą się na Fri (a z tego, co wiem, powinna zaczynać się na Pią). Będę dalej próbować.


UPDATE2: Co ciekawe, menedżer pakietów apk w domyślnych repozytoriach zdaje się nie mieć narzędzia locale (tzn. w żadnym z repozytoriów domyślnie znajdujących się w pliku /etc/apk/repositories).


UPDATE3: Polecenie env na Alpine nie pokazuje zmiennej środowiskowej LANG (uwzględniając, że wpisałem ją do pliku /etc/profile; a na (mojej) Fedorze pokazuje).


UPDATE4: Instalacja paczki tzdata (https://stackoverflow.com/a/53820235) nic nie dała – po przelogowaniu się date nadal pokazuje datę zaczynającą się na Fri.


UPDATE5: Po wykonaniu polecenia cat /etc/localtime domyślny terminal zaczyna wyświetlać znaczki najprawdopodobniej w innym kodowaniu – tak, że prawie nic nie da się przeczytać i trzeba resetować.


UPDATE6: Przynajmniej na mojej instalacji Alpine nie da się wykonać wszystkich kroków z tej strony: https://wiki.alpinelinux.org/wiki/Setting_the_timezone, ponieważ u mnie /etc/localtime jest plikiem, a nie katalogiem.


UPDATE7: Zostawię tutaj w celu dokumentacji moich poszukiwań:


UPDATE8: Polecenia env LANG=pl_PL.UTF-8 date oraz env LC_ALL=pl_PL.UTF-8 date nie dają efektu – wyświetlana data nadal zaczyna się na skrót angielskiej nazwy dnia tygodnia (Sat).


UPDATE9: Chociaż nadal dokładnie nie wiem, jak powiązane są biblioteki libc, glibc oraz musl libc z działaniem polecenia date, zaczynam wierzyć, że wyświetlana data może mieć związek z przesiadką Alpine na musl libc w repozytoriach edge (https://www.alpinelinux.org/posts/Alpine-Linux-has-switched-to-musl-libc.html).


UPDATE10: @Adam Boduch: nie mogę Ci radzić ani nie radzić, bo na Dockerze się nie znam, ale tutaj, jak pisze autor, jest uaktualniony skrypt wcześniejszego w wątku spod tego linku – być może uaktualniona wersja tego skryptu, który Ty mi podałeś: https://github.com/gliderlabs/docker-alpine/issues/144#issuecomment-436455850


UPDATE11: Umieszczę tutaj wszystkie rozwiązania/obejścia problemu locales w Alpine spod linku https://github.com/gliderlabs/docker-alpine/issues/144 (niezależnie, czy już o nich wspominałem wyżej, czy nie – i niezależnie, czy je polecam, czy nie):

  1. https://github.com/gliderlabs/docker-alpine/issues/144#issuecomment-286487080
  2. https://github.com/gliderlabs/docker-alpine/issues/144#issuecomment-339906345
  3. https://github.com/gliderlabs/docker-alpine/issues/144#issuecomment-394270469
  4. https://github.com/gliderlabs/docker-alpine/issues/144#issuecomment-436455850 (jak pisze autor, uaktualniona wersja skryptu spod linku nr 2)
  5. https://github.com/gliderlabs/docker-alpine/issues/144#issuecomment-467787149 (jak pisze autor, na podstawie skryptu spod linku nr 3)
  6. https://github.com/gliderlabs/docker-alpine/issues/144#issuecomment-474859421 (to chyba to, co Ty, @Adam Boduch, podałeś w tym wątku)
  7. https://github.com/gliderlabs/docker-alpine/issues/144#issuecomment-554739373 (to rozwiązanie jest dla PHP)

UPDATE12: Polecenie node -e "console.log(new Date().toLocaleString('pl-PL', { 'weekday': 'long' }));" wyświetla sobota. Niestety nie wiem (jeszcze), skąd Node.js bierze locales, więc nie mogę stwierdzić, że może to działać dla innych środowisk.


UPDATE13: Polecenie node -e "console.log(new Date().toLocaleString(undefined, { 'weekday': 'long' }));" wyświetla Saturday, co oznacza, że domyślnym locale dla Node.js jest taki locale, w którym dni tygodnia zapisywane są po angielsku.


PS2. Będę pisać "ustawienia regionalne" zamiast "locale", chyba sensowniej.


UPDATE14: Wygląda na to, że Node.js ma własne dane z ustawieniami regionalnymi; sugerowałby to następujący cytat (źródło):

Node.js (and its underlying V8 engine) uses ICU to implement these features in native C/C++ code. The full ICU data set is provided by Node.js by default.

Jeśli by tak było, to byłaby to ślepa uliczka i trzeba by było szukać dalej.


UPDATE15: Z drugiej strony w dokumentacji Node.js jest też napisane, że (źródło):

Node.js can link against an ICU build already installed on the system. In fact, most Linux distributions already come with ICU installed, and this option would make it possible to reuse the same set of data used by other components in the OS.

Ale do tego trzeba po prostu zbudować Node. Nie będę tego sprawdzał, bo uważam, że z jednej strony miałbym zbyt dużo zamieszania z budowaniem, a z drugiej jedyna korzyść byłaby taka, że byłbym "bardziej pewien", czy domyślne ustawienia Alpine Linux są poprawne, czy nie (co nie rozwiązywałoby głównego problemu, a jedynie sugerowało, że to wina innych narzędzi, m.in. PHP, że nie działają dobrze na Alpine).


PS3. Oczywiście zakładając, że zestaw danych z ICU jest tym samym, który używa/może użyć PHP. Nie znam się na ustawieniach regionalnych w Linuxie aż tak bardzo. Bo jeśli nie byłby tym samym – ślepa uliczka.


PS4. Adam, może to rzeczywiście dobra droga, co ja piszę wyżej, żeby zbudować Node.js i sprawdzić? Jeśli zadziała w Node, można sprawdzić, czy PHP może obsługiwać dane z tego samego źródła co Node.


UPDATE16: Obecnie wyczerpały mi się "pomysły ad hoc". Natomiast żeby użyć jakiegoś "bardziej przemyślanego pomysłu", musiałbym poczytać przykładowo o wspomnianej w podanych przeze mnie linkach bibliotece musl libc, lub o Dockerze (żeby spróbować te skrypty Dockera sprawdzić, które są we wspomnianych przeze mnie linkach), lub po prostu o Alpine Linux. Tak czy siak wydaje mi się, że od ręki więcej nie zrobię.


PS5. Albo oczywiście zbudować Node.js. ;) Ale nie bardzo chce mi się na to tracić czas z racji tego, że nie wierzę, że da to jakieś użyteczne informacje, dopóki nie poczytam o ICU.

0

Wow, dzięki za poniesiony wysiłek i czas. Instalacja locale na alpine wydaje się jakimś zadaniem niemożliwym do wykonania :| Chyba trzeba będzie użyć po prostu ubuntu.

1

Naprawione. Obraz zmieniony na Ubuntu.

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