gpt4 book ai didi

php - 如何在翻译数组提供的消息中间回显变量?

转载 作者:行者123 更新时间:2023-12-03 23:00:22 27 4
gpt4 key购买 nike

所以我正在从头开始制作一个 CMS,一个支持多种语言的 CMS。

我为每种支持的语言都有单独的 .php 翻译文件。我根据用户设置require_once正确的翻译文件。如果他们选择以英语查看网站,那么他们会得到 require_once 'lang/english.php'; 等。这是 english.php 的内容:

<?php
function text($phrase){
static $text = array(
'WELCOME' => 'Welcome to the CrappyCMS!',
'NEW_MEMBER' => 'This user is new. What a scrub.',
'ERROR_EMPTY_FIELDS' => 'Please fill in all of the required fields.'
);
return $text[$phrase];
}

例如,我基本上在主页中使用 echo text('WELCOME'); 以正确的语言显示欢迎消息。

现在我有一些来自早期 CMS 的旧代码,在用户注册页面中记录了此类错误:

if (user_exists($_POST['username']) === true){
$errors[] = 'Sorry, the username \'' . $_POST['username'] . '\' is already taken.';
}
if (preg_match("/\\s/", $_POST['username']) == true){
$errors[] = 'Username must not contain any spaces.';
}
if (email_exists($_POST['email']) === true){
$errors[] = 'Sorry, the email \'' . $_POST['email'] . '\' is already in use.';
}

(我知道这可能是易受攻击的代码,但我稍后会修复它,不介意安全性)

我想编辑它以返回数组键来引用翻译数组的值,如下所示:

if (user_exists($_POST['username']) === true){
$errors[] = 'ERROR_USERNAME_TAKEN';
}

然后,我的翻译文件中将有一个“ERROR_USERNAME_TAKEN”的数组条目,通过它我将显示错误。

现在终于到了这个问题,我不确定如何在消息中间显示用户输入的用户名之类的内容,并以优雅而简单的方式做到这一点。正如您所看到的,我的旧 CMS 在错误消息中间显示 $_POST['username']。我不确定如何在我的新 CMS 中有效地实现这一点。

我会向你展示我的解决方案,但遗憾的是我心里没有一个解决方案,目前我想到的事情有点荒谬、低效且非常肮脏。

欢迎任何意见。

最佳答案

http://php.net/manual/en/function.sprintf.php提供了这方面的功能。

$welcome = 'Welcome to the %s!';
$cms = 'CrappyCMS';
echo sprintf($welcome, $cms);
// echoes: Welcome to the CrappyCMS!

否则您可以编写自己的 preg_replace 函数。

关于php - 如何在翻译数组提供的消息中间回显变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38054028/

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