本地语言的最新更新

Latest update in local language

我想在 PHP 页面的屏幕上打印上次更新的日期。在线搜索我试图创建一个代码,但结果显示为英文,而不是访问者的本地语言。

<?php
setlocale(LC_TIME,"it_IT");
echo "Ultimo aggiornamento" . date ("g:ia \o\n l jS F Y", getlastmod());
?>

你能帮帮我吗?

这个任务有两个部分。

第一个是解决本地化问题。为此,您可以创建语言文件,如 it.php、en.php 等。在文件中你会得到一个包含翻译的数组。

例如:en.php

return [
    'lastUpdate' => 'Last update',
    'dateTimeFormat' => 'Y-m-d H:i:s'
];

然后 it.php

return [
    'lastUpdate' => 'Ultimo aggiornamento',
    'dateTimeFormat' => 'g:ia \o\n l jS F Y'
];

其他语言文件同理。

如果您希望站点支持的语言和文本太多,您还可以使用 google 翻译 API 和 php 脚本来生成这些文件,但是后来翻译质量达到了google翻译水平,还不是很完美。

然后一旦你 detect/guess 用户的语言,你就可以 select 语言文件,并将其用于页面上的文本:

$lang = __DIR__ . "{$userLang}.php";
echo "{$lang['lastUpdate']} " . date ($lang['dateTimeFormat'], getlastmod());

故事的另一部分是语言检测。

用 php 你可以得到 user's IP address,然后你可以使用 table 其中包含哪个 IPv4 范围属于哪个国家。但这有一个问题。用户可能正在使用 tor 浏览器、代理,屏蔽了 IP 地址。居住在与 his/her 祖国不同的国家,或者刚到那个国家旅行。所以在这些情况下,猜测将是不正确的。

更好的方法是在前端检查用户的 browser or system language 和 javascript。但它仍然会出错,因为用户可能在不同的国家/地区使用借来的 PC,其中 OS 和浏览器语言不同。

因此,如果您为页面上的用户提供一种使用 select his/her 语言的方式,然后将其存储在 cookie 中,这也很好。