【问题标题】:How to insert in javascript file php variables?如何在javascript文件中插入php变量?
【发布时间】:2013-03-20 03:33:11
【问题描述】:

我的页面有 3 种语言版本,并且我在每个文件(索引、联系人等)的标题中都包含了所选语言文件(en、ru、pl)。

<?php
session_start();
include('language/'.$_SESSION['lang'].'.php');
?>

zh.php

<?php
session_start();
$lang = array();

$lang['hello'] = 'Hello';
$lang['world'] = 'World !';
?>

ru.php

<?php
session_start();
$lang = array();

$lang['hello'] = 'привет';
$lang['world'] = 'мир';
?>

这就是我回应他们的方式:

<p><? echo $lang['hello'].' '.$lang['world'];?></p>

这实际上工作得很好,但我的 .js 文件有问题。如果我想提醒或在某处我不能插入一些文本。

例如,在我的一个 .js 文件中,我有一个警告:

if (something_obj.val() == ''){
   alert('Wrong username given !');
   return false;
}

如何在我的 js 文件中实现语言文件?我需要创建一个新闻 .js 语言文件吗?

【问题讨论】:

  • 您可以使用 JSON。请参阅以下答案:stackoverflow.com/a/5619038/290172
  • JavaScript 的答案已经给出。但是,对于 PHP 中的翻译;为什么要重新发明轮子?大多数 PHP 安装都安装了gettext。 Gettext 是一种在应用程序中翻译字符串的标准化方法,它使用包含每种语言翻译的单独“翻译”文件 (.po/.mo)。您可以通过设置当前的“语言环境”并通过 _('text-to-translate') 翻译文本来翻译字符串

标签: php javascript variables include


【解决方案1】:

您可以为每种语言创建一个 js 文件,其翻译如下所示:

// german.js
var translations = {
  'hello': 'hallo',
  'world': 'welt'
};

在其他 JS 脚本中,只需执行以下操作:

alert(translations['hello'] + " " + translations['world'])

当然,您可能希望选择比translations 更短的变量名。

然后,在您的 php 文件中,根据语言包含正确的 JS 脚本:

<script src="languages/<?php echo $_SESSION['lang']; ?>.js"></script>

【讨论】:

  • +1 对于 JavaScript 中的翻译,通常的做法是为每种语言使用单独的 .js 文件,例如,查看 jquery-ui 日期选择器; jquery-ui.datepicker-fr.js.
【解决方案2】:

您可以创建新文件 - 例如js.php,它将加载正确的语言文件并将所有变量打印到 JavaScript 数组中:

js.php

<script type="text/javascript">
var lang = {
<?php
session_start();
include('language/'.$_SESSION['lang'].'.php');

$data = array();
foreach ( $lang as $key => $value ) {
  $data[] = '"' . $key . '" : "' . $value . '"';
}
echo implode(',', $data);
?>
};
</script>

然后将此文件包含在必须使用 JavaScript 翻译数组的页面上并用于:

alert(lang.key);

另外,如果翻译字符串中有" 符号,则必须使用\" 对其进行转义,例如:

$value = str_replace('"', '\"', $value);

【讨论】:

  • 我认为,除非您不介意缓存不起作用,否则这不是一个好主意。
  • 只是一个想法,可以扩展缓存等功能。
猜你喜欢
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
相关资源
最近更新 更多