PHP Web应用程序多语言结构的最佳实践

4

我正在使用PHP创建一个Web应用程序,该应用程序将提供多种不同的语言(总共约10种),我想知道您认为在更一般的方面设置此应用程序的最佳实践是什么。

我的想法是将所有语言都保留在同一域名下,例如“http://myservice.com/de”,其中一个脚本会在进入站点时执行位置检查并重定向用户。

编辑内容将在数据库中作为单个帖子共享到所有语言,并针对每种语言有一个特定的数据列。标记和脚本都将以英文记录,而对于用户可见的页面和部分,则从通用词库文件中收集相应语言的翻译。

一个.htaccess文件提供了处理所有文章重写以在其适当语言下显示的功能,例如将“http://myservice.com/de/artikel/12345/”转换为“http://myservice.com/article?id=12345&lang=de”。

您认为什么样的多语言设置是干净有效的?


你可能需要指定你将使用的编程语言。 - user371320
我正在考虑使用NodeJS或PHP。至于数据库,我还不确定是否要使用关系型数据库管理系统(RDBMS)。但很可能会选择MySQL。 - Staffan Estberg
3个回答

4
每个人都有不同的观点,关于如何设置一个面向国际的网站。然而,我尝试不通过制作自己的系统来重复造轮子。相反,我使用像CakePHP这样的框架中内置的国际化和本地化工具。
从CakePHP书中可以看到:
“为您的应用程序提供多种语言支持是吸引更广泛受众的最佳方式之一。这通常是一个令人生畏的任务,但是CakePHP中的国际化和本地化功能使其变得更加容易。首先,了解一些术语非常重要。国际化指应用程序进行本地化的能力。本地化一词指调整应用程序以满足特定的语言(或文化)要求(即“区域设置”)。国际化和本地化通常分别缩写为i18n和l10n; 18和10是第一个和最后一个字符之间的字符数。”

http://book.cakephp.org/1.3/view/1228/Internationalization-Localization

使用内置工具对我来说是一种高效的翻译应用程序但不包含URL重写的方法。这也意味着用户可以配置本地化偏好设置,并在每次登录时自动应用它们。这种方法还将被认为更加搜索引擎友好,因为您不会得到相同内容的多语言副本。希望这有所帮助。

谢谢,这看起来非常有趣。我以前没有使用过CakePHP,但也许会考虑在这个项目中使用它。 - Staffan Estberg

1

我能想到的最好建议是不要自己动手做

一个现有的开源CMS(内容管理系统)可能是一个很好的解决方案,而不是自己构建一个。其中两个领先的CMS系统是Drupal和Joomla。(还有许多其他选项)

这些系统提供了许多功能,可以通过一些配置或扩展插件(成千上万的插件)来使用。

国际化只是其中之一。它们的功能集可能比您自己做的更丰富、更强大。

此外,这些系统提供了广泛的API,可以用于扩展自己的业务逻辑。


你说得对,我应该选择一个现有的解决方案。虽然我已经尝试过Drupal和Joomla,但并不喜欢它们。我会尝试其他一些框架,并评估哪个最适合这个项目。 - Staffan Estberg
Drupal 7在多语言站点方面存在严重问题。我为此苦苦挣扎了约两周时间,即使按照规格进行配置和重新配置,该网站仍然只出现一种语言,或者只有部分站点使用一种语言,而另一部分则使用不同的语言。最终,我决定自己制作CMS。 - Qsiris

0
如果您使用ASP.NET(MVC 2或3),我建议阅读this文章。我认为这是.NET中最佳实践之一。

谢谢。我不打算将 .NET 作为服务器语言,但它肯定看起来是未来项目的有用资源。 - Staffan Estberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接