Wordpress 语言包设置和翻译

多语言翻译设置

  1. 主题的functions.php添加多语言的初始代码
    1
    2
    3
    4
    
    function theme_languages_init(){   
        load_theme_textdomain('bluenight', get_template_directory() . '/languages');   
    }
    add_action ('init', 'theme_languages_init');
    

插件为:

1
2
3
4
5
6
add_action('plugins_loaded','MingPressAdmin::mingspress_textdomain');
class MingPressAdmin {
	static function mingspress_textdomain() {
		$result = load_plugin_textdomain( 'mingspress', false, dirname( plugin_basename( __FILE__ ) ) );
	}
}

将对应的语言包放在主题下,bluenight是主题名,也相当于翻译的命名空间


2. 在主题中使用_e__标记需要多语言翻译的内容,如:
1
2
3
4
// 普通的输出使用 _e() 函数   
<div class="post"><p><?php _e('Sorry, no posts matched your criteria.', 'bluenight'); ?></p></div>   
// 在函数中走参数或返回值输出使用 __() 函数   
echo the_tags('<h2>'.__('Related ','bluenight'), ' , ' , __(' Posts','bluenight').'</h2>').'<ul>';
  1. PoEdit 设置

下载地址:http://poedit.net/

安装后新建一个工程,

翻译的语言这里选择:简体中文/zh_CN

确认后再点击保存会提供保存的名称和位置,我们放在主题的language下,命名为zh_CN.po

如果可供其他人翻译的模板,则翻译语言一则选择英语,保存为主题名.pot

那么其他人翻译时可以用PoEdit中导入此模板进行翻译,wordpress官方主题就是这样的

保存后点击从源代码提取,填写翻译的属性,再保存一次

源路径填写为文件上一级目录:

源关键字:

__
_e
_n:1,2
_x:1,2c
_ex:1,2c

_n是单复数,如评论

<?php  
echo _n( 'There is a comment' , 'There are comments' , get_comments_number() );  
?>

_x和_ex是按上下文语义翻译,如:

名词:一篇文章

<?php _ex("Post","a post","mings");?>

动词:发布

<?php _ex("Post","To post","mings");?>

点击从源文件更新,此时PoEdit搜索到的翻译字符串为

确认后会自动导入翻译文本

修改wp-config.php的语言常量

define('WPLANG', 'zh_CN');      

参考文章:
http://www.wpdaxue.com/localize-wordpress-themes.html
http://www.wpdaxue.com/difference-between-__-_e-_x-_ex-and-_n.html
WordPress主题插件汉化教程 - 露兜博客

令插件支持语言包

function myplugin_init() {
  load_plugin_textdomain( 'wpdaxue', false , dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action('plugins_loaded', 'myplugin_init');

此时語言包命名方式为 wpdaxue-zh_CN.po,放在插件的languages目录下

linux 设置日期

linux 设置日期

linux系统下查看和设置日期时间的命令都是date。

查看日期时间命令:date

设置日期时间命令:date -s [date|time]

设置系统日期为2008年9月9日

1
date -s 20080909

设置系统时间为14:25:49

1
date -s 14:25:49

设置系统日期和时间为:2008年9月9日14时25分49秒

1
date -s '20080909 14:25:49'   //一定要加引号才行。

其实设置的日期和时间格式是灵活的,可以有很多格式。

jqmobi和phonegap

jqMobi资源

phoneGap资源

Android

partyline优化建议

安装浏览器扩展测试

chrome扩展: https://developers.google.com/speed/docs/insights/using_chrome

图片、css、js静态资源缓存时间

除对缓存有特殊要求的资源外, 资源的缓存时间使用expires响应头, 设置为一周以上,一年以下

调整CSS结构加速首屏呈现速度

提取并内嵌关键的css样式,延迟加载次要样式(在首屏呈现后加载)

将需要在首屏加载时使用的样式内嵌在<style> 内,次要样式使用js加载,如:

<html>
  <head>
    <style>
      .blue{color:blue;}
    </style>
    </head>
  <body>
    <div class="blue">
      Hello, world!
    </div>
    <script>
      var cb = function() {
        var l = document.createElement('link'); l.rel = 'stylesheet';
        l.href = 'small.css';
        var h = document.getElementsByTagName('head')[0]; h.parentNode.insertBefore(l, h);
      };
      var raf = requestAnimationFrame || mozRequestAnimationFrame ||
          webkitRequestAnimationFrame || msRequestAnimationFrame;
      if (raf) raf(cb);
      else window.addEventListener('load', cb);
    </script>
  </body>
</html>

减少首屏内容大小:
https://developers.google.com/speed/docs/insights/PrioritizeVisibleContent

优化css推送:
https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery

精简压缩html,css,js

参考:https://developers.google.com/speed/docs/insights/MinifyResources

图片压缩

  • 图片格式选择:png格式各方面优于gif , 尽量使用png替代gif格式的图片,仅对简单图像,如小于10x10像素或少于三种颜色的图像。对照片类图片使用jpg格式,不要使用bmp或者tiff格式。

需要动态处理的图片(如新闻图片),可以使用在程序内调用对应的上述外部程序,如上传图片成功后,php中可使用execsystem等函数调用jpegtran或optipng操作图片,如果能找到使用编程语言存在精简压缩处理图片的类库或函数,请使用类库或函数处理更好。

固定的图片如css样式图片,背景图片,icon等,可以直接使用 chrome扩展 保存处理后的图片或对应压缩工具处理过的图片来替换。


服务器架构方案,安装服务器模块自动优化

pagespeed有服务器自动优化模块,当前只支持nginx和apache。

在源服务器跟squid之间加入一层(或者直接使用nginx或者apache做反向代理),放入一个nginx(安装ngx_pagespeed模块)服务器,为节省带宽,最好是跟squid在同一服务器或同一内网,nginx作为源服务器的反向代理,squid作为nginx的反向代理和缓存服务器。缺点是占用部分服务器资源。响应时间可能略有增加。

ngx_pagespeed能完成基础优化。这是测试站点得分,与设想架构不同的是,这是在squid外包装了nginx作为反向代理。测试服务器在北京,存取香港服务器速度很慢,因而响应时间一项得分表现不佳

文件系统损坏原因

原因:
关于昨天服务器文件系统损坏的原因,我怀疑可能是这样的,上周给服务器装了个ngx_pagespeed,一个用来提高网站性能的nginx模块,它运行时产生大量的cache文件(按默认设置放在系统盘的/var/目录上)。网站高访问量时会对cache文件进行高速读写,可能这样导致系统盘的文件系统损坏。

现在新服务器上把这些cache放在单独的临时文件系统分区,跟系统盘分离了。

Windows批处理备份mysql

服务器使用windows2008rc,用批处理写一个mysql的备份脚本,放到Windows计划任务,每天零时执行。

  • 使用mysql自带的 mysqldump 命令备份整个数据库
  • 使用好压的命令行压缩
  • 保留一周备份文件
  • 写入日志

详细代码如下:

@echo off
set "ymd=%date:~,4%%date:~5,2%%date:~8,2%"
set storeDir="F:\databases\%ymd%"
set /A keepFromDay=%ymd%-7

md %storeDir% 2>nul
"E:\xampp\mysql\bin\mysqldump.exe"  -u用户名 -p密码 --lock-tables   --all-databases > %storeDir%\db.sql 2>nul
echo Haozip loading...
cd /d %storeDir%

"C:\Program Files\HaoZip\HaoZipC.exe" a -tzip db.sql.zip db.sql
del /q db.sql

rem del 7 days backup files
@echo off

for /f %%i in ('dir /b ..\') do (
   if %%i LSS %keepFromDay%   (
    echo deleting %%i 
    rd /s /q "F:\databases\%%i" 
   )    
)

echo Finish at  %date% %time%  >> ../backup.log

Firefox搜索栏修改

谷歌搜索挂了好几天了,对于技术人员来说真是十分痛苦的事情,众所周知,搜索技术相关的内容google的结果能甩百度好几条街。除了翻墙之外,我发现另外一个好东西:谷粉搜搜

谷歌搜索-谷粉搜搜:由谷歌粉丝联合建立的方便大家稳定高速地使用谷歌搜索的搜索引擎。谷歌搜索如果您所在地区无法打开google或者比较卡,欢迎使用谷粉搜搜进行谷歌搜索。

原理应该这样的:在获取用户输入的查询关键字后,通过在墙外的服务器提交到google服务器,取得响应内容后,再将结果返回给用户,也就是间接给你翻了个墙。当然它可以对结果进行一些处理,比如改变样式甚至加点广告什么的。

把谷粉搜搜加入firefox搜索栏

首先找到firefox的 Profile文件夹下的searchplugins目录,也就是在你个人设置的文件夹下,如:G:\falconDisk\firefox\Profiles\ ,如果没有自己定义,则在firefox安装目录的browser下。新建一个wwwgooglecomhk.xml文件 ,写入以下内容,重启firefox即可,妈妈再也不用担心我的搜索了。

1
2
3
4
5
6
7
8
9
10
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
<os:ShortName>谷粉搜搜</os:ShortName>
<os:Description>打不开就用谷粉搜搜</os:Description>
<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADRUlEQVQ4jSXT60/VdQDH8c/vd7AlI4EHtjW0WCs1i7U2i8u54GWxYDVtpkabumX5JLs86oLYEgRDQjAIBbsYayTmCjDQMwsrtcgxUBdWkNyyJDkCB9jRw+/8vu8e8OD9D7y2tyTJiUFX/wipWxuJe/pzSo9fwiVGNDzB2ewsei0xa9u4Eq5sIpYYl5AkxRwwwLriU2hTEHtbFwte/I6//p0CEyPyWy/XE+JxJYzlwbVExBIhxTFkCwE4jsMDO9rRtk60vQfl/0jxN5fBgInBUE4OUVnEPCJqWUzKw5glBiVkXCAG3sIO7M0/Y2/vxH7hHJv2dwMOAFfXr2NGcWAJVx6mLfGPRJ/tQeACLkVNl9H6IHEvXcB+/nvyqzpxMXAbfnloGT/dcwctS5JpT02mK2kew7botYT6h29igNFwhGU72tBzp1mwOUiw5xoGqGs5zOI3UtFH6Xhq/ajay/yyJ8h6OY19DyeipVs+43jHFXANE1NRjpwZoG/kJi6GklN1qOgRPPVePIeyUG06qs3EOpCFqrOx9q5GCzceJWntx6x+vZE9DR1zajic6fsV+6370OHHUV06qk/HqvFh1fhQZQZWuR9rbwAtzW9g0YYvuDPvU5KfOsTgaBhjDMOhayypfxbVpGEfzMQ+6EU1GdgferEq/djlflSWge7P3U/Glk/Y+G4rr1X9QE/fOC4Gg8vY1Bg5R1/BqkhDtT5U7Z2r0o/2+dEeP2o8fZGxcRcDzE72Mnq1mYGeWm5N3wBgNuaQ2/gqVsVyVJ2BqrzY5ZnofR8q8SFcmP7vIt3NGQw2x/N3mxj52uZK03LCoT/BxPh9dIi7SrNRVSaeD3zYZX5UEkC7A+i2M0NXYzoT3wpz3sY5G0+kYz43jon+5jyMMZgYPHhgAypbgSq8qNTPvN1rsHYF0FRogD8aUrgVTCIcTGCqLZHJ1kRmTqRw/atHITpNxDEsLslDpZnYJatQqQ/7vZVopx85McPgya2EvkxgsuVuwq0LmTmRQvjYvYyfK8QATRdO4nnzMaxiL56ibLQrgAoC6J01c0c6MyHGzhcy0b6WcMuTTLQ/Q6S7mqgT4dLwAIvezkUFK7ALs1HhSrTThwpWIUn/A1g/hnpCRmiJAAAAAElFTkSuQmCC</os:Image>
<SearchForm>http://www.gfsoso.com/</SearchForm>
<os:Url type="text/html" method="GET" template="http://www.gfsoso.com/">
	<os:Param name="q" value="{searchTerms}"/>
</os:Url>
</SearchPlugin>

php-fpm优化

当前内存使用情况

1
2
3
4
5
[root@cpp22 ~]# free -m
			total       used       free     shared    buffers     cached
Mem:          7870       7736        134          0       1009       5010
-/+ buffers/cache:       1716       6154
Swap:         2047          0       2047

查看php-fpm进程是否够用:

使用

1
netstat -napo |grep "php-fpm" | wc -l

查看一下当前fastcgi进程个数,如果个数接近conf里配置的上限,就需要调高进程数。

php最大执行时间的设置

如果file_get_contents请求的远程资源如果反应过慢,file_get_contents就会一直卡在那里不会超时。我们知道php.ini 里面max_execution_time 可以设置 PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm) 中,该参数不会起效。真正能够控制 PHP 脚本最大执行时间的是 php-fpm.conf 配置文件中的request_terminate_timeout参数。

pm.*的设置

如果设置成static,php-fpm进程数自始至终都是pm.max_children指定的数量,不再增加或减少。如果设置成 dynamic,则php-fpm进程数是动态的,最开始是pm.start_servers指定的数量,如果请求较多,则会自动增加, 保证空闲的进程数不小于pm.min_spare_servers,如果进程数较多,也会进行相应清理,保证多余的进程数不多于 pm.max_spare_servers。