我一直在为定制设计的网站翻译工作一段时间以及那些需要的翻译,所以我目前正在翻译文本的内容如下:
我有多个文件,其中包含一堆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>
这会调用一个向网址添加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;
&GT;
因此,通过这个神奇的过程,网络被翻译。 问题:我有点觉得这不是最佳解决方案,所以如果有人有办法解决它或以任何其他方式做,那将是非常有帮助的。请注意,我不使用WordPress,因此WP插件是不可能的(我使用它们,我知道它们存在)。我见过使用子域名(en.something.com
)或其他文件夹(something.com/en/
)的网站,但我不确定该怎么做。
答案 0 :(得分:0)
相信我,我以前去过那里。我为一个现在使用超过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文件需要制作要翻译的确切字词
我希望这是有道理的。