【问题标题】:How to format date elements (year, month, date) individually with CSS and Rails i18n?如何使用 CSS 和 Rails i18n 分别格式化日期元素(年、月、日)?
【发布时间】:2013-10-10 13:45:04
【问题描述】:

我们正在使用带有 i18n gem 的 Rails。这是相当标准的东西。

使用 i18n,您可以在 locales yml 文件中定义不同语言的日期格式。

例如,你可以有 en.yml

date:
    formats:
        long: ! '%-d %b %Y'

在你的视图文件中,你可以这样做

<span class="homepage_date"><%= l Date.today, format: :long %></span>

这一切都很好。它将输出“10 Oct 2013”​​字符串并将 CSS 样式应用于 整个字符串。

但是,我们需要使用不同的 CSS 类单独格式化日期元素(日期、月份、年份)。

例如,我们希望日期“10”使用细字体,月份“Oct”使用粗体,年份“2013”​​使用另一种字体。

在另一种语言中,格式可能不同,例如在中文中,我们希望所有 3 个元素(年、月、日)都使用相同的字体。

我不确定将 CSS 放在翻译 yml 文件中是否是个好习惯。

满足我们要求的最佳解决方案是什么?

谢谢。

【问题讨论】:

    标签: css ruby-on-rails rails-i18n


    【解决方案1】:

    你可以这样做

    date:
      formats:
        styled: ! '<span class="day">%-d</span> <span class="month">%b</span> <span class="year">%Y</span>'
    

    使用该格式

    <span class="date"><%= l Date.today, format: :styled %></span>
    

    然后为这些类指定 css

    .date .day {} ...
    

    【讨论】:

    • 感谢您的评论。我知道这种在翻译 yml 文件中嵌入 css 的方式。这样,格式和翻译就混合在一起了,尽管您可以争辩说格式是本地化工作的一部分。理想情况下,css 格式应保存在视图文件中。同样这样,它不是 DRY,因为 CSS 元素被写入 15-20 的翻译 yml 文件中。但是感谢您的评论。
    • @JeffChau 如果您有默认语言环境,则不必将其放入每个翻译文件中。只需将其放入默认值即可。
    • 看起来在视图文件中,我得写 ,否则网页上显示的是html,好像是直译一样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    相关资源
    最近更新 更多