Perl 模組 Time::Verbal

作者:   發佈於:  

關於把時間轉換成口語的 Perl 模組,由於覺得現有的都不是很滿意,因此自己寫了個: Time::Verbal

目前它的功能只是把兩個時間點差異用口語化的方式表現出來。主要的特點有 ① 捨去很小的單位,與 ② 完整的 i18n / l10n 支援兩項。

例如,中文:

> perl -MTime::Verbal -E '
  my $tv = Time::Verbal->new(locale => "zh-TW");
  say $tv->distance(time, time + 7**$_) for 1..10;'
不到一分鐘
一分鐘
6 分鐘
40 分鐘
5 小時
昨天
9 天
66 天
一年多
一年多

德文:

> perl -MTime::Verbal -E '
      my $tv = Time::Verbal->new(locale => "de");
      say $tv->distance(time, time + 7**$_) for 1..10;'
weniger als eine Minute
eine Minute
6 Minuten
40 Minuten
etwa 5 Stunden
ein Tag
9 Tage
66 Tage
mehr als ein Jahr
mehr als ein Jahr

希伯來文:

> perl -MTime::Verbal -E '
      my $tv = Time::Verbal->new(locale => "he");
      say $tv->distance(time, time + 7**$_) for 1..10;'
פחות מדקה אחת
דקה אחת
6 דקות
40 דקות
בערך 5 שעות
יום אחד
9 ימים
66 ימים
מעל שנה אחת
מעל שנה אחת

內附了 60 餘種語言的翻譯。翻譯的內容是取自 rails-i18n 計畫。也可以自定語言的翻譯內容。

目前實做的這個 distance 方法基本上就是 Rails helper 中的 distance_of_time_in_words,不過這個名稱空間還不賴,可以陸續再補上其他部份。