什么是主题文本域?


19

我发现任何WordPress主题都使用此功能,但是在这种情况下,我不了解它的目的和用途是什么'themify'?这是Themify中的一些示例functions.php

1)。

load_theme_textdomain( 'themify', TEMPLATEPATH.'/languages' );

2)。

if (function_exists('register_nav_menus')) {
        register_nav_menus( array(
            'main-nav' => __( 'Main Navigation', 'themify' ),
            'footer-nav' => __( 'Footer Navigation', 'themify' ),
        ) );
    }

并在临时文件中:

3)。 <?php _e( 'Sorry, nothing found.', 'themify' ); ?>

还有很多!我的疑问是什么意思'themify'?他们的目的是什么?我可以更改还是删除它?,这是什么地方'themify'

Answers:


23

在这种情况下, 'themify'在所限定的textdomain为主题,用来使主题平移。(食典参考:)load_theme_textdomain()

使主题做好翻译准备需要几个步骤。

  1. 定义主题的textdomain

    load_theme_textdomain( 'themify', TEMPLATEPATH.'/languages' );
  2. 在模板中定义可翻译的字符串

    使用以下翻译功能之一完成此操作:(__()对于返回的字符串),_e()(对于回显的字符串)和_x() / _ex()(对于gettext上下文字符串)。还有其他的,但是你明白了...

    静态文本字符串(例如<p>Hello world!</p>,)被包装在适当的翻译功能(例如,)中<p><?php _e( 'Hello World!', 'themify' ); ?></p>,以使其可用于翻译。

  3. 生成有关如何编辑语言文件的.mo / .po文件
    参考


@SokVanrithy,请参阅此问答以了解如何处理.mo/.po文件。(芯片,我没有在您的答案中添加链接,因为您可能有其他建议:)
brasofilo 2012年

1
@brasofilo可以根据需要随意添加。我认为这超出了所提出问题的范围,但仍是有用的信息。
Chip Bennett

你为什么要改变它?您要分叉主题吗?
Chip Bennett

是的,我想摆脱它们。我已经从Webdesigndepot下载了一个主题,该主题称为base theme。我问作者,我可以更改原始代码吗?允许使用它们是因为它是基础空白主题,想要为其提供自定义主题的结构。另外,这是作者那里提供给读者的礼物。我的疑问就像上面!
Sok Vanrithy

1
当然,您可以摆脱它们;但是离开他们也不会有伤害。您甚至可以将更textdomain改为其他字符串,以引用您的分叉主题。开发最佳实践包括使主题可翻译,因此我建议不要完全删除它们。也就是说,如果您愿意的话,当然可以
Chip Bennett
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.