一个关于时间的 Bug ,和中英文翻译有关

(Helperhaps) #1

上面两副图是我分别从官方论坛和中文论坛截的图。重点在 timeline 最下面的 ‘3天前前’ 和 post 右上角的 ’3天前‘,而官方英文论坛的分别是 2d 和 2d ago。其问题是中文翻译把 2d 翻译成了 2 天前,然而时间线那里的函数

const bottomAge = relativeAge(
    new Date(topic.last_posted_at), 
    { addAgo: true, defaultFormat: timelineDate }
);

中的 {addAgo: true} 会在翻译的后面加一个 ago(中文会加一个 前),就造成了这种情况。该如何解决呢

(咖啡白菊) #2

(帖子被作者删除,如无标记将在 24 小时后自动删除)

(咖啡白菊) #3

(帖子被作者删除,如无标记将在 24 小时后自动删除)

(Iminai) #4

对我也发现存在这个问题

(Helperhaps) #5

把那个前去掉是可以,但是一个 post 的右上角的会变成 ‘6天’这样的东西,所以有点纠结,既然站长知道那就行了

(咖啡白菊) #6

我一直主张尊重原著,灵活的尊重官方语言,原因就在这里。官方在很多地方都事先把后面的事情考虑在内,如果没有长远的目光,你很难理解官方为什么这么做,为什么这么说。

(咖啡白菊) #7

关于时间,我觉得国人基本都能看懂 h d 这样的英文简写,我看到许多国内大型站点 一般都是使用这样的简写,比如 7×24h ,这种简写字母结合网站内容,大家一般都能明白。

使用这种字母还有一个好处,那就是尽量弱化时间的概念,对于不那么活跃的论坛,如果大家看到都是几天前发的帖,都认为这是个死论坛,没人愿意发帖了。

毕竟,时间并不是内容的重要组成部分,论坛帖子都是按活动顺序排序的。尤其是以讨论为主的纯论坛,时间的作用更不那么明显(时效性话题例外)。简化掉不重要的因素,才能住内容中突出重点,让用户的眼球永远聚焦于内容。

当然,小时、分钟,秒,这样的中文也很简短,使用中文也并无不可。

但是,对于时间的翻译,一律千篇一律的 必须 年 月 日 俱全,那就完全没有必要了,2016年8月23日下午8点2分,不如 ,2016-08-23,20:23. 冗余的年月日不仅浪费了磁盘空间,浪费眼睛的浏览时间,还影响网站的加载速度。用户还会想,这家网站把我们用户都当成Sb, 谁不知道2016表示 年 呢?

(Erick Guan) #8

浏览器端用的是一个库 moment.js http://momentjs.com/docs/#/displaying/format/ 原来 @117 说的显示星期几都没法直接实现,就是因为库的限制了。

转换时间都是自动,不用担心这个问题。只有考虑视觉上会不会占空间和能不能一致。这个改起来很麻烦, @helperhaps 你对时间上的翻译有什么想法呢?

时间字符格式

有大致几种长度的:

绝对

  • xx月xx日
  • xx年xx月xx日(如果有一个老论坛迁移来呢?不显示年份合理吗?)
  • xx年xx月xx日 xx:xx
  • xx年xx月xx日上午xx点xx分xx秒(鼠标移动过去显示的,问题还不大)

相对

这里 Discourse 处理得并不好,比较乱。

  • x秒
  • x秒前
  • (以此类推)
  • 约x秒

原来用的是 < 1秒 这样,所以时间轴就正常。不过最好我们统一一个格式吧?

Discourse 的相对时间比较多,类似月份的处理起来英文比较容易误认,这是我最担心的

(咖啡白菊) #9

该有“年”的地方,绝对不能少,只是能省略年、月、日这些文字的时候,就省略吧。discourse的几个时间我以前大致看过,它好像在不同的地方突出的重点不同,时间的格式不尽相同,比如有的地方有采用月份大写,但这点中文的表述可能有点区别,我没仔细考虑过。

x秒,x秒前,实际上都能看懂,结合上下文和内容很容易理解。一个好的网站在排版和布局上,应该追求一种简约之美,应该懂得怎样突出重点,怎样引导用户聚焦于重点,多余的文字,一个都不能要,反复出现的文字,最好借用符号代替。

2赞
(Helperhaps) #10

到还没什么想法,因为看了源码及翻译,就 post 中是没有 ago: true 但是中文翻译成 xx 前,时间轴中有,还是翻译成 xx前,再加上 ago: true 中的 ago,就成了 ’前前‘,也不能仅因为这个原因,就不让 discourse 复用这个 x_days 的翻译。简单粗暴的话,直接去掉 x_days 翻译中的 ‘前‘,这样的话,post 右上角就没有你 ago了,也和英语国家的相称,但是就不知道好不好了(个人感觉也不太好)

另外关于 @chituma 说的,我没啥想法,不求有功但求无过,应该是现在应该考虑的。

2赞
(咖啡白菊) #11

我赞同@helperhaps的看法。

目前时间的问题,主要就是相对时间的表达,可选建议方案有二:

一、如果把相对时间翻译成中文的,秒、分钟、小时,天——必须要加个“前”字才妥当,这才符合中文用户的阅读习惯,但这样是否可行?英文之所以在很多地方省略 ago, 那是因为人家是用的是 s m h d 这样的简写,如果反复出现 ago ,就失去了简写的必要,显得不伦不类。

二、也可以是用是用官方的s m h d 这样的英文简写。站长最担心的可能是用户看不懂,其实完全没有必要,因为只要鼠标移过去,就会显示完整的时间。

discours 的设计有一个理念,就是把许多占用空间的东西都进行了处理,你需要点击一下或鼠标移过去,才会显示。比如点击个人头像才能看到个人信息,点击分类按钮才能看到分类菜单,这一点明显区别于传统论坛,主要为了更好的移动体验。

加之这些东西只是为内容服务的,如果反复出现,实属没有必要,还会让人视觉疲劳。你需要它的时候,它才会出现,你不需要它的时候,它也不会碍你的眼睛,影响你的阅读。又比如,网站右上角的按钮,根本就没有文字显示,你需要移过去,才会知道那是什么。我想英文的 s m h d不值代表时间的简写,更相当于图标和符合的作用,你看的懂最好,看不懂就把鼠标移过去就是了。因为他们并非偶然出现的生僻东西,二是每个页面经常出现,非常有用个图标或代号的必要。

(咖啡白菊) #12

我不怕当历史的罪人,只怕自己成为历史。

(Erick Guan) #13

这个我看了下是我弄错了 wrap_ago 的一个翻译,修了。

其实别人也不懂 ago 是干嘛的…时间有点乱,估计过一段时间官方会简化一下。

@chituma 要不要先整理下英文的时间翻译,整理作为一个备选,然后我们放这个站试一试先?

1赞
(咖啡白菊) #14

站长厉害,最近开发了个Webhooks,我还不懂这个是什么,呵呵。

(Helperhaps) #15

果然是那个翻译,看样子,我看源码还是不够仔细啊,站长威武

(Erick Guan) #16

这个是 GSoC 项目啦。你可以去测试站玩…用用 RequestBin 就可以收了。

@helperhaps 让你翻源码就太辛苦你了…

(Helperhaps) #17

我都是能够自己解决就不提问了,所以去看看源码,不过啊 ES6 本就够人头疼的了,在加上 ember 就有点吃力了。

1赞