gpt4 book ai didi

javascript - 使用 jQuery 和 PHP 加载语言环境变量

转载 作者:搜寻专家 更新时间:2023-10-31 21:03:39 25 4
gpt4 key购买 nike

我正在尝试将一些局部变量加载到一个页面上,该页面应该具有不同的文本,具体取决于用户的系统(或浏览器)语言。这是我到目前为止所做的:

一个简单的 HTML 页面:

<html>
<head>
<title>Page title</title>
<<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="/css/style.css">
<script>
$( document ).ready(function() {
jQuery.ajax({
url: "login_backend.php",
dataType:'json',
success:function(response)
{
$('#loginline').html(response.first );
$('#passwordline').html(response.second );
}
});


});
</script>

</head>
<body link='#b9b5b1' vlink='#f2f0ed' alink='#908f8e'>
<table width='100%' height='100%'>
<form method='POST' action='buzz-login.php' enctype=utf-8 accept-charset=utf-8>
<tr>
<td align=center><table>

<tr>
<td><table>
<tr>
<td><div id = "loginline" class = "loginline">Test1:</div></td>
<td><input type='text' name='login' size='15'></td>
</tr>
<tr>
<td><div id = "passwordline" class = "passwordline">Test2:</div></td>
<td><input
type='password' name='password' size='15'></td>
</tr>
</table></td>
</tr>
<tr>
<td align = center><input type='submit' name='ok'
value='$login_button'></td>
</tr>
<tr>
<td align = center><font color='red'>Random msg</font></td>
</tr>
</table></td>
</tr>
</form>
</table>
</body>
</html>

login_backend.php

<?
session_start();
$_SESSION['locale'] = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);// detecting language
include "locale/{$_SESSION['locale']}.php";//loading locale file with proper prefix
$locale = array[ //the array is filled from variables, initiated in a particular locale file
"loginline"=>"$login_line",
"passwordline"=>"$password_line"
];
echo json_encode($locale);
?>

最后我们有几个本地文件,如下所示 (en.php):

<?
$login_line = "ID";
$password_line = "Password";
?>

主要的想法是在页面加载时请求局部变量并将它们放入适当的 div 中。我没有收到任何错误,但它不起作用。

最佳答案

.ajax 请求的 success 回调中的 response 变量不返回 firstsecond 键。如果你查看你的 login_backend.php(为什么叫 login_backend?我没有看到任何关于 login 的内容)它返回一个包含键 loginlinepasswordline 的数组,如

{
"loginline": "ID",
"passwordline": "Password"
}

使用浏览器的开发人员控制台验证这一点,例如处理异步请求时的 Firebug 或类似程序。

您的 .ajax 请求设置告诉我您需要一个 JSON,dataType:'json'。您应该通过正确设置其 header 来告诉 PHP 文件(在您的情况下为 login_backend.php)它返回的内容是 类型 JSON。

<?php
header('Content-Type: application/json');
.. code ..

echo json_encode($locale);

当使用 PHP 的 session 时,确保在不再需要时关闭 session 。 session 在使用时被锁定,使用 session_write_close 解锁 session 当您不在 session 中写入或读取时。

session_start();
// detecting language
$_SESSION['locale'] = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
// loading locale file with proper prefix
include "locale/{$_SESSION['locale']}.php";
/* close session lock */
session_write_close();

在使用任何为您解决本地化问题的第 3 方资源之前,开始编写您自己的 Material 通常是一件好事。尽管您的设置步骤太多了。

首先,您根据 'locale/{$_SESSION['locale']} 中包含的变量列表在 login_backend.php 中构建一个数组 $locale .php' 将每个变量复制到其等效键,甚至变量/键名称几乎相同。

您可以通过让文件 en.php 立即返回此数组来简化此操作

<?php
/** file: en.php */
return [
'login_line' => 'ID',
'password_line' => 'Password'
];

并将返回的数组捕获到一个变量中,然后让 login_backend.php 立即将数组编码为 json 字符串。

除此之外,请确保您始终正确检查

  • 全局/ session 中存在 key ,例如isset($_SESSION['locale'])array_key_exists('locale', $_SESSION') 以正确处理错误。
  • 确保您知道 includerequire 之间的区别,请参阅 question
  • 永远不要根据来自外部(第 3 方)来源的文件名假设文件存在。

关于javascript - 使用 jQuery 和 PHP 加载语言环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36585283/

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