Skocz do zawartości

Nazwy miesięcy/dni w kalendarzu z angielskiego na polski


Rekomendowane odpowiedzi

Opublikowano (edytowane)

Czy komuś udało się to ogarnąć?

Zrzutekranu2025-12-29o12_14_50.thumb.png.60db9c423d96694f2966517e27b1c78d.png

Zrzutekranu2025-12-29o12_15_48.thumb.png.56f3434a83d3bc4b0daef488d00259de.png

Bo w tłumaczeniach w teorii wszystko jest, część jest brane z PHP(?!), ktoś coś?

Edytowane przez sirwiz
  • sirwiz zmienił(a) tytuł na Nazwy miesięcy/dni w kalendarzu z angielskiego na polski
Opublikowano (edytowane)

Tak miałem, ale nie miałem ich na serwerze, nie przypuszczałem, że biorą to bezpośrednio z PHP.

sudo dnf install glibc-langpack-pl załatwiło sprawę w moim wypadku jako, że mam takie moce ;)

Edit:

Miesiące OK, ale nazwy dni tygodnia nie...

Zrzut ekranu 2025-12-29 o 16.16.39.png

Edytowane przez sirwiz
Opublikowano (edytowane)

Wpisz w konsolę frazę "locale". I Sprawdź co Ci wyświetla. Jeśli któreś będzie "en_US.UTF-8". To wykonaj poniższe komendy i zrestartuj usługę lub cały serwer.
 

Cytat

sudo localectl set-locale LANG=pl_PL.UTF-8
sudo localectl set-locale LC_TIME=pl_PL.UTF-8

 

Edytowane przez Split
  • Lubię to 2
Opublikowano

To nie to :)

 

[root@t850 ~]# cat /etc/locale.conf
LANG=pl_PL.UTF-8
LC_TIME=pl_PL.UTF-8
[root@t850 ~]# LC_TIME=pl_PL.UTF-8 date +"%A %d %B %Y"
poniedziałek 29 grudnia 2025
[root@t850 ~]# su ipb
[ipb@t850 root]$ LC_TIME=pl_PL.UTF-8 date +"%A %d %B %Y"
poniedziałek 29 grudnia 2025


A IPB swoje...

Opublikowano
6 godzin temu, DawPi napisał(a):

Dodaj takie coś na początku init.php (za kodem otwierającym rzecz jasna!) :

setlocale(LC_TIME, 'pl_PL.UTF-8');
setlocale(LC_COLLATE, 'pl_PL.UTF-8');

I daj znać.


Próbowałem to wczoraj, zero reakcji.

Dałem też

test.php

 

<?php
 
echo "<pre>";
setlocale(LC_TIME, 0);
setlocale(LC_TIME, 'pl_PL.UTF-8');
echo "\nstrftime():\n";
echo strftime('%A %d %B %Y') . "\n";
echo "\ndate():\n";
echo date('l d F Y') . "\n";
echo "</pre>";


>

strftime():
wtorek 30 grudnia 2025

date():
Tuesday 30 December 2025
Opublikowano

I według mnie coś jest nie halo. Bo powinno Ci to dobrze zwrócić. Podeślij adres url.

 

	public static function getDayNames()
	{
		if( static::$cachedDayNames !== NULL )
		{
			return static::$cachedDayNames;
		}

		$dayNames	= array();
		$startDay	= \IPS\Settings::i()->ipb_calendar_mon ? 'Monday' : 'Sunday';

		for( $i = 0; $i < 7; $i++ )
		{
			$_time		= strtotime( 'next ' . $startDay . ' +' . $i . ' days' );
			$_abbr		= \IPS\Member::loggedIn()->language()->convertString( strftime( '%a', $_time ) );

			$dayNames[]	= array( 'full' => \IPS\Member::loggedIn()->language()->convertString( strftime( '%A', $_time ) ), 'english' => date( 'l', $_time ), 'abbreviated' => $_abbr, 'letter' => mb_substr( $_abbr, 0, 1 ), 'ical' => mb_strtoupper( mb_substr( date( 'D', $_time ), 0, 2 ) ) );
		}

		static::$cachedDayNames = $dayNames;

		return $dayNames;
	}

 

Opublikowano
9 godzin temu, Split napisał(a):

date() zawsze zwraca angielskie nazwy bo działa wyłącznie o oparciu o wewnętrzne formaty PHP.

Wiem, dlatego go użyłem w testach :)

  • Manager
Opublikowano

Dla testów. Otwórz plik: applications\calendar\sources\Date\Date.php

Znajdź:

	/**
	 * Get the localized day names in correct order
	 *
	 * @return	array
	 * @see		<a href='http://stackoverflow.com/questions/7765469/retrieving-day-names-in-php'>Get localized day names in PHP</a>
	 */
	public static function getDayNames(): array
	{
		if( static::$cachedDayNames !== NULL )
		{
			return static::$cachedDayNames;
		}

Daj niżej:

setlocale(LC_TIME, 'pl_PL.UTF-8');

Zapisz i powiedz jak wtedy jest.
 

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano (edytowane)
4 godziny temu, DawPi napisał(a):

Dla testów. Otwórz plik: applications\calendar\sources\Date\Date.php

Znajdź:

	/**
	 * Get the localized day names in correct order
	 *
	 * @return	array
	 * @see		<a href='http://stackoverflow.com/questions/7765469/retrieving-day-names-in-php'>Get localized day names in PHP</a>
	 */
	public static function getDayNames(): array
	{
		if( static::$cachedDayNames !== NULL )
		{
			return static::$cachedDayNames;
		}

Daj niżej:

setlocale(LC_TIME, 'pl_PL.UTF-8');

Zapisz i powiedz jak wtedy jest.
 


Próbowałem i nic i nie dziwi mnie to, bo jak by mi się chciało i przeczytał bym ze zrozumieniem co jest dalej...

Dałem bo mi się nie chce myśleć dziś:

$daysPL= [
        ['full' => 'poniedziałek', 'english' => 'Monday',    'abbreviated' => 'Pn', 'letter' => 'P', 'ical' => 'MON'],
        ['full' => 'wtorek',       'english' => 'Tuesday',   'abbreviated' => 'Wt', 'letter' => 'W', 'ical' => 'TUE'],
        ['full' => 'środa',        'english' => 'Wednesday', 'abbreviated' => 'Śr', 'letter' => 'Ś', 'ical' => 'WED'],
        ['full' => 'czwartek',     'english' => 'Thursday',  'abbreviated' => 'Cz', 'letter' => 'C', 'ical' => 'THU'],
        ['full' => 'piątek',       'english' => 'Friday',    'abbreviated' => 'Pt', 'letter' => 'P', 'ical' => 'FRI'],
        ['full' => 'sobota',       'english' => 'Saturday',  'abbreviated' => 'Sb', 'letter' => 'S', 'ical' => 'SAT'],
        ['full' => 'niedziela',    'english' => 'Sunday',    'abbreviated' => 'Nd', 'letter' => 'N', 'ical' => 'SUN'],
    ];

I działa, ale to leczenie syfa pudrem.

Bo ta funkcja jest spier.... tzn źle napisana.

Zobaczcie co robi:

$_abbr        = Member::loggedIn()->language()->convertString( date( 'D', $_time ) );

            $dayNames[]    = array( 'full' => Member::loggedIn()->language()->convertString( date( 'l', $_time ) ), 'english' => date( 'l', $_time ), 'abbreviated' => $_abbr, 'letter' => mb_substr( $_abbr, 0, 1 ), 'ical' => mb_strtoupper( mb_substr( date( 'D', $_time ), 0, 2 ) ) );



To nie buduje klucza do tłumaczenia, tylko daje string to raz, dwa zawsze da po angielsku :)
 

Edytowane przez sirwiz
Opublikowano (edytowane)
public static function getDayNames(): array
{
    if ( static::$cachedDayNames !== NULL )
    {
        return static::$cachedDayNames;
    }

    $dayNames = [];

    $startDay = Settings::i()->ipb_calendar_mon ? 'Monday' : 'Sunday';

    for ( $i = 0; $i < 7; $i++ )
    {
        $_time = strtotime( 'next ' . $startDay . ' +' . $i . ' days' );

        $full = strftime('%A', $_time);
        $abbr = strftime('%a', $_time);

        $dayNames[] = [
            'full'         => $full,
            'english'      => date('l', $_time),
            'abbreviated'  => $abbr,
            'letter'       => mb_substr($abbr, 0, 1),
            'ical'         => strtoupper(date('D', $_time))
        ];
    }

    static::$cachedDayNames = $dayNames;
    return $dayNames;
}



Tak ta funkcja powinna chyba wyglądać, choć oczywiście strftime jest już deprecated.

Edytowane przez sirwiz

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.