PHPで1幎なしで日付をロヌカラむズするこずに関する長い話

簡単なタスクから始めたしょう。ロヌカラむズされた日付を衚瀺したす。1日、ロケヌル蚀語の月のフルネヌム、および1幎が必芁です。 最近では、非垞に簡単です。 PHPには独自のi18n拡匵intlがあり、バヌゞョン5.3以降、カヌネルに組み蟌たれおいたす。 そしお、このintlにはIntlDateFormatterクラスがあり、このクラスにはいく぀かのフォヌマットが事前に定矩されおいたす。 LONG圢匏を䜿甚したす。

 <?php foreach (['en_US', 'ru_RU', 'es_ES', 'fa_IR'] as $locale) { $formatter = new IntlDateFormatter( $locale, IntlDateFormatter::LONG, IntlDateFormatter::NONE, 'Europe/Moscow' ); echo $formatter->format(1455111783), PHP_EOL; } 

結果 

 February 10, 2016 10  2016 . 10 de febrero de 2016 ۱۰ ﻑﻭﺭیﻩٔ ۲۰۱۶ ﻡ. //   - RTL-,        

これたでのずころ良い。 そしお、条件を少し倉曎しおみたしょう。「 ロヌカラむズされた日付を衚瀺したす 。 ロケヌル蚀語には日ず月のフルネヌムが必芁です 。」 ぀たり、幎を衚瀺する必芁はありたせん。

望たしい結果は次のようになりたす。

 February 10 10  10 de febrero ۱۰ ﻑﻭﺭیﻩٔ ﻡ. //     ,    ,  ,    

実際、タスクは芋た目ほど単玔ではなくなりたした。

正盎なずころ、この投皿党䜓はこのタスクに぀いおのみか぀排他的になりたす。

ちょっず埅っお、どうしおこれが必芁なの


特に必芁なフォヌマットに驚く人もいるかもしれたせん。 これは、タむムスタンプ付きのむベントテヌプの圢匏で衚瀺される䜕らかの皮類のシステムで䜜業しおいる堎合、非垞に明癜です。 しかし、そうでない堎合は、Twitterを芋おみたしょう。

Twitterの日付圢匏

ツむヌトが最近公開された堎合、Twitterは適切にフォヌマットされた時間間隔を衚瀺したす。 ツむヌトがかなり前に発生した堎合、適切にフォヌマットされた日付が衚瀺されたす。 さらに、ツむヌトが今幎公開された堎合、その日には幎がありたせん。 そしおそれは玠晎らしいこずです、それは良いUXの䞀郚です。

これは、ナヌザヌがこれがい぀発生したかをすばやく理解するずいう考え方です。 䜙分なデヌタはノむズです。

これで理由がわかりたす。 タスクに戻りたしょう。

わかりたした。぀たり、これには別の圢匏 LONGなどが必芁ですが、幎はありたせんよね


そうではありたせん。 IntlDateFormatter 、 FULL 、 LONG 、 MEDIUMおよびSHORT 4぀の暙準圢匏のみがあり、それぞれに幎がありたす。

 <?php $formats = [ IntlDateFormatter::FULL, IntlDateFormatter::LONG, IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT, ]; foreach ($formats as $format) { $formatter = new IntlDateFormatter( 'en_US', $format, IntlDateFormatter::NONE, 'Europe/Moscow' ); echo $formatter->format(1455111783), PHP_EOL; } 

結果 

 Wednesday, February 10, 2016 February 10, 2016 Feb 10, 2016 2/10/16 

少し考えおみるず、開発者、蚭蚈者、たたはマネヌゞャヌの頭に浮かぶ可胜性のあるカスタム圢匏ごずに定数を事前に定矩するこずは䞍可胜であるこずが明らかになりたす。

ハ、私はちょうど簡単な解決策を思い぀いた


おい 掚枬しおみたしょう LONGで曞匏蚭定した埌に䜕が起こるのかを1幎だけ枛らしたいですか そうだず思いたす。 䟋がなければ、問題が䜕であるかを理解するこずは困難です。 芋おみたしょう。

私たちが持っおいるこずを思い出させおください。

 February 10, 2016 10  2016 . 10 de febrero de 2016 ۱۰ ﻑﻭﺭیﻩٔ ۲۰۱۶ ﻡ. 

幎を切り取りたす。

 February 10, 10  . 10 de febrero de ۱۰ ﻑﻭﺭیﻩٔ ﻡ. 

,および.ずdeようなこれらすべおの残留アヌティファクトず、間違いなく最埌の行にある他のものを参照しおください。

したがっお、いいえ、これは厳密な決定でさえありたせん。 ちなみに、これに぀いお恥ずべきこずは䜕もありたせん。これは、私の最初の「迅速な決定」でもありたした。

さお、そこにはパタヌンがありたす、パタヌンを䜿甚したしょう


はい、 IntlDateFormatter実際には内郚的にパタヌンでのみ機胜しフォヌマット定数は単に察応するパタヌンに倉換されたす、䜜成時に独自のパタヌンを指定できたす。

パタヌンは、いく぀かの事前定矩された文字シヌケンスで構成されたす 。

芋おみたしょう...「d MMMM」パタヌンが必芁なようです。

 <?php foreach (['en_US', 'ru_RU', 'es_ES', 'fa_IR'] as $locale) { $formatter = new IntlDateFormatter( $locale, IntlDateFormatter::NONE, IntlDateFormatter::NONE, 'Europe/Moscow', null, "d MMMM" ); echo $formatter->format(1455111783), PHP_EOL; } 

結果 

 10 February 10  10 febrero ۱۰ فوریهٔ 

よさそう ちょっず埅っお、それは䞀䜓䜕だ ああ...

思い出させお

 February 10 10  10 de febrero ۱۰ ﻑﻭﺭیﻩٔ ﻡ. 

いいえ、気にしないで、ただの偶然です。 これは、指定したパタヌンが日付の郚分日ず月だけでなく、それらが進むべき順序ず区切り文字も指定したためです。 「日番号を最初に、次に月のフルネヌム、それらの間にスペヌスを入れおください」ず蚀ったように。 すべおのロケヌル。 これはたったくナンセンスです。

真実は、 ロケヌルは蚀語であるだけでなく、日付の曞匏蚭定パタヌンでもあるずいうこずです 。 そしお、パタヌンは結果に含たれるだけでなく、それをどのような順序で配眮するかです。

 <?php foreach (['en_US', 'ru_RU', 'es_ES', 'fa_IR'] as $locale) { $formatter = new IntlDateFormatter( $locale, IntlDateFormatter::LONG, IntlDateFormatter::NONE, 'Europe/Moscow' ); echo $formatter->getPattern(), PHP_EOL; } 

結果 

 MMMM d, y d MMMM y ''. d 'de' MMMM 'de' y d MMMM y G 

芋お、圌らはすべお異なっおいたす。

しかし、既補の゜リュヌションが必芁です 圌がそうではないずいうこずはありえない それずも...


ため息はい、私はたったく同じず思った。 PHPで、開発された゚コシステムず最も匷力なコミュニティの1぀を備えた成人蚀語では、基本的な機胜がない可胜性がありたすか 悲しいが本圓可胜。

少なくずも1぀の非垞に重芁なこずがintlありたせんintlのDateTimePatternGeneratorクラスです。 それは、私たちの小さな問題ずそのような他のすべおを解決するために正確に䜜られおいたす。

埅っお、埅っお、どんなICUなの


ICUは「Unicodeの囜際コンポヌネント」です。Unicodeの囜際化コンポヌネントです。

ICU Webサむトからの匕甚。

ICUは、゜フトりェアアプリケヌションのUnicodeおよびグロヌバリれヌションサポヌトを提䟛する、成熟した、広く䜿甚されおいるC / C ++およびJavaラむブラリのセットです。 ICUは広く移怍可胜で、すべおのプラットフォヌム䞊で、C / C ++ずJava゜フトりェア間で同じ結果をアプリケヌションに提䟛したす。

...

曞匏蚭定遞択したロケヌルの芏則に埓っお、数倀、日付、時刻、通貚額を曞匏蚭定したす。 これには、月ず日の名前の遞択した蚀語ぞの翻蚳、適切な略語の遞択、フィヌルドの正しい順序付けなどが含たれたす。 このデヌタは、Common Locale Data Repositoryからも取埗されたす。

芁するに、これはラむブラリのこのようなクヌルなセットです。 intl拡匵機胜自䜓は、魔法の実行方法を認識しおいたせん。これらのラむブラリのプロキシのようなものです。

 $ php -i | grep intl -A5 intl Internationalization support => enabled version => 1.1.0 ICU version => 56.1 ICU Data version => 56.1 

IntlDateFormatterを䜿甚するには、システムにICUをむンストヌルする必芁がありたすたたは、最初にICUでPHPをビルドする必芁がありたす。 ICUのバヌゞョンが異なるず、フォヌマット結果も異なりたす。

 $ dpkg -S icu libicu52:amd64: /usr/lib/x86_64-linux-gnu/libicule.so.52.1 libicu52:amd64: /usr/lib/x86_64-linux-gnu/libicule.so.52 libicu52:amd64: /usr/lib/x86_64-linux-gnu/libicutest.so.52 ... 

バヌゞョン52.1がシステムにむンストヌルされおおり、䞊蚘のようにPHPは56.1からビルドされおいたす。これは正垞です。

なるほど。 あなたはいく぀かのDateTimePatternGeneratorに蚀及したした、教えおください


正確には、 DateTimePatternGeneratorは、私の意芋では、日時のフォヌマットに関するものの䞭でICUで最も魔法のようなものです。

ICUりェブサむトからの別の匕甚

このクラスは、「yy-MM-dd」などの日付圢匏パタヌンの柔軟な生成を提䟛したす。

ナヌザヌは、連続したパタヌンを远加しおゞェネレヌタヌを構築できたす。 それが完了するず、「スケルトン」を䜿甚しおク゚リを䜜成できたす。これは、目的のフィヌルドず長さだけを含むパタヌンです。 ゞェネレヌタは、そのスケルトンに察応する「最適な」パタヌンを返したす。

通垞、このクラスは特定のロケヌルのデヌタで事前に構築されおいるため、人々が䜿甚する䞻なメ゜ッドはgetBestPatternStringスケルトンです。 ただし、ゞェネレヌタは他のデヌタから盎接構築するこずもできたす。

これはたさに私たちが必芁ずするものです いわゆる「スケルトン」フォヌマット結果に含たれる日付の郚分をgetBestPatternメ゜ッドにgetBestPatternするず、最も適切なパタヌンが返されたす。これで、䜕をすべきかがすでにわかっおいたす。これをIntlDateFormatter枡したす。

どのように機胜するか。

 $skeleton = "MMMMd"; foreach (['en_US', 'ru_RU', 'es_ES', 'fa_IR'] as $locale) { $pgen = new IntlDateTimePatternGenerator($locale); $pattern = $pgen->getBestPattern($skeleton); $formatter = new IntlDateFormatter( $locale, IntlDateFormatter::NONE, IntlDateFormatter::NONE, 'Europe/Moscow', null, $pattern ); echo $formatter->format(1455111783), PHP_EOL; } 

結果おそらく次のようになりたす

 February 10 10  10 de febrero ۱۰ ﻑﻭﺭیﻩٔ ﻡ. 

ナフ ダダッド、私は愚かに「望たれる結果」ブロックをコピヌしたした。 実際、䜕がそこにあるのかわかりたせんが、そうなるこずを望みたす。

では、今すぐカスタム圢匏を䜿甚したい堎合はどうすればよいですか


その結果、2番目の明確な決定に至りたした。プロゞェクトがサポヌトする各ロケヌルの各カスタムパタヌンを含む構成を生成するこずです。 そしお、新しいロケヌルが衚瀺されるたびにそれを行いたす。

これは簡単なスニペットです。

 <?php // ... foreach ($locales as $locale) { $pattern = <<<CONFIG '%s' => [ 'medium_no_year' => "%s", // %s 'long_no_year' => "%s", // %s ], CONFIG; $mediumF = new IntlDateFormatter($locale, IntlDateFormatter::MEDIUM, IntlDateFormatter::NONE); $longF = new IntlDateFormatter($locale, IntlDateFormatter::LONG, IntlDateFormatter::NONE); printf( $pattern, $locale, $mediumF->getPattern(), $mediumF->format(1455111783), $longF->getPattern(), $longF->format(1455111783) ); } 

その結果、次のようになりたす

  'en_US' => [ 'medium_no_year' => "MMM d, y", // Feb 10, 2016 'long_no_year' => "MMMM d, y", // February 10, 2016 ], 'ru_RU' => [ 'medium_no_year' => "d MMM y ''.", // 10 . 2016 . 'long_no_year' => "d MMMM y ''.", // 10  2016 . ], 'es_ES' => [ 'medium_no_year' => "d MMM y", // 10 feb. 2016 'long_no_year' => "d 'de' MMMM 'de' y", // 10 de febrero de 2016 ], 'fa_IR' => [ 'medium_no_year' => "d MMM y G", // ۱۰ فوریهٔ ۲۰۱۶ م. 'long_no_year' => "d MMMM y G", // ۱۰ فوریهٔ ۲۰۱۶ م. ], 

次に、これらすべおの行を手動で調べお、幎の衚瀺を担圓する郚分を削陀する必芁がありたす。

  'en_US' => [ 'medium_no_year' => "MMM d", // Feb 10 'long_no_year' => "MMMM d", // February 10 ], 'ru_RU' => [ 'medium_no_year' => "d MMM", // 10 . 'long_no_year' => "d MMMM", // 10  ], 'es_ES' => [ 'medium_no_year' => "d MMM", // 10 feb. 'long_no_year' => "d 'de' MMMM", // 10 de febrero ], 'fa_IR' => [ 'medium_no_year' => "d MMM", // ۱۰ فوریهٔ م. 'long_no_year' => "d MMMM", // ۱۰ فوریهٔ م. ], 

たくさんのロケヌルがあるずき、それは倧倉な仕事になりたす、私を芚えおおいおください 静かな叫び声が聞こえたす 。

それだけではありたせん。 そのような日付を時間ずずもに衚瀺する堎合は、2倍のパタヌンを生成する必芁がありたす。 別々にフォヌマットされた日付ず時刻を取埗しお結合するこずはできないからです。 日付の最埌に、最初に、たたは途䞭で時間を远加したすか

 <?php foreach (['en_US', 'ru_RU', 'es_ES', 'fa_IR'] as $locale) { $pattern = <<<CONFIG '%s' => [ 'medium_no_year-short' => "%s", // %s 'long_no_year-short' => "%s", // %s ], CONFIG; $mediumF = new IntlDateFormatter($locale, IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT); $longF = new IntlDateFormatter($locale, IntlDateFormatter::LONG, IntlDateFormatter::SHORT); printf( $pattern, $locale, $mediumF->getPattern(), $mediumF->format(1455111783), $longF->getPattern(), $longF->format(1455111783) ); } 

結果 

  'en_US' => [ 'medium_no_year-short' => "MMM d, y, h:mm a", // Feb 10, 2016, 2:43 PM 'long_no_year-short' => "MMMM d, y 'at' h:mm a", // February 10, 2016 at 2:43 PM ], 'ru_RU' => [ 'medium_no_year-short' => "d MMM y ''., H:mm", // 10 . 2016 ., 14:43 'long_no_year-short' => "d MMMM y ''., H:mm", // 10  2016 ., 14:43 ], 'es_ES' => [ 'medium_no_year-short' => "d MMM y H:mm", // 10 feb. 2016 14:43 'long_no_year-short' => "d 'de' MMMM 'de' y, H:mm", // 10 de febrero de 2016, 14:43 ], 'fa_IR' => [ 'medium_no_year-short' => "d MMM y G،‏ H:mm", // Û±Û° فوریهٔ Û²Û°Û±Û¶ م.،‏ Û±ÛŽ:ÛŽÛ³ 'long_no_year-short' => "d MMMM y G، ساعت H:mm", // Û±Û° فوریهٔ Û²Û°Û±Û¶ م.، ساعت Û±ÛŽ:ÛŽÛ³ ], 

はい、その幎の責任郚分を削陀したす。

  'en_US' => [ 'medium_no_year-short' => "MMM d, h:mm a", // Feb 10, 2:43 PM 'long_no_year-short' => "MMMM d, 'at' h:mm a", // February 10, at 2:43 PM ], 'ru_RU' => [ 'medium_no_year-short' => "d MMM, H:mm", // 10 ., 14:43 'long_no_year-short' => "d MMMM, H:mm", // 10 , 14:43 ], 'es_ES' => [ 'medium_no_year-short' => "d MMM H:mm", // 10 feb. 14:43 'long_no_year-short' => "d 'de' MMMM, H:mm", // 10 de febrero, 14:43 ], 'fa_IR' => [ 'medium_no_year-short' => "d MMM،‏ H:mm", // Û±Û° فوریهٔ،‏ Û±ÛŽ:ÛŽÛ³ 'long_no_year-short' => "d MMMM، ساعت H:mm", // Û±Û° فوریهٔ، ساعت Û±ÛŽ:ÛŽÛ³ ], 

はい、あなたはそれを芋るだけです、ペルシア語のカンマでさえ普通の「私たちの」コンマではありたせんが、،、あなたは別々の日付ず時刻から結果を収集する方法を正確に掚枬するこずはできたせん。

しかし、PHPの䞖界の誰もがこれをどのように行うのでしょうか


これは信じがたいこずですが、 圌らは日付のロヌカラむズに぀いおたったく心配しないか、間違っおいたす。

PHPで䜜成されたいく぀かのCMSの゜ヌスコヌドを調べたした。

これはフレヌムワヌクのタスクではないず考えおいるので、フレヌムワヌクを芋たせんでした。 ただし、䜕らかの基本的なサポヌトがあるかもしれたせん... 実際、私はYii2を詊しおみたしたが、 玔粋なintl䜿甚を掚奚しおいたす。 それでは、より良いCMSを入手したしょう。

Drupal


最初の怜玢で、私は興味をそそるタむトルの驚くべきチケットに出くわしたした-「日付の囜際サポヌトが壊れおいたす、それを削陀しおください」。 ロルスト そしお、これは冗談ではありたせん、圌らは本圓にそれをしたした。

intlは削陀されたした

䞀般に、それらはほが同じ方法で日付をフォヌマットする問題を解決したすカスタム構成のパック
、ただし、パッチスクリヌンショットを参照の前に、ロヌカラむズパタヌン専甚のintlキヌがありたした。 そしお今、圌らは気にしたせん。

たた、正しく理解した堎合私はDrupalのアクティブナヌザヌではありたせん、CMSをむンストヌルした埌、各ナヌザヌはこれらすべおのパタヌンをペンで手動で登録する必芁がありたす。 ロケヌルごず。 たあ、たたはそこに私が知らない䜕かがありたすが、それはそのように芋えたす。

8.1で行われる方法は次のずおりです。

日付圢匏8.1

しかし、バヌゞョン9.xでは

日付圢匏9.x

圌らはただこのブランチからintlキヌをカットできおいないようです

䞀般的に、これはそれほど悪いこずではありたせんが、CMSナヌザヌずしお、どのような皮類の日付フォヌマット方法が䜿甚されおいるかを知るために、考えられるすべおの文化を調査したくありたせん。 このすべおの䜜業はすでにCLDRで行われおいたす。 もちろん、カスタムパタヌンが必芁な堎合もありたすが、私が同意するのは、結果ずしお衚瀺する日付ず時刻の郚分を正確に瀺すこずだけです「日ず月のみ、お願いしたす」たたは「芪切にしおください。秒」。

ワヌドプレス


私はWordPressずほが同じ関係を持っおいたすが、アクティブナヌザヌではないため、Githubで怜玢を䜿甚したした。 ここで関心のある䞻なfunctions.phpは、 functions.php date_i18nのようfunctions.php ずころで、皆さん、wtf5.2k行のコヌドの関数を含むファむル真剣に既に2016幎がありたす。

wordpress date_i18n

私は正盎に、それがどのように機胜するかを理解しようずしお30分を費やしたした。 しかし...しかし...はい、それを芋おください。

wordpress date_i18nの内容

Goddamn ...芁するに、それは確かに正しく実装された日付のロヌカラむズのようには芋えたせんが、少なくずもdate_formatためです。 圌らはもはや月ず曜日の名前をロヌカラむズしようずしおいるようです。 私が間違っおいる堎合、鑑定家は私を修正したす。

Joomla


ゞュムラにはたったく觊れたせんでした。 したがっお、スキヌムは同じです。

最終的には、各ロケヌルに蚭定する必芁がある事前定矩されたフォヌマットの束であるDrupalずほが同じです。

デフォルトのむンストヌルのen-GB

en-GB Joomla蚭定

これらの手玙を芋たすか Jumlaはdate_format 他の倚くの堎合ず同様に䜿甚し、 intlは䜿甚しないこずを教えおくれたす。 それは正圓化されたすか 私の意芋では、いいえ。 カヌネルにはバヌゞョン5.3のintlが含たれおおり、既にダヌド7にPHP 7があり、最新のコヌドの最小芁件は5.5です。 ぀たり、フレヌムワヌクがサヌドパヌティの拡匵機胜や蚀語の最新バヌゞョンのチップを䜿甚しない堎合、コヌドがアむロンでも動䜜するはずであり、すでに叀いアむロンでコヌドを実行するナヌザヌがすでに倚くいるので、私は完党に理解しおいたすバヌゞョン。 しかし、これは明らかにそうではありたせん。 私たちはそれを「レガシヌ」たたは「技術的矩務」ず呌びたす。さもなければ䜕ずか続けたす。

Modx革呜


transport.core.system_settings.php



get.class.php



modifier.date_format.php



strftimeはdate_format 正しいロヌカリれヌションの誀った感芚を䞎えるフォヌマットがありたすよりも少し良く聞こえたすが、ロヌカラむズに぀いお話すずきは䜕もありたせんが、この関数は必芁なこずをしたせん。

Magento2


Magentoは垞識的なCMSではなく、eコマヌスプラットフォヌムですが、広く知られおいるほか、独自のフレヌムワヌクも備えおいたす。 したがっお、䜕があっおも。

そしお、これが私のレビュヌで日付のロヌカラむズがほが正しく行われる唯䞀のコヌドベヌスであるず蚀わざるを埗たせん これはIntlDateFormatterを䜿甚しお出䌚った唯䞀のコヌドであり、さらに、曞匏蚭定コンポヌネントの基瀎ずしお䜿甚されたす。



しかし、圌らのコヌドは完璧ではありたせん。 Timezone.phpを調べたす。



幎なしで日付をフォヌマットしようずする堎所を芋぀けるこずができたせんでした。 しかし、圌らは少し前にやったのず同じ間違いを犯しおいるように感じたす。「長い幎の日付」をフォヌマットするずきに幎を眮き換えようずしおいたす。 かどうか 私は通垞の第䞀人者ではありたせん先読みず埌読みに粟通しおいたすがので、 getDateFormatWithLongYearからコヌドを実行しお、䜕が起こるかを確認したいだけです。

 <?php foreach (['en_US', 'ru_RU', 'es_ES', 'fa_IR'] as $locale) { $dateFormat = (new \IntlDateFormatter( $locale, \IntlDateFormatter::SHORT, \IntlDateFormatter::NONE ))->getPattern(); $formatWithLongYear = preg_replace( '/(?<!y)yy(?!y)/', 'Y', $dateFormat ); $formatter = new \IntlDateFormatter( $locale, \IntlDateFormatter::NONE, \IntlDateFormatter::NONE, null, null, $formatWithLongYear ); echo $formatter->format(1455111783), PHP_EOL; } 

結果 

 2/10/2016 10.02.2016 10/2/2016 ۲۰۱۶/۲/۱۰ م. 

成功のようです さお、時々このトリックが機胜したす。 ここでは、圌らがこのように倒錯しおいるずいう事実がより重芁です。 これは、PHPにたったく同じパタヌンゞェネレヌタヌがないこずのもう1぀の確認です。

たた、 getDateTimeFormatは明らかな間違いです。 日付ず時刻のパタヌンを連結したす。 いいえ、おい、日付ず時刻が衚瀺される順序はすべおのロケヌルで同じではありたせん。これはすでに䞊で芋たした。

こちらもご芧ください 。 ずにかく玠晎らしい仕事、Magento

あなたが最初に問題に気づいたず蚀いたいですか


たったくありたせん。 HHVMの連䞭はこのゞェネレヌタヌを長い間移怍しおいたす-https ://github.com/facebook/hhvm/commit/bc84daf7816e4cd268da59d535dcadfc6cf01085 尊敬する
たた、PHPトラッカヌにバグがありたす-https : //bugs.php.net/bug.php? id= 70377「DateTimePatternGeneratorをintlに远加しおください」。 ずころで、あなたもこの問題の圱響を受けおいる堎合は投祚しおください。 突然、この投祚は本圓に䜕かを意味したす。 〜ずころで、CSRFに察する保護はありたせん〜。

誰でも批刀できたす。 自分で取っおやりたす


たあ、䞀般的に、コミュニティの泚意を問題にintl 、䞍足しおいるものをintlに远加するように開発者の1人に頌もうずするいく぀かのかなり哀れな詊みの埌、私はそうしたしたintl ://github.com/ksimka/intl_dtpg 本質的に唯䞀の関数関数たたはクラスメ゜ッドの圢匏を実装するこの拡匵機胜は、「この日付ず時刻の郚分のセットに最も適したパタヌンを芋぀けたす」。 同じDateTimePatternGenerator::getBestPattern このクラスにはただ倚くの興味深いこずがありたすが、個人的には、今のずころこのメ゜ッドのみが非垞に䞍足しおいたす。

しかし、問題は、私がC ++たたはCのいずれかを急いでいないずいうこずです。したがっお、あなた自身の危険ずリスクでそれを䜿甚しおください実装埌、すべおがそこでうたくいくかどうかを教えたす。 拡匵機胜は、examples + google + stackoverflowメ゜ッドを䜿甚しお、PHPCPPに基づくC ++で蚘述されおいたす。 したがっお、どんな改善も倧歓迎です。

䞀般に、珟圚、PHPコア開発チヌム、port、pliz、誰か、 intlこれらの欠萜郚分、たたは少なくずもzadolbat PHP開発者からのリク゚ストがありたす。 goを匷制的に蚓緎するず脅しお、私はあなたを匷制したず蚀うこずができたす。

それだけです 最埌たで読んでくれおありがずう

Source: https://habr.com/ru/post/J278673/


All Articles