【问题标题】:How to display the internationalization "second"/"seconds" string for a number?如何显示数字的国际化“秒”/“秒”字符串?
【发布时间】:2014-05-22 17:01:24
【问题描述】:

我正在使用 Ruby on Rails 4,给定一个数字,我想显示该数字的国际化“秒”/“秒”字符串。也就是说,我有一个数字(例如,1 或 20),我想显示 1 second20 seconds(英文)。

我知道date helpers,但似乎没有任何方法适合我的情况。我怎样才能做到这一点?

【问题讨论】:

  • 您的问题具有误导性。起初,听起来你想要国际化。然后通过呈现secondseconds,听起来你只想要英语。
  • @sawa - 我不想要英语,甚至支持所有其他语言。例如,以下是否正确(注意:我使用的是 Rails 提供的翻译字符串)? number = 3; number == 1 ? t('datetime.distance_in_words.x_seconds.one') : t('datetime.distance_in_words.x_seconds.other', :count => number).
  • t 不为您处理复数形式吗?它必须,它根本没有任何意义。我使用 gettext 但我假设默认的 t 内容至少有一点意义。
  • @mu 太短 - 你是对的:t('datetime.distance_in_words.x_seconds', :count => number)。发布答案,我会接受。

标签: ruby-on-rails ruby datetime ruby-on-rails-4 internationalization


【解决方案1】:

通常的 t 函数最终会在 i18n gem 的 translate 方法中结束。 translate,就像任何明智的 i18n/l10n 工具一样,已经知道当前语言环境的复数规则。这意味着你应该告诉翻译系统你想要哪个消息/字符串,你有多少,比如:

t('message-identifier', :count => n)

然后t 将在当前语言环境中为n 事物使用适当的复数规则。

我使用 gettext 来满足我的所有翻译需求,它的行为方式就是这样。但是t 也不可能以这种方式工作;它必须以这种方式工作,否则完全没用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 2019-02-16
    • 2022-06-22
    • 2012-05-13
    相关资源
    最近更新 更多