相关疑难解决方法(0)

最佳实践多语言网站

我已经在这个问题上苦苦挣扎了好几个月,但我还没有遇到过需要探索所有可能的选择的情况.现在,我觉得是时候了解可能性并创建我自己的个人偏好,以便在我即将开展的项目中使用.

让我先描绘一下我正在寻找的情况

我即将升级/重新开发我已经使用了很长一段时间的内容管理系统.但是,我觉得多语言是对这个系统的一个很大的改进.在我没有使用任何框架之前,我将使用Laraval4进行即将到来的项目.Laravel似乎是更简洁的PHP编码方式的最佳选择.Sidenote: Laraval4 should be no factor in your answer.我正在寻找独立于平台/框架的一般翻译方式.

应该翻译什么

由于我正在寻找的系统需要尽可能用户友好,管理翻译的方法应该在CMS内部.应该没有必要启动FTP连接来修改翻译文件或任何html/php解析模板.

此外,我正在寻找最简单的方法来翻译多个数据库表,而不需要创建额外的表.

我自己想出了什么

正如我一直在寻找,阅读和尝试自己.我有几个选择.但我仍然觉得我没有达到我真正寻求的最佳实践方法.现在,这是我想出来的,但这种方法也有它的副作用.

  1. PHP Parsed Templates:模板系统应该由PHP解析.这样我就可以将翻译过的参数插入到HTML中,而无需打开模板并进行修改.除此之外,PHP解析模板使我能够为完整的网站提供1个模板,而不是每个语言都有一个子文件夹(我以前有过).达到此目标的方法可以是Smarty,TemplatePower,Laravel的Blade或任何其他模板解析器.正如我所说,这应该独立于书面解决方案.
  2. 数据库驱动:也许我不需要再提这个.但解决方案应该是数据库驱动的.CMS旨在面向对象和MVC,因此我需要考虑字符串的逻辑数据结构.因为我的模板是结构化的:templates/Controller/View.php也许这个结构最有意义:Controller.View.parameter.数据库表将使用字段将这些字段设置为long value.在模板内部,我们可以使用类似的排序方法echo __('Controller.View.welcome', array('name', 'Joshua')),参数包含Welcome, :name.因此结果是Welcome, Joshua.这似乎是一个很好的方法,因为参数如:name很容易被编辑器理解.
  3. 低数据库负载:当然,如果在运行中加载这些字符串,上述系统将导致数据库负载的负载.因此,我需要一个缓存系统,一旦在管理环境中编辑/保存语言文件,就会重新呈现语言文件.由于生成了文件,因此还需要良好的文件系统布局.我想我们可以使用languages/en_EN/Controller/View.php或.ini,最适合你的.也许.ini甚至可以在最后解析得更快.这个应该包含的数据format parameter=value; .我想这是执行此操作的最佳方式,因为呈现的每个View都可以包含它自己的语言文件(如果存在).然后,语言参数应加载到特定视图而不是全局范围,以防止参数相互覆盖.
  4. 数据库表翻译:这实际上是我最担心的事情.我正在寻找一种方法来创建新闻/页面/等的翻译.尽快.每个模块有两个表(例如NewsNews_translations)是一个选项,但是为了获得一个好的系统感觉很多.我想出的一件事是基于data versioning我写的一个系统:有一个数据库表名Translations,这个表有一个独特的组合language,tablenameprimarykey.例如:en_En/News/1(参考ID = 1的新闻项目的英文版本).但是这个方法存在两个巨大的缺点:首先,这个表在数据库中有大量数据需要很长时间,其次使用这个设置搜索表是一件很麻烦的工作.例如,搜索项目的SEO slug将是一个全文搜索,这是相当愚蠢的.但另一方面:它是一种快速的方式,可以非常快速地在每个表格中创建可翻译内容,但我不相信这个专业人士会超过这个内容.
  5. 前端工作:前端也需要一些思考.当然,我们会将可用语言存储在数据库中,并(de)激活我们需要的语言.通过这种方式,脚本可以生成下拉列表以选择语言,后端可以自动决定使用CMS可以进行哪些翻译.然后,在获取视图的语言文件或获取网站上内容项的正确翻译时,将使用所选语言(例如en_EN).

所以,他们就是.我的想法到目前为止.他们甚至不包括日期等的本地化选项,但是因为我的服务器支持PHP5.3.2 +,最好的选择是使用intl扩展,如下所述:http://devzone.zend.com/1500/internationalization-in -php-53 / - 但这将在任何后期的开发体育场中使用.目前,主要问题是如何在网站上获得最佳的内容翻译实践.

除了我在这里解释的一切,我还有另一件我尚未决定的事情,它看起来像一个简单的问题,但事实上它让我头痛:

网址翻译?我们应该这样做吗?以什么方式?

所以..如果我有这个网址:http://www.domain.com/about-us …

php mysql multilingual localization internationalization

166
推荐指数
7
解决办法
13万
查看次数

多语言网站的URL的最佳实践

什么被认为是翻译网站的URL的最佳策略?我经常看到的事情是:

http://example.com/english-slug.html
http://example.com/de/english-slug.html
http://example.com/fr/english-slug.html
Run Code Online (Sandbox Code Playgroud)

这具有(次要)优点,即用户可以通过修改URL手动切换到另一种语言.缺点似乎是URL包含错误语言的slug,每个页面都不是默认语言.我想这会导致SEO惩罚.

另一种方法是翻译slug并可选地省略语言标识符:

http://example.com/english-slug.html
http://example.com/deutscher-slug.html
http://example.com/slug-francois.html
Run Code Online (Sandbox Code Playgroud)

有些语言并没有真正让自己变得"迷茫",比如俄语,汉语和阿拉伯语.你最终会得到毫无意义的音译.

url multilingual url-design

7
推荐指数
1
解决办法
4132
查看次数