Convert CLDR Date/Time pattern to Ruby-compatible pattern
adamdebono opened this issue · 2 comments
I'm wondering if there is an easy way to pass the CLDR library one of its datetime patterns, and have it return a string that could be passed to strftime
. For example:
TwitterCldr::Formatters::DateTimeFormatter.pattern_to_ruby('yMd') # => '%m/%d/%y'
I currently have a set of date formats across various locale YAML files that I am using with I18n, as is standard in Rails apps and libraries. Essentially what I would like to be able to do is automatically generate these files instead of needing to manually maintain them.
I had a quick look through the source code and there doesn't appear to be anything like this currently, but I'm happy to be proven wrong. Based on this spec I assume there could be some sort of mapping created, e.g. { 'MM' => '%m', ... }
, that could then be used in a find-and-replace method.
Hey @adamdebono, thanks for asking about this 😄
Unfortunately the library doesn't have this functionality right now. Any attempt at adding it would have to be best-effort too, since CLDR offers some formatting options that Ruby does not. You could probably get ~90% of the way there. Ruby's strftime
also doesn't have the ability to produce i18n-aware strings, i.e. it won't know to emit "lunes" in Spanish instead of "Monday."
If you're interested in implementing this, it's probably best to distribute it in a separate gem.
Yep I thought that might be the case, thanks for the response.
While strftime
won't produce the locale-aware strings, I'm pretty i18n-rails
will? Which for my purposes is fine.
Since it's pretty specific for my project I might implement this internally for now. If I can get it working well enough it could be extracted out into a gem.