我想使用PHP的数组函数来翻译一个网站。我已经创建了PHP文件,其中包含要翻译的所有文本的数组。
<?php
//ESPANOL
$lang = array(
'work' => 'Trabajo'
'packaging' => 'Empaque'
);
然后我在nav。php文件中调用它们,在内容部分也会调用它们
<?php include('includes/languages/es.php'); ?>
<a href="#"><?php echo $lang['work']; ?></a>
都很简单。
我想知道的是如何在不编辑HTML的情况下切换这些数组文件,这样我就不必链接到另一个'index_es.php'等。我知道链接是这样的,但我不知道它是如何工作的。
<a href="index.php?es.php>Español</a>|<a href="index.php/?en.php">English</a>
我猜我需要包括另一个文件,其中包括语言文件,然后链接可以从中选择,但我不知道代码是什么。它是否涉及在链接上方包含一个"lang_directory",然后以某种方式从那里包含??
**我也想避免使用Zend/Gettext翻译,因为我想学习这个inside out。
您可以创建包含目标语言的另一个维度。然后传递一个GET参数来选择该语言。如果语言不被认可,你可以退回到英语。这是一个例子。
$languages = array(
'en' => array(
'work' => 'work',
'packaging' => 'packaging'
),
'es' => array(
'work' => 'Trabajo',
'packaging' => 'Empaque'
),
);
// default language to use when the requested isn't found
$defaultLanguage = 'en';
// language requested via GET
$requested = $_GET['locale'];
// use the requested language if it exists, otherwise the default language
$language = isset($languages[$requested]) ? $requested : $defaultLanguage;
// our translations
$translation = $languages[$language];
// "work" translated based on the language
echo $translation['work'];
Español的链接是这样的
index.php?locale=es
我会保留你的数组系统,将链接更正为index.php?lang=en
之类的东西,然后根据lang参数包括你的文件:
if ( isset($_GET['lang']) && file_exists('includes/languages/'.$_GET['lang'].'.php') ){
include_once('includes/languages/'.$_GET['lang'].'.php');
}
如果你想在你的会话中保留语言参数,做这样的事情:
if ( isset($_GET['lang']) && file_exists('includes/languages/'.$_GET['lang'].'.php') ){
$_SESSION['lang'] = $_GET['lang'];
}
if ( !isset($_SESSION['lang']) ){
// Default language
$_SESSION['lang'] = 'en';
}
include_once('includes/languages/'.$_SESSION['lang'].'.php');
一种方法是使用会话。
-
创建一个lang.php文件,用于在语言之间进行切换。
<?php //Start session session_start(); //Do we get a lang variable if (isset($_GET['lang'])) { //Make sure we only get the lang filename $lang = basename($_GET['lang']); //If the file exists, then save it to session if (file_exists('includes/languages/' . $lang . '.php')) $_SESSION['lang'] = $lang; } //If the client were refered here (via hyperlink) send them back if (isset($_SERVER['HTTP_REFERER'])) header('location: ' + $_SERVER['HTTP_REFERER']); ?>
-
在你想要多语言的文件头,插入。
<?php //Start session session_start(); //Default language $lang = 'english'; //If the client have set a language, use that instead if (isset($_SESSION['lang'])) $lang = $_SESSION['lang']; //Load language file include('includes/languages/' . $lang . '.php'); ?>
更改语言的链接将像这样:
<a href="lang.php?lang=espanol">Español</a>|<a href="lang.php?lang=english">English</a>
Out还可以从lang.php文件中取出代码,放入一个包含的文件中,该文件将在包含语言文件之前加载,并删除HTTP_REFERER重定向。
更改语言的链接将像这样:
<a href="?lang=espanol">Español</a>|<a href="?lang=english">English</a>