We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 38369
    • 4 Posts
    Установка локалей для Windows

    Кодировка Windows-1251
    setlocale(LC_ALL, 'Russian_Russia.1251');

    Кодировка KOI8-R
    setlocale(LC_ALL, 'Russian_Russia.20866');

    Кодировка UTF-8 ( использовать осторожно - вывод локализованных сообщений при этом идёт в cp1251 - затем нужно преобразовывать в UTF8 )
    setlocale(LC_ALL, 'Russian_Russia.65001');
      • 31246 ☆ A M B ☆
      • 428 Posts
      вы это пробовали? или это теория?
        Valentin Rasulov - Industrial design (Hobbies - Web Development)
        Development not standard projects on CMF MODx Revolution.
        Small sample of extensions
        • 38369
        • 4 Posts
        Ну несложно ведь попробовать:
        <?
        echo 'locale: ',setlocale(LC_ALL, 'Russian_Russia.1251'),"\n";
        echo strftime('day: %d, month: %B, day of the week: %A'),"\n";
        echo 'locale: ',setlocale(LC_ALL, 'Russian_Russia.20866'),"\n";
        echo strftime('day: %d, month: %B, day of the week: %A'),"\n";
        

        У меня вывело:
        locale: Russian_Russia.1251
        day: 27, month: Январь, day of the week: пятница
        locale: Russian_Russia.20866
        day: 27, month: сОЧБТШ, day of the week: РСФОЙГБ
          • 38369
          • 4 Posts
          Насчёт UTF-8 Вы правы, не проверил, ограничился Windows и КОИ кодировками. sad
          Как оказалось, согласно MSDN, Windows-реализация SetLocale() не поддерживает кодировку UTF-8, вернее все кодировки, требующие более 2 байт на символ (у UTF-8, как известно, до 4 байт).

          Цитата из MSDN, страница "setlocale, _wsetlocale" (http://msdn.microsoft.com/en-us/library/x99tb11d.aspx):
          The set of available languages, country/region codes, and code pages includes all those supported by the Win32 NLS API except code pages that require more than two bytes per character, such as UTF-7 and UTF-8. If you provide a code page like UTF-7 or UTF-8, setlocale will fail, returning NULL.
            • 37783
            • 85 Posts
            <?php
            setlocale(LC_ALL, 'ru_RU.UTF-8');
            
            $results = $modx->runSnippet('getResources', array(
                'parents' => 2,
                'limit' => 3,
                'tpl' => 'tplNews',
                'toPlaceholder'=>'ffz'
            ));


            Где нужно вызываете свои снипет и все
              • 38369
              • 4 Posts
              Это локаль только для линукс.
              Там все локали нормально работают.
              А строку setlocale(LC_ALL, 'ru_RU.UTF-8'); можно просто добавить после 4-х стартовых в файл index.php и не заморачиваться. Только при обновлении не забыть про неё.