2

特定の言語 (たとえばアルバニア語) の月名がある場合、それに対応する番号を (PHP で) 取得するにはどうすればよいですか? その言語の月名の配列を作成する明白な方法 (つづりの間違いに対して非常に脆弱であると思います) に加えて、setlocale を使用できると思いますが、次に何をすべきかわかりません。

4

2 に答える 2

1

私が間違っているかもしれませんが、私が知る限り、ロケールを使用して月の名前を生成できますが、英語以外の名前を解析できる組み込みの日付関数はありません。

比較する名前のリストを生成するのはかなり簡単です。

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

于 2010-12-14T10:25:04.110 に答える
1

i18n パッケージを見てください。PHP での国際化のためのクラスと関数を提供します。

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

于 2010-12-14T10:04:26.293 に答える