【发布时间】:2021-08-31 17:20:57
【问题描述】:
Stack Overflow 提供了一些“类似”的问题,但不幸的是,它们都不适合。或者我是一个糟糕的搜索者。
MySQL 数据库中有 language 列,根据用户设置存储不同的 ISO 639-1 代码。然后我将用户的 ISO 631-1 代码抓取到$lang 变量中,并可以使用echo 输出它。没问题。
是否有一种 PHP 7 兼容技术可以将en 转换为英语、es 转换为西班牙语、fr 转换为法语等?
我目前正在使用以下代码来实现这一点
if($lang == 'en'){$userlang = 'English';}
if($lang == 'es'){$userlang = 'Español';}
if($lang == 'fr'){$userlang = 'Français';}
我认为这不是最佳选择,因为 ISO 639-1 代码列表很大,我绝对不想将它们全部放入代码中。
在 php.net 上找到 locale_get_display_script 手册,但它甚至从给定示例中复制粘贴也没有返回任何内容 - 可能是我的 ISP 没有提供所有必需的库。所以我什至无法检查它是否是我正在寻找的东西。无论如何,这个函数似乎无法获取 ISO 639-1 代码。
【问题讨论】:
-
语法错误!
if($lang = 'en'){$userlang = 'English';}始终为真,因为你不比较,而是设置 $lang。 -
如果您不想将它们全部放在代码中,为什么不制作一个包含所有这些条目的小文本文件并对其进行解析?
-
是的,
if($lang == 'en'){$userlang = 'English';}是正确的。 -
我向你保证,“PHP 方式”最终也会在某个地方解析为文件。即使是原生方式也会有操作系统或库文件。它可能是二进制的,但仍然是某个地方的文件。这是为您完成工作的really simple library,当然,它有一个专用文件。否则,您可以使用 PHP 国际扩展,但这在各种平台上可能会很奇怪。出于调试目的,我宁愿有一个文件来调试。
-
@Pimpfru,它只是一个带有帮助代码的数据文件,你可以只是 FTP 文件或使用 composer,没有什么可安装的(除非你还在谈论 PHP 扩展)。如果您的主机阻止您将 PHP/CSV 放在某个地方,我不知道该告诉您什么。如果您不能在您的主机上使用 composer,只需在本地使用 composer 并 FTP 文件。