【问题标题】:How to make __() and _e() work in any PHP file of wordpress?如何使 __() 和 _e() 在 wordpress 的任何 PHP 文件中工作?
【发布时间】:2009-10-12 13:54:27
【问题描述】:

我想让 wordpress 为我的 javascript 做 I18N。我的计划是在 php 文件中包含 javascript 代码。例如,一个 sample.js.php 文件如下:

function foo()
{
   alert(<?php _e('do something'); ?>);
}

sample.js.php 文件称为 javascript。

<script type='text/javascript'>url-to-myplugin/sample.js.php</script>

但是,__() 和 _e() 似乎不起作用,因为它们没有定义。 如何使 _e() 和 __() 在我的情况下工作?

谢谢


我找到了答案。下面的代码将完成这项工作。

<?php
    define('WP_USE_THEMES', false);
    require('./wp-blog-header.php');
?>

【问题讨论】:

  • 那么你需要找到__() 和 _e() 的定义位置并包含文件?
  • 它们是在 l10n.php 中定义的,但仅仅包含单个文件是行不通的。我想有更好的现成 API 来包含必要的文件。

标签: php wordpress internationalization localization


【解决方案1】:

只需将 WP 配置文件包含到 sample.js.php 脚本中:

<?php require_once 'your-path-to/wp-config.php'; ?>

function foo()
{
   alert(<?php _e('do something'); ?>);
}

【讨论】:

  • 要求 wp-config.php 让它显示垃圾字符。我找到了答案。 wp-blog-header.php 很好用。
  • 是的,wp-blog-header.php 也可能有效。我通常加载wp-config.php,因为我的一些插件文件需要数据库连接。至于 wp-config.php 的问题,它可能在结束 php-tag 之后有一个结束空格、一个空行或任何其他字符。它可以在 WP 在加载期间包含的任何其他文件中。我通常会删除这些符号,实际上它们已经在最新版本的 WP(目前为 2.8.4)中被删除,因此在测试过程中没有看到乱码。
【解决方案2】:

您是否安装了gettext 扩展?

【讨论】:

  • wordpress 应该有 gettext 扩展名。
猜你喜欢
  • 2016-08-15
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2012-09-07
  • 2019-07-24
  • 1970-01-01
相关资源
最近更新 更多