首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多语种网站,该如何处理?

多语种网站,该如何处理?
EN

Stack Overflow用户
提问于 2012-04-12 19:15:20
回答 5查看 5K关注 0票数 4

我有一个网站(Coldfusion),我想在上面提供多语言,但不知道什么是最好的方式来做到这一点。

我有两个计划:

1:

当然,所有内容(文本)都在数据库中。

如果用户想要一种不同的语言,用户可以单击一个链接/标志,这会将请求的语言放入会话变量中,例如: session.language = "es“

在数据库中我会有2列(每种语言有1列),然后选择属于'es‘的文本。

然后,每个页面都会向数据库发出请求,以获取属于session.language的文本。

优点:实现相对简单

缺点:从搜索引擎优化的角度来看,我不认为这是一个很好的选择。http:// www.domain.com/page.cfm将提供英语文本或西班牙语文本(或其他语言)。Google不会添加重复的URL

2:

对英语使用http:// www.domain.com/en/page.cfm,对英语使用http:// www.domain.com/es/page.cfm。

使用URL重写规则时,URL http:// www.domain.com/en/page.cfm中的语言值实际上是一个页面http:// www.domain.com/page.cfm? language =en

然后,url.language变量将从数据库中选择正确的语言。

优点:每种语言都有唯一的URL。良好的搜索引擎优化和谷歌索引。

缺点:实现起来有点困难。(我想)

或者有人有其他/更好的想法?

谢谢!!

EN

回答 5

Stack Overflow用户

发布于 2012-04-12 19:30:44

您应该首先检查浏览器标题"Accept-Language“中的默认语言(这是正确的标准方法),并且只提供链接(直观上看是正确的方法)作为替代。

在数据库中做这件事似乎不是很标准。假设你想使用MVC架构(模型-视图-控制器)。大多数软件在表示层(视图)中使用键(例如,与表示层一起,您有语言文件(在Java中,这通常是属性文件),这些文件只通过它们的文件名进行映射,并且可以由普通用户修改,而不需要任何特殊技能,例如没有计算机技能的专业翻译人员。当然,您可以将其放入数据库中,但这只是更多的工作,并将信息移出表示层。

有各种各样的库可以做到这一点。您应该为您的应用程序找到正常的应用程序。请编辑您的问题,以包括您用于开发应用程序的内容。(例如,JSP、Tapestry、Wicket、ASP、PHP等)例如,如果您想使用JSP,那么我建议您使用JSTL标记库的语言支持。或者,如果您使用的是Tapestry,我会向您推荐http://tapestry.apache.org/localization.htmlhttp://tapestry.apache.org/tapestry4.1/UsersGuide/localization.html

要查找它,您可以查找术语“国际化”,也就是"i18n",或“本地化”。(这两个术语的含义并不相同,但很少有人能正确使用它们,所以这两个术语都适用。http://www.w3.org/International/questions/qa-i18n)

票数 1
EN

Stack Overflow用户

发布于 2012-04-12 19:32:34

我会选择选项2。每个翻译都应该有自己的url。指向您的网站的链接将已经包含在预期的翻译中。

为了将翻译存储在数据库中,我不会将每个翻译放在单独的列中,而是将它们放在单独的表中:

表格帖子:

  • id
  • title_id
  • ...

表翻译:

  • label_id
  • value
  • country_code
  • language_code

title_id与label_id匹配的位置

这样,当添加新的翻译时,您就不必改变表结构了。这允许您对任何标签或文本进行无限翻译。

票数 1
EN

Stack Overflow用户

发布于 2012-04-12 23:00:04

为了有效地创建一个多语言站点,您需要为自己设置一个规则,即NO TEXT永远不会作为硬编码放在源代码中。它需要来自数据库和/或资源包。

来自数据库的文本

您需要确保存储数据的列是unicode,否则会出现重音字符问题。此外,不要为每种语言设置列,因为这是不可伸缩的,请按照@jan的建议进行操作,并有一个翻译表,其中的项以引用和语言为关键字。

资源包

您不会想要从数据库中获取所有的最后一点文本,因此您可以使用一个资源包。这是Paul Hastings博客中关于一些资源包解决方案的http://www.sustainablegis.com/blog/cfg11n/index.cfm?mode=entry&entry=FD48909C-50FC-543B-1FE177C1B97E8CC1链接,确实很旧。老实说,他的博客是关于这个主题的一个很好的资源。

关于你如何处理网址,不要做选项1,因为你很正确地确定,你会造成问题的SEO排名的页面,这将意味着用户不能正确分享或返回到页面。

有两种方法在URL中包含您在选项1中标识的语言代码。

Pros

  • 更易于配置

Cons

  • 您只有一个应用程序,这意味着当您添加更多语言时,您会增加该应用程序的复杂性和对该应用程序

内存的权重

或者,您可以针对每个应用程序使用不同的子域或域,例如es.yourdomain.com或yourdomain.es,它们都可以是相同的代码库

Pros

  • 每种语言都是一个独立的应用程序,这意味着它有自己的内存

Cons

  • 为配置

付出了更多努力

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10122441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档