Php 如何开发一个易于本地化的webapp系统?
我正在开发一些web应用程序,我正在考虑为其添加一些本地化功能,这样人们就可以轻松地在不同语言之间切换,也许在将来,可以为该应用程序添加自己的本地化功能,比如Facebook的语言或用户语音 我知道我应该有一个模板,比如:Php 如何开发一个易于本地化的webapp系统?,php,web-applications,localization,Php,Web Applications,Localization,我正在开发一些web应用程序,我正在考虑为其添加一些本地化功能,这样人们就可以轻松地在不同语言之间切换,也许在将来,可以为该应用程序添加自己的本地化功能,比如Facebook的语言或用户语音 我知道我应该有一个模板,比如: <element>[string1]</element> [string1] 基本上,[string1]将被替换为正确的字符串,但我应该将其存储在哪里?数据库静态文件?每次从数据库中获取字符串的数据不是很“昂贵”吗?我如何处理它?使用输出缓冲区,或
<element>[string1]</element>
[string1]
基本上,[string1]将被替换为正确的字符串,但我应该将其存储在哪里?数据库静态文件?每次从数据库中获取字符串的数据不是很“昂贵”吗?我如何处理它?使用输出缓冲区,或者有没有更好的方法,我不知道
如果有人能告诉我正确的想法,我将不胜感激。在PHP中,通常的做法是将所有字符串存储在PHP数组中,存储在PHP文件中。我建议您看看。gettext函数实现了一个NLS(本地语言支持)API,可用于对PHP应用程序进行国际化
Gettext实际上是linux/unix系统上的本地化标准,在PHP应用程序中也广泛使用(例如Wordpress就使用它)。要获得更深入的解释、示例等,请查看上面PHP手册中的Gettext部分,或者您可以访问,以更广泛地讨论Gettext工具、绑定等。有许多可用的开源翻译工具包系统,可以让您更好地了解应做和不应做的事情(例如) 如果您决定按自己的方式进行,我建议将所有翻译键和值存储在数据库中。当涉及到编辑、搜索、获取丢失的翻译等时,你会过得更好 您可以每24小时或在每次新的/编辑的翻译之后生成完整的翻译列表,然后以JSON或PHP序列化格式存储在静态文件中。这会将您从MYSQL中解救出来
我建议的另一件事是选择键+键翻译的格式。在第一次调用时,应将键插入数据库以获取翻译。这将导致您找到“缺少翻译”,这是使用第三方或您的网站访问者进行本地化翻译的好方法。当我必须本地化我的应用程序时,我通常会创建一个翻译/目录,然后为每个区域性创建一个子目录。例如,我可以在其中包含以下文件夹:
- en US/-包含美国用户的翻译
- en GB/-包含英国用户的翻译
- en/-包含备用的通用英语翻译
<?php
$default_locale = 'en';
$parts = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$sub_parts = explode('-', $parts[0]);
if (is_dir("languages/{$parts[0]}")) {
$locale = $parts[0];
}
elseif (is_dir("languages/{$sub_parts[0]}")) {
$locale = $sub_parts[0];
}
else {
$locale = $default_locale;
}
使用库,这可能对您有用