This content originally appeared on DEV Community and was authored by Kang-min Liu
Time::Verbal 1.1.1 made its way to CPAN.
This module dose one little things, that is to convert the time differece to a verbal format, rounded to some unit that "makes sense", just as how you would say such thing as a human.
my o = Time::Verbal->new();
say $o->distance( time(), time() - 4567 );
#=> about 1 hour
Besides the default English format, other 67 languages identified by these ISO language codes are supported:
ar bg bn-IN bs ca cy da de-AT de-CH de dsb el en-AU en-GB en-US eo es-AR es-CL es-CO es-MX es-PE es et eu fa fi fr-CA fr-CH fr fur gl-ES gsw-CH he hi-IN hi hr hsb hu id is it ja ko lo lt lv mk mn nb nl nn pl pt-BR pt-PT rm ro ru sk sl sr-Latn sr sv-SE sw tr uk vi zh-CN zh-TW
I don't know all these languages (nor their language codes), but Locale::Wolowiz does. Or, at least it is the library that does the translation, given a bunch of JSON files that contain the body of translations.
So here's how you say "about 1 hour" in Vietnamese:
my o = Time::Verbal->new( "locale" => "vi" );
say $o->distance( time(), time() - 4567 );
#=> khoảng 1 giờ
A default version of translations of all the above-mentioned 68 languages are provided with Time::Verbal
itself and is ready to use once installed properly -- a usual cpan
or cpanm
or cpm
command would suffice. However, in case some customize version is need because, say, you wish to provide better UX to whom spekas Vulcan variant of Kligon, you need to create a file named after the language code -- which can be arbitrary such as tlh-Vulcan
. You would create tlh-Vulcan.json
and put it under /app/i18n
, or really any directory of your choice, then do:
my o = Time::Verbal->new(
"locale" => "tlh-Vulcan",
"i18n_dir" => "/app/i18n"
);
say $o->distance( time(), time() - 4567 );
#=> Chaq wa' rep
Disclaimer -- I don't know if that's how Volcanized Kligon speaks. Don't take my example as if it is authentic.
To prepare the translation, take a look of the json files under the default i18n_dir
, which can be printed by running this oneliner:
perl -MTime::Verbal -E 'say Time::Verbal->new()->i18n_dir'
It shouldn't be difficult to grasp the structure of those translation files and produce a new one. It is however, very difficult to start describing the schema of thoes json file as an indolent developer.
The translations are accquired from rails-i18n project -- which is one of the first modules that does things like this.
Originally posted at https://gugod.org/2021/09/cpan-release-of-time-verbal/
This content originally appeared on DEV Community and was authored by Kang-min Liu
Kang-min Liu | Sciencx (2021-09-08T15:09:37+00:00) CPAN Release of Time::Verbal module. Retrieved from https://www.scien.cx/2021/09/08/cpan-release-of-timeverbal-module/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.