Получить номер месяца из названия на другом языке - PullRequest
2 голосов
/ 14 декабря 2010

Если у меня есть название месяца на определенном языке (скажем, на албанском), как мне получить соответствующее ему число (в PHP)?Помимо очевидного метода создания массива с названиями месяцев этого языка (я боюсь, что это довольно уязвимо для орфографических ошибок), я предполагаю, что вы можете использовать setlocale, но я не могу понять, что делать дальше.

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Я могу ошибаться, но, насколько мне известно, вы можете использовать локали для генерации названий месяцев, но нет встроенных функций даты, которые могут анализировать неанглийские имена.

Должно быть довольно легко создать список имен для сравнения:

<?php

$langs = array(
    // Windows only locale names
    'Albanian',
    'French',
    'German',
    'Spanish',
);
$months = array();

foreach($langs as $lang){
    setlocale(LC_TIME, $lang);
    foreach(range(1, 12) as $i){
        $months[$lang][$i] = strftime('%B', mktime(0, 0, 0, $i));
    }
}

Однако возможно, что на некоторых языках есть альтернативные варианты написания, поэтому надежность этого метода зависит от ваших конкретных потребностей.

PHP имеет несколько функций интернационализации , что может быть лучше. Метод IntlDateFormatter :: parse () , кажется, делает именно то, что вы просите. Тем не менее, его требования включают PHP 5 >= 5.3.0, PECL intl >= 1.0.0.

1 голос
/ 14 декабря 2010

Посмотрите на пакет i18n.Он предоставляет классы и функции для интернационализации в php.

http://php -flp.sourceforge.net / getting_started_english.htm # date

...