WordPress 多语言支持(本地化)

https://www.cnblogs.com/ryanzheng/p/8309261.html

WordPress 多语言支持(本地化)

本博客将介绍WordPress的多语言制作

首先需要在wp-content目录下创建一个languages文件夹,用于存放语言包文件。

然后在模板目录下的functions.php,然后在代码中添加函数加载该文件夹,示例代码如下:

add_action('after_setup_theme', 'alanhou_setup');
function alanhou_setup(){load_theme_textdomain('alanhou', get_template_directory.'/languages');
}

上面代码表示在主题加载时载入语言文件也就是/wp-content/languages/文件夹下的.mo文件。

load_theme_textdomain(主题本地化)

加载翻译后的主题字符串。

如果本地主题根目录下有一个.mo文件,该文件会被包括在$domain的被翻译字符串中。

.mo文件必须根据本地设置命名。

1

<?php load_theme_textdomain( $domain, $path ) ?><br><br>

参数

$domain

(字符串)(必需)用以检索被翻译字符串的唯一标识符

 

默认值: None

$path

(未知)(可选)语言包 .mo 文件所在的目录(没有结尾的斜线)

 

默认值:false

返回的值

(布尔)

如果 textdomain 可以正常加载,返回 TRUE ;反之返回 FALSE

  关于多语言设置的两种用法,一种是直接设置,另一种是通过点击链接方式设置

 方式一、

1

2

3

4

add_action('after_setup_theme''my_theme_setup');

function my_theme_setup(){

    load_theme_textdomain('my_theme', get_template_directory() . '/languages');

}

  方式二、如果你希望通过 URL 中的参数来调用不同的语言,比如 www.example.com/?l=zh_CN 就调用 zh_CN.mo ,那你可以参考下面的例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

// 更改本地语言

    // 必须在 load_theme_textdomain() 的前面调用

    add_filter( 'locale''my_theme_localized' );

    function my_theme_localized($locale) {

        if (isset($_GET['l'])) {

            return $_GET['l'];

        }

        return $locale;

    }

// 设置主题语言路径

    // 语言包应该访问 my_theme/languages/ 目录

    // Wordpress 自身语言包放在 wp-content/languages/ 目录

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

  

WordPress是怎样知道该读取哪个语言文件呢?其实就是在它的wp-config.php文件中,

添加你的语言和语言环境代码到define。如果你想把你的主题翻译成德语,你可以这样做:

 

1

define('WPLANG''de_DE');

 

 

怎么运行的

当你通常制作一个主题的时候,你只需要简单地对任何主题文本进行编码,例如404.php文件中的404错误信息,或者诸如“comments:”或者“author:”之类的标签。如果用户的WordPress是德语,这些文本片段仍然会以英文显示。解决这个问题的方法是使用四个WordPress函数之一来返回或回显这些语句,这四个函数被设计为引用正确文本的语言文件。一旦将这些文本包装在这些函数中,就可以创建一个文件,其中包含每次加载主题时引用的所有翻译。有三个翻译文件,我们使用:

  • .pot (便携式对象模板) - 这是模板文件,它包含对主题中需要翻译的每个文本字符串的引用。这个文件不包含任何翻译。这是一个明文文件。
  • .po (便携式对象) - 由.pot文件构成,.po包含所有的字符串引用以及它们对一种特定语言的翻译。这也是一个可以编辑的纯文本文件。
  • .mo (Machine Object) - .po文件的二进制版本。通过使用机器代码,文件的使用速度可以比其明文选择更快。

POEdit是一个非常棒的程序,可以让你创建你的.pot文件,还提供了一个简单易用的图形用户界面,可以用来制作你的.po文件,更重要的是.mo文件。

首先,您需要下载POEdit,您可以在这里找到Windows,Mac和Linux:http : 
//www.poedit.net/download.php

一旦POEdit安装完毕,你可以创建你的.pot文件。要做到这一点,去文件>新目录。您将看到一个对话框,您需要输入一些基本信息。

做完上面的步骤后不出意外你会在你的wordpress仪表盘后台的Setting里面选择网站语言里看到刚刚添加的语言,选上即可。

 

最后就是在你的代码里面用函数_e()包裹待翻译词条实现多语言了,

1

<?php _e( 'No posts found' 'inthy.com' ) ; ?>

  参考网站:https://jinwensay.wordpress.com/2009/12/02/make-your-wordpress-theme-translatable/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

timestamp与timedelta,管理信息系统概念与基础

将字符串‘2017年10月9日星期一9时10分0秒 UTC8:00’转换为timestamp。100天前是几号?今年还有多少天&#xff1f;管理有不同层次所需信息各有什么特点?管理信息系统从层次上可分为哪几类&#xff1f;数据处理经历了哪些阶段&#xff1f;各有什么特点&#xff1f;什么是web&a…

ZooKeeper1 利用虚拟机搭建自己的ZooKeeper集群

前言: 前段时间自己参考网上的文章&#xff0c;梳理了一下基于分布式环境部署的业务系统在解决数据一致性问题上的方案&#xff0c;其中有一个方案是使用ZooKeeper&#xff0c;加之在大数据处理中&#xff0c;ZooKeeper确实起到协调服务的作用&#xff0c;所以利用周末休息时间…

公共的Controler,是给非授权的用户访问

issue: 我使用的环境是Vs2012 , 创建了MVC4的工程&#xff0c;然后在工程里面Webconfig, 添加了访问限制 <authentication mode"Forms"> <forms loginUrl"~/Account/Login" timeout"2880" /> </authentication> <…

替换更改登陆页面logo与链接

//替换更改登陆页面logo与链接 function custom_loginlogo() {echo<style type"text/css"> h1 a {background-image: url(.get_bloginfo(template_directory)./logo.png) !important; } </style>;}add_action(login_head, custom_loginlogo); 注: 在主题…

es6关于let和const的总结

set用于声明变量 1.var 的一个升级版 2.不存在变量提升 console.log(a);//Uncaught ReferenceError: a is not definedlet a1;console.log(a);//1 console.log(a);//undefinedvar a1;console.log(a);//1 3.会形成暂时性死区&#xff08;处于同一个块级作用域里的同名变量在let声…

解决SublimeCodeIntel回车换行误打代码

SublimeCodeIntel会自动匹配并联想词汇, 这在换行的时候非常麻烦, 每次点Enter 都会误打出代码, 解决办法分两步:第一步是在Perferences/setting User 中加入 "auto_complete_commit_on_tab": true, 然后看Perferences/KeyBindings Default中 { "keys": [&…

【转】测试过程管理案例6---如何做项目的测试经理?

帖子地址&#xff1a; http://bbs.testage.net/viewthread.php?tid4588&pid184557&page1&extrapage%3D1#pid184557 案例描述&#xff1a; 简单叙述一下我遇到的问题吧&#xff1a; 公司其它部门有个项目&#xff0c;需要做很严格的测试&#xff0c;请求我们部门支…

Mysql 根据一个表数据更新另外一个表

https://www.cnblogs.com/wu628/p/4948833.html Mysql 根据一个表数据更新另外一个表 update 更新表 set 字段 (select 参考数据 from 参考表 where 参考表.id 更新表.id); update table_2 m set m.column (select column from table_1 mp where mp.id m.id); 方法二&a…

Html5响应式设计与实现广场

由于提出的想法响应式设计&#xff0c;越来越多的网站使用这样的思想。各类大型网站如雨后春笋般涌了出来。例如&#xff1a;小米商城。天猫等。 至于响应式设计的概念等大家能够去百度百度&#xff0c;我这里就不相信解说了。直接为大家带来源代码。用Html5实现响应式的九宫格…

工作问题日志

1. 获取用户请求的路径&#xff1a;HttpServletRequest request (HttpServletRequest) req;String servletPath request.getServletPath(); 2. 相对通用的读文件流的方法&#xff08;Windows 和 Linux上都可以用&#xff09;&#xff1a;拿到流&#xff0c;然后再去读流中的内…

wordpress 每段首行空两格

p {text-indent:2.1em;} 注&#xff1a; 在文章页&#xff0c;添加样式即可。

Java简单计算器

Java简单计算器转载于:https://www.cnblogs.com/wangprince2017/p/7654542.html

【j360-boot】Spring-boot系列三(崩溃模式,不是你崩就是电脑崩)

2019独角兽企业重金招聘Python工程师标准>>> j360-boot spring-boot入门工程之j360-boot&#xff1a;&#xff08;欢迎star、fork&#xff09; https://github.com/xuminwlt/j360-boot spring-boot官方地址 http://projects.spring.io/spring-boot/ 【j360-boot】Sp…

layui-弹出层中如何关闭窗口

https://blog.csdn.net/laiyuan999/article/details/80341756 var index layer.open(); layer.close(index); //此时你只需要把获得的index&#xff0c;轻轻地赋予layer.close即可

C++Objective-c

1.两种语言的指针和引用 C中引用和指针是两个不同的概念 Objective底层是用C实现的,其对象访问机制是C中的指针访问对象,所以如果直接访问Objective-C中的变量是需要用对象名->变量名 如果在OC中定义了property a这里生成的知识get和set方法,外界并不能直接访问a,因为a默认是…

裸眼3D全攻略3:拍摄3D—瞳距、镜距、视角偏转与空间感

http://sd89.blog.163.com/blog/static/356041322014112532958728/ 3D图片的拍摄&#xff0c;与平面有着全新的不同要求&#xff0c;那就是空间感的表现。 简单来说&#xff0c;空间感是由两条视线分别从左右不同的视角&#xff0c;各自获取物体左右两面的不同信息交汇而产生的…

【教学类-42-02】20231224 X-Y 之间加法题判断题2.0(按2:8比例抽取正确题和错误题)

作品展示&#xff1a; 0-5&#xff1a; 21题&#xff0c;正确21题&#xff0c;错误21题42题 。小于44格子&#xff0c;都写上&#xff0c;哪怕输入2:8&#xff0c;实际也是5:5 0-10 66题&#xff0c;正确66题&#xff0c;错误66题132题 大于44格子&#xff0c;正确66题抽取44*…

(原)用pixi.js 实现 方块阵点击后原地自转效果

源码 各位&#xff0c;请教一个问题&#xff0c;我这个还有BUG&#xff0c;我是想实现&#xff0c;点击一下可以 停止转动&#xff0c;然后再点一下重新转动。而不是一直加速&#xff0c;有没有什么好办法&#xff1f; PS:问题已经解决&#xff0c;谢谢评论的大神Antineutrino …

datatables 增、删、查、改

前提: datatable 定义 var table $(#example).DataTable({"ajax": "donor/book_donation_data.php",responsive: true,//data: data,columns: [{data: id},{data: donor},{data: book_name},{data: author},{data: publishing_time},{data: price},{data…

一位中国婆婆的自述[转]

小孙子Toby已经3岁了。在美国待了三个月&#xff0c;洋媳妇Susan教育孩子的方法&#xff0c;令我这个中国婆婆大开眼界。每天早上&#xff0c;Toby醒来后&#xff0c;Susan把早餐往餐桌上一放&#xff0c;就自顾自地忙去了。Toby会自己爬上凳子&#xff0c;喝牛奶&#xff0c;吃…