标记内容系统 - 使用i18n

时间:2010-01-05 15:30:23

标签: database internationalization tagging

想法是在用户和内容(图像,视频,帖子)之间建立标记系统 有点像SO上的标记系统,有问题。

我喜欢SO上的成就系统,这意味着经过一定的积分 用户可以开始制作他/她自己的标签。我的系统的想法相同

我当前的表设计看起来像

Tag           UserTag       User
---           -------       ----
tag_id        user_id       user_id
tag_name      tag_id        username
usage_count                 .... 

它让我想到了这个问题。

如何为不同语言的内容设置标记系统。

  • 但同时能够使用不同语言的标签搜索相同的内容。
  • 使用不同语言为同一标签自动完成

当我使用自动填充时,我搜索标签名称,例如用户正在键入的字符。

E.g。我有一个英文名为“nightclub”的标签

如果他们正在标记翻译将是“discothèque”

,那么还要用法语

或者没有办法做到这一点,只是让人们用不同的语言制作标签。

2 个答案:

答案 0 :(得分:2)

是的,你可以。但请注意,一种语言中的某些单词可能在其他语言中有多个翻译。

您可能有一个languages表,一个只有tags的{​​{1}}表,以及一个包含tag_idlanguage_idtag_id的多个表格。 {1}}。

就像我之前所说的,当人们想要进行他们自己的语言允许的改进时,你可能会遇到问题,但其他语言则不然。为了留在法国的例子,谈论面包,你可能有'长棍面包','flûte','recuit','demi-recuit'等标签,而英语只有一个'面包'标签。然后标签之间的映射显着复杂。但这是一个普遍的翻译问题,不仅仅是在编程领域。


关于您的评论:折衷方案是添加“tag_related_to_tag”表,允许在标签之间进行耦合。用户可以使用不同的语言判断哪个标签与哪个标签相关。这样可以在最小的复杂性下实现最大的灵活性,但是需要一些管理(否则你可能会让恶意用户在标签之间产生意想不到的关系,从而破坏了系统的实用性。)

这实际上是我想要实现的网站,它有一个非常狭窄的领域(坚忍的哲学)和目标公众。如果该领域过于宽泛,则可能效率很低。

答案 1 :(得分:1)

有趣的问题!只是一些想法(不是一个完整的解决方案,更多是一组问题):

一种简单的方法是使用内部标记ID,并为每种语言提供本地化名称。

如果尚未创建本地化名称,您可能需要以“主要”语言(通常是英语)或标记创建的语言回退到标记名称。

翻译需要由用户完成并且知道两种语言,自动翻译是IMO不精确的。那么可能是用户权限(必须奖励?)来重命名标签。

所有语言是否相同,或者标签是否仅以大多数用户理解的“主要语言”创建,并且单独添加了翻译? (后者看起来不太公平,但可能会让事情变得更容易)

您需要能够合并标签 - 例如当用户独立创建“discothèque”和“nightclub”时。

我是否只看到以我的语言提供的标签,或者我是否可以看到其他语言中没有翻译为我语言的标签?我可以搜索其他语言的标签吗?

标记名称是否包含在查询字符串中?当我将其发送给美国的朋友时,我的德语查询链接是否会正常工作?

如何解决有关标签含义的争议?示例:最接近德语的翻译是夜总会的“Nachtclub”和“discothèque”的“Diskothek”。但在德语中,“Nachtclub”与“Diskothek”完全不同(尽管存在一些重叠)。