假设我的主题中有两个域,分别是“基本”和“高级”。
可以在我的主题中加载两个不同的域吗?
load_theme_textdomain( \'basic\', TEMPLATEPATH.\'/languages\' );
load_theme_textdomain( \'advance\', TEMPLATEPATH.\'/languages\' );
假设我的主题中有两个域,分别是“基本”和“高级”。
可以在我的主题中加载两个不同的域吗?
load_theme_textdomain( \'basic\', TEMPLATEPATH.\'/languages\' );
load_theme_textdomain( \'advance\', TEMPLATEPATH.\'/languages\' );
请注意,如果将mo文件放在主题目录中,the same mo-file will be loaded for every theme textdomain. 这是因为主题mo文件完全基于区域设置。例如:
load_theme_textdomain( \'basic\', get_template_directory() . \'/languages\' );
load_theme_textdomain( \'advance\', get_template_directory() . \'/languages\' );
load_theme_textdomain( \'whatever\', get_template_directory() . \'/languages\' );
既然“en\\u US”是你的WPLANG
语言环境,将加载上面的代码wp-content/themes/your-theme/languages/en_US.mo
三次!不好,因为多次导入相同的mo文件只会导致多余的工作。在这种情况下,最好使用单一主题域。但是,如果wp-content/themes/your-theme/languages/en_US.mo
如果不存在,WordPress将查看默认语言目录的子目录“主题”,在这种情况下,它会将域作为文件名的一部分考虑在内。您可以通过快速查看load_theme_textdomain()
功能:
function load_theme_textdomain( $domain, $path = false ) {
$locale = apply_filters( \'theme_locale\', get_locale(), $domain );
if ( ! $path )
$path = get_template_directory();
// Load the textdomain from the Theme provided location, or theme directory first
$mofile = "{$path}/{$locale}.mo";
if ( $loaded = load_textdomain($domain, $mofile) )
return $loaded;
// Else, load textdomain from the Language directory
$mofile = WP_LANG_DIR . "/themes/{$domain}-{$locale}.mo";
return load_textdomain($domain, $mofile);
}
如果您正在创建此主题或插件以包含在WordPress的官方插件或主题目录中。org,则需要使用插件或主题的slug作为文本域。您不能有多个文本域,文本域不能是插件或主题的slug以外的任何内容。
这是由于3.7中提供了新的语言包支持。语言包系统将在文本域中使用slug,并且不会与其他任何内容一起工作。
你当然可以。。但是,不能在单个文本字符串上使用两种不同的语言翻译。
例如,让我们考虑一下页面上的某个位置有以下文本字符串:
Hello World!
现在,如果我们想为语言本地化设置它,下面是我们要做的:<?php _e(\'Hello World!\', \'my_language_localization\'); ?>
在您的情况下,可以是:<?php _e(\'Hello World!\', \'basic\'); ?>
或者,<?php _e(\'Hello World!\', \'advance\'); ?>
但是,不可能将单个字符串转换为两个本地化。此外,当使用本地化名称时;使其具有独特性,以便不会与其他插件/主题冲突。
从Wordpress 4开始,我建议您创建一个简单的插件,“只”加载所需的文本域。主题文件夹、模板或任何地方的所有字符串都将被翻译。示例:
<?php
/*
Plugin Name: UA Translation UA Tiny select
Description: Translation for Theme templates outside the main text domain
Version: 1.0
Author: Jonas Lundman
Author URI: http://lundman.info
Text Domain: ua-tiny-select
Domain Path: /languages/
*/
// Updated 2015 04 22 (21:00)
function ua_load_plugin_textdomain_tiny_select() {
load_plugin_textdomain( \'ua-tiny-select\', false, dirname( plugin_basename( __FILE__ ) ) . \'/languages/\' );
}
add_action( \'plugins_loaded\', \'ua_load_plugin_textdomain_tiny_select\');
?>
非常适合在主域主题中的woocommerce模板文件或Buddypress模板文件中进行自定义更改!记住给mo和po文件一个slug,在我上面的例子中:
languages/ua-tiny-select-sv_SE.mo
文件夹语言会放在插件文件夹中我刚刚为wp构建了我的第一个插件,即使它不是一个伟大的“代码诗意”;)它正常工作。这是一个使用GalleryView 3.0 jquery插件转换默认wp库的插件(http://spaceforaname.com/galleryview).我唯一不能做的就是本地化。此插件的本地化意味着转换管理界面,在这里可以配置jquery插件选项来更改结果库的外观。我试着关注网络上数百万的教程,在论坛上阅读了很多关于这个问题的帖子,并遵循了codex的指南。。。但仍然没有运气。这就是我所做的:每个文本行都位于gette