在Linux LAMP(Linux, Apache, MySQL, PHP)架构中支持多语言网站,可以通过以下几个步骤来实现:
mod_rewrite模块来处理语言前缀或查询参数,以便根据用户的语言偏好加载相应的内容。以下是一个简单的示例,展示如何在PHP中实现多语言支持:
CREATE TABLE `pages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title_en` varchar(255) NOT NULL,
`title_fr` varchar(255) NOT NULL,
`content_en` text NOT NULL,
`content_fr` text NOT NULL,
PRIMARY KEY (`id`)
);
<?php
session_start();
// 设置默认语言
if (!isset($_SESSION['language'])) {
$_SESSION['language'] = 'en'; // 默认语言为英语
}
// 获取用户选择的语言
$language = $_SESSION['language'];
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');
// 根据语言加载内容
$stmt = $conn->prepare("SELECT title, content FROM pages WHERE id = ?");
$stmt->bind_param("i", $page_id);
$page_id = 1; // 假设我们要加载ID为1的页面
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$title = $row["title_$language"];
$content = $row["content_$language"];
} else {
$title = "Page not found";
$content = "";
}
$stmt->close();
$conn->close();
?>
<!DOCTYPE html>
<html lang="<?php echo $language; ?>">
<head>
<meta charset="UTF-8">
<title><?php echo htmlspecialchars($title); ?></title>
</head>
<body>
<h1><?php echo htmlspecialchars($title); ?></h1>
<p><?php echo htmlspecialchars($content); ?></p>
<a href="?lang=en">English</a> | <a href="?lang=fr">Français</a>
</body>
</html>
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^lang=(en|fr)$
RewriteRule ^(.*)$ /index.php?lang=%1 [L,R=301]
</VirtualHost>
通过以上步骤,你可以在Linux LAMP架构中实现一个支持多语言的网站。