我已经为定制设计的网站和那些需要的翻译工作了一段时间,所以我目前正在做的翻译工作如下:
我有多个文件,其中有一堆PHP文件,其中包含多种语言的字符串。每个文件都有相同的常量,声明完全相同。像这样:
define('MENU_ITEM1','WHO ARE WE?');
define('MENU_ITEM2','PROFESSIONAL ACTIVITY');
define('MENU_ITEM1','¿QUIÉN SOMOS?');
define('MENU_ITEM2','ACTIVIDAD PROFESIONAL ');
然后,在菜单上我有语言选择器。select在显示所选语言的url上创建一个get变量,如下所示:
<select id="select" onChange="idioma(this.value);">
<option value="ES">Español (ES)</option>
<option value="EN">English (EN)</option>
...
</select>
这会调用一个函数,该函数会向url添加一个get。像这样(对于每种语言):
location.href=url+"?lang=ES";
因此,在另一个文件中,我们有一个PHP开关,它从url中获取语言,并创建一个包含正确语言文件的cookie。如果没有设置cookie,我们将使用默认语言。它应该是这样的:
<?php
if(isSet($_GET['lang'])){
$lang = $_GET['lang'];
$_SESSION['lang'] = $lang;
setcookie('lang', $lang, time() + (3600 * 24 * 30));
}else if(isSet($_SESSION['lang'])){
$lang = $_SESSION['lang'];
}else if(isSet($_COOKIE['lang'])){
$lang = $_COOKIE['lang'];
}else{
$lang = 'ES';
}
switch ($lang) {
case 'EN':
$lang_file = 'en/lang.en.php';
break;
case 'ES':
$lang_file = 'es/lang.es.php';
break;
default:
$lang_file = 'es/lang.es.php';
}
include_once $lang_file;
?>
因此,通过这个漫长的过程,网络得以传播问题:我有一点感觉,这不是一个最佳解决方案,所以如果有人有办法解决它或以任何其他方式解决它,那将非常有帮助。注意,我不使用WordPress,所以WP插件是不可能的(我使用过它们,我知道它们存在)。我见过使用子域(en.something.com
)或其他文件夹(something.com/en/
)的网站,但我真的不知道如何做到这一点。
相信我以前去过那里。我已经为一个现在使用5种以上语言的网站编写了功能。
在我的方法中,我使用了CSV文件(逗号分隔值)。您可以使用以下代码开始开发。
您的西班牙语翻译文件es.csv
'Home', 'Inicio'
'Page 1', 'Pagina 1'
'Page 2', 'Pagina 2'
'Page 3', 'Pagina 3'
第一列单词将是在函数中定义的默认语言。
<a href="#"><?php __("Home"); ?>
然后,您将使用类似于顶部的switch语句来捕获用户选择的语言。__()
函数看起来是这样的。输入将是"主页"
$csv = array_map('str_getcsv', file($file));
// Logic (where it would do the translation)
// It could look for the input in the $cvs variable if it exist then use the next value of the current array. Else keep the text the same.
您的cvs文件需要制作要翻译的确切单词
我希望这是有道理的。