Resurce #nr返回而不是文件名

时间:2020-01-25 12:35:29

标签: php

我正在使用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> 

1 个答案:

答案 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”消失了。该消息现在是正确的。因此,现在我必须研究如何将语言文件加载到表单中,并将第三列保存到新的语言文件中。

相关问题