Jump to content

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


Recommended Posts

Posted (edited)

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ś?

Edited by sirwiz
  • sirwiz changed the title to Nazwy miesięcy/dni w kalendarzu z angielskiego na polski
Posted (edited)

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

Edited by sirwiz
Posted (edited)

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

 

Edited by Split
  • Like 2
Posted

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...

  • Manager
Posted

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ć.

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Posted
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
Posted

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;
	}

 

Posted
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
Posted

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.

Posted (edited)
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 :)
 

Edited by sirwiz
Posted (edited)
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.

Edited by sirwiz

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.