gpt4 book ai didi

php - 国际化简单 PHP 网站的最佳方式

转载 作者:IT王子 更新时间:2023-10-28 23:59:53 24 4
gpt4 key购买 nike

我必须开发一个非常简单的 php 网站,所以我不需要框架。但它必须支持多国语言(EN/FR/CHINESE)。我一直在寻找内置系统的 php,我找到了两种方法:

我没有在没有框架的情况下使用 i18n 的经验,所以关于支持多语言的最简单的方法有什么建议吗?

最后我只需要一个将翻译搜索到文件中的功能(一个文件按语言)。情商:trans('你好');

=> en.yaml(是否是yaml,都是例子)

hello: "Hello world!"

=> fr.yaml

hello: "Bonjour tout le monde !"

如果可能的话,我更喜欢纯 PHP 实现

最佳答案

虽然 ext/gettextext/intl 都与 i18(国际化)有关,但是 gettext 处理翻译,而 intl 处理国际化的事情,比如数字和日期显示、排序顺序和音译。因此,您实际上需要两者才能获得完整的 i18 解决方案。根据您的需要,您可能会想出一个依赖上述扩展或某些框架提供的使用组件的自制解决方案:

如果您只需要翻译并且站点足够简单,那么您的简单解决方案(将翻译配置文件读入 PHP 数组,使用简单函数检索 token )可能是最简单的。

我能想到的最简单的解决方案是:

$translation = array(
'Hello world!' => array(
'fr' => 'Bonjour tout le monde!',
'de' => 'Hallo Welt!'
)
);

if (!function_exists('gettext')) {
function _($token, $lang = null) {
global $translation;
if ( empty($lang)
|| !array_key_exists($token, $translation)
|| !array_key_exists($lang, $translation[$token])
) {
return $token;
} else {
return $translation[$token][$lang];
}
}
}

echo _('Hello World!');

关于php - 国际化简单 PHP 网站的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6953528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com