我正在使用PHP简单语言文件翻译。到目前为止,它仍然有效,除了一条消息,我希望其中的新输入的语言文件的名称可以正确地来自表单输入。 T脚本返回“#3”而不是文件名。 我的代码在哪里失败?有些事情还没有解决,但我将逐步解决问题。我的意图是将任何现有的语言文件读入表格,选择“目标”语言,编写翻译并使用格式正确的数组保存新文件。
<?php
//Initializing variable
$new_lang = "";
$new_lang = isset($_GET['new_lang']) ? $_GET['new_lang'] : '';
$new_lang = !empty($_GET['new_lang']) ? $_GET['new_lang'] : '';
$dir_flag = '';
$new_lang_one = isset($_GET['new_lang_one']) ? $_GET['new_lang_one'] : '';
$new_lang_two = isset($_GET['new_lang_two']) ? $_GET['new_lang_two'] : '';
// parse language files and assign translation
function lang($string){
global $base_lang, $tr;
if(isset($base_lang) AND $base_lang!="en" AND file_exists("languages/{$base_lang}.php") && strlen($base_lang) <=3) {
include("languages/{$base_lang}.php");
if (isset($lang[$string]) && !empty($lang[$string])) {
return $lang[$string];
}
}
return $string;
}
// check what language files are available
function langList(){
$dir_langs = 'languages/';
$dir_flag = './core/flags/';
// Open a directory, and read its contents
if(is_dir($dir_langs)){
if($opendirectory = opendir($dir_langs)){
while(($lang_file = readdir($opendirectory)) !== false){
if($lang_file != '.' && $lang_file != '..' && $lang_file != '.php'){
echo '<a href="?lang='.pathinfo($lang_file)['filename'].'"><img src='.$dir_flag.pathinfo($lang_file)['filename'].'.gif></a> ';
}
}
closedir($opendirectory);
}
}
}
// switch language
$base_lang="en"; // Set the default language
if(isset($_COOKIE["lang"])){
$base_lang=$_COOKIE["lang"]; // Get language from cookie
}
if(isset($_GET["lang"])){
setcookie("lang",strip_tags($_GET["lang"]),strtotime('+30 days'),'/', NULL, 0);
$base_lang=strip_tags($_GET["lang"]); // Or set cookie and new language
}
// write the new_language file
echo pathinfo($new_lang)['filename'];
if(!isset($_GET['new_lang'])){
$new_lang = fopen("./languages/".$new_lang.".php", 'w') or die("Failed to create file");
$msg = "<div class='msg error'>SPECIFY NEW TARGET LANGUAGE FOR TRANSLATION!</div>";
}else{
$new_lang = fopen("./languages/".$new_lang.".php", 'w') or die("Failed to create file");
$content = $lang['one'].'<br>'.$new_lang_one.'<br>'.$new_lang_two;
fwrite($new_lang, $content) or die("Could not write to file");
fclose($new_lang);
$msg = "<div class='msg success'>THE FILE <span>".$new_lang.".php</span> IS PREPARED.</div>";
}
?>
<DOCTYPE! html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="./core/stylesheet.css">
</head>
<body>
<div class="wrapper">
<form action="" name="translator" method="get">
<?php echo $msg;?>
<fieldset>
<div class="select_source">
<div>Select translation FROM language:</div>
<div class="flags">
<?php echo langList();?>
</div>
<div class="break"></div>
</div>
<div>
<label>Select translatin TO language:</label>
<input type="text" name="new_lang" placeholder="e.g.: nl, dk, it" value="">
</div>
</fieldset>
<fieldset>
<table>
<tr>
<th>Source language key</th>
<th>Source language string</th>
<th><?php echo '<img src="./core/flags/'.$base_lang.'.gif" title="'.$base_lang.'">';?> Target language key</th>
</tr>
<tr>
<td class="key"><?php echo lang('one');?></td>
<td><?php echo lang('one');?></td>
<td class="new_string"><textarea name="new_lang_one"></textarea></td>
</tr>
<tr>
<td class="key"><?php echo lang('two');?></td>
<td><?php echo lang('two');?></td>
<td class="new_string"><textarea name="new_lang_two"></textarea></td>
</tr>
<tr>
<td class="key"><?php echo lang('three');?></td>
<td><?php echo lang('three');?></td>
<td class="new_string"><textarea name="new_lang_three"></textarea></td>
</tr>
<tr>
<td class="key"><?php echo lang('one');?></td>
<td><?php echo lang('one');?></td>
<td class="new_string"><textarea name="new_lang_four"></textarea></td>
</tr>
<tr>
<td class="key"><?php echo lang('vide');?></td>
<td><?php echo lang('vide');?></td>
<td class="new_string"><textarea name="new_lang_vide"></textarea></td>
</tr>
<tr>
<td class="key"><?php echo lang('six');?></td>
<td><?php echo lang('six');?></td>
<td class="new_string"><textarea name="new_lang_six"></textarea></td>
</tr>
<tr>
<td class="key"><?php echo lang('seven');?></td>
<td><?php echo lang('seven');?></td>
<td class="new_string"><textarea name="new_lang_seven"></textarea></td>
</tr>
<tr>
<td class="key"><?php echo lang('eight');?></td>
<td><?php echo lang('eight');?></td>
<td class="new_string"><textarea name="new_lang_eight"></textarea></td>
</tr>
<tr>
<td class="key"><?php echo lang('nine');?></td>
<td><?php echo lang('nine');?></td>
<td class="new_string"><textarea name="new_lang_nine"></textarea></td>
</tr>
<tr>
<td class="key"><?php echo lang('ten');?></td>
<td><?php echo lang('ten');?></td>
<td class="new_string"><textarea name="new_lang_ten"></textarea></td>
</tr>
</table>
</fieldset>
<fieldset>
<table>
<tr>
<td>
<div class="button">
<input class="button" type="submit" name="submit" value="Submit">
</div>
</td>
</tr>
</table>
</fieldset>
</form>
</div>
</body>
</html>
答案 0 :(得分:0)
// write the new_language file
// echo pathinfo($new_lang)['filename'];
$new_lang_file = pathinfo($new_lang)['filename'];
if(!isset($_GET['new_lang'])){
$new_lang = fopen("./languages/".$new_lang.".php", 'w') or die("Failed to create file");
$msg = "<div class='msg error'>SPECIFY NEW TARGET LANGUAGE FOR TRANSLATION!</div>";
}else{
$new_lang = fopen("./languages/".$new_lang.".php", 'w') or die("Failed to create file");
$content = '
<?php'."\r\n".'
// Name: '.$new_lang.'.php'."\r\n".
'$lang = array'."\r\n".
$new_lang_one."\r\n".$new_lang_two;
fwrite($new_lang, $content) or die("Could not write to file");
fclose($new_lang);
$msg = "<div class='msg success'>THE FILE <span>".$new_lang_file.".php</span> IS PREPARED.</div>";
}
我修改了这部分代码,“#3”消失了。该消息现在是正确的。因此,现在我必须研究如何将语言文件加载到表单中,并将第三列保存到新的语言文件中。