5

私はサイトで作業しており、顧客はロシアから来ています。彼は、ニュースの月の翻訳が間違っていると言いました。

たとえば、9 月:

  • 私はphpからこれを取得します:Сентябрь
  • そしてこれは彼から:Сентября

どうすればこれを上書きできますか?

明確化: locale を使用する場合、ru_RU出力される月の名前はロシア語になります。しかし、私のクライアントによると、月の名前が間違っています。私はロシア語を話せないので、彼が正しいか間違っているかわかりません

日付を8th of September 2011これからロシア語に翻訳すると、次のようになることがわかり8 сентября 2011ました。翻訳を参照してください

したがって、問題の解決策は、おそらく日付形式を書き直すことです。

これはまだ修正していません。どうやらこれは、高度なロシア語の曲用によるバグ/機能の欠落です。そして、私が必要とする日付形式は存在しません。strftimeこれはPHPに影響すると思いますdate()

誰かがこれを確認できますか?

4

8 に答える 8

4

今では遅すぎることはわかっていますが、誰かの時間を節約できることを願っています。

ロシア語は世界で最も難しい言語と考えられています。この場合、正しいバリアントは間違いなくСентябряです。「That's September now」と言うと、「That's Сенбярь now」になります。しかし、'Tomorrow is the 6th of September' のような日付を参照している場合、ロシア語では 'Tomorrow is the 6 Сентября" に変わります。ロケールを ru_RU に変更すると、明らかにこれが認識されないため、ここに簡単な解決策を示します。このタスクを実行します。

($date が dmY 形式であると仮定します)

function russianDate($date){
    $date=explode(".", $date);
    switch ($date[1]){
        case 1: $m='января'; break;
        case 2: $m='февраля'; break;
        case 3: $m='марта'; break;
        case 4: $m='апреля'; break;
        case 5: $m='мая'; break;
        case 6: $m='июня'; break;
        case 7: $m='июля'; break;
        case 8: $m='августа'; break;
        case 9: $m='сентября'; break;
        case 10: $m='октября'; break;
        case 11: $m='ноября'; break;
        case 12: $m='декабря'; break;
    }
    return $date[0].' '.$m.' '.$date[2];
}
于 2012-02-02T19:31:11.903 に答える
1

あなたの顧客が本当に「Сентября」を欲しがっているなら、シンプルな str_replace() で十分です。

月名を表示する場合は、次のことを試してください。

str_replace("Сентябрь", "Сентября", $month);
于 2011-09-27T10:15:30.997 に答える
1

シンプルな if ステートメントを挿入して、月の名前をオーバーライドできます。

// Shorthand if
echo $month_name == "Сентябрь" ? "Сентября" : $month_name;

また

// Normal if
if ($month_name == "Сентябрь")
{
   echo "Сентября";
}
else
{
   echo $month_name;
}
于 2011-09-27T10:16:19.573 に答える
0

エラーはPHP内にあるため、@tsabzの答えはおそらく解決策です。それか、ロシアには代わりに設定する必要のある方言があります。

@tsabzの答えをTypo3に実装するには、tslib_content(すなわちtslib_cObj)をxclassingする必要があります。これはtypo3conf/localconf.php、内部のカスタム拡張機能で、次の行を追加するか、さらに適切に追加することで実行できますtypo3conf/ext/your_ext/ext_localconf.php

$GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['tslib/class.tslib_content.php']                  = PATH_typo3conf.'ext/your_ext/xclass/class.ux_tslib_content.php';

次に、ファイルtypo3conf/ext/your_ext/xclass/class.ux_tslib_content.phpを作成し、次のように入力します。

<?php
class ux_tslib_cObj extends tslib_cObj {
    /**
     * date
     * Will return a formatted date based on configuration given according to PHP date/gmdate properties
     * Will return gmdate when the property GMT returns true
     *
     * @param   string      Input value undergoing processing in this function.
     * @param   array       stdWrap properties for date.
     * @return  string      The processed input value
     */
    public function stdWrap_date($content = '', $conf = array()) {
        $content = parent::stdWrap_date($content, $conf);
        $content = str_replace("Сентябрь", "Сентября", $content);
        return $content;
    }

}
于 2011-09-27T17:27:00.030 に答える