Cakephp的国际化和poEdit的使用

原文出处:在Cakephp中使用i18n本地化程序,并使用poedit编辑语言文件 | 程序如此灵动!

alswl: 官方的帮助手册都没有这篇文章来的详细,太赞了。这篇文章不仅介绍了CakePHP的使用,更多的介绍了PoEdit的使用,图文并茂,着实详细,感谢原作者苏南。

—– 以下为原文 —–

Cakephp的很强大的i18n功能就是用来实现本地化和国际化的。他通过使用语言配置文件使得程序能够很好的适应变化进行本地化。通过新建locale/chi/ LC_MESSAGES/default.po文件,并指定语言选项为“chi”实现。本文中说的就是如何实现这个本地化过程,当然本文中的poedit并不是必须的 ,但是他可以使得工作效率更高。

一、关于i18n和L10n

这2个东东其实头一次我看到的时候也是一头雾水,但是经过百度的一通搜索,得出的结论就是,不管是几个n,最终的目的就是实现程序本地化就好了,说白了,就是由很多的 语言配置文件,反正我是这么理解的。大家也可以去看看,http://baike.baidu.com/view/372835.htm 这里有很详细的说明。

二、在Cakephp里面,实现本地化的方法

目前为止 …

more ...

IE XML 缓存问题

明天开始上交毕业设计初稿,其中有一节是遇到的问题和解决办法。我把平时在BooguNote 中的琐碎片段整理出来,便有了此文。

PS:之前已经有过3篇相关毕设的文章:

CakePHP的全局变量

FMS的80端口占用

SWFObject 一款JavaScript的Flash检测与插入模块

—- 正文开始 —-

问题背景

系统要实现一个操作,即每次向同一个url 请求一个GET方法获取一个xml文件,这个xml文件记录着聊天数据并且是即时生成的。当用FireFox或者Chro me请求时候都能获得正确的数据,而IE则常常出现无法获取实时的XML数据。

而如果在地址栏中填入 http://localhost/AzaAjaxChat/src/Chat/getXml?messageId=41 这个原始的XML文件地址,就可以获取正确的XML文件。并且在下次IE 的 HTTPRequest请求时候就正常了。看来问题出在IE自身的缓存上面。

解决方法

1.使用URL参数随机事件

在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数,在javascript发送的URL后加上t=Math.random()。

当然,不是直接把t=Math.random()拷贝到URL后面,应该像这样:

url …
more ...

SWFObject 一款JavaScript的Flash检测与插入模块

今天开始AzaAjaxChat的视频聊天模块,拖FMS的福,实现起来很轻松,不过后来在JavaScript和Flash的交互上遇到了问题。

Flash在各个浏览器中的实现始终是个麻烦的事情,什么Object Embed~,似乎没有什么标准的格式,一般都要做一些浏览器Hack,我对这些深痛恶绝,在 泡了一下午前端相关的论坛后,偶然发现一款JavaScript交互的神器。

image
image

SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块

SWFObject是一个用于在HTML中方面插入Adobe Flash媒体资源(*.swf文件)的独立、敏捷的JavaScript模块。该模块中的JavaS cript脚本能够自动检测PC、Mac机器上各种主流浏览器对Flash插件的支持情况。它使得插入Flash媒体资源尽量简捷、安全。而且它是非常符合搜索引擎优 化的原则的。此外,它能够避免您的 HTML、XHTML中出现object、embed等非标准标签,从而符合更加标准。

(即:通过text/html应答页面, 而非application/xhtml+xml)

官方在Google Project Host中,下载的代码包中有一个简单的Example,也包含了SWFObject的源码,感兴趣的同学可以研究一下。

相关链接:

swfobject - Project Hosting …

more ...

FMS的80端口占用

AzaAjaxChat 的语音聊天需要使用的Flex的流媒体传输,我在评估的方案有两套:1.使用原声Socket在客户端进行连接,2.使用FMS 流媒体服务器进行数据传输。

FMS (Flash Media Server)在安装时候,有一个选项是端口使用哪个,默认是1935 和 80端口,安装之后发现在使用两个Apache在80端口发生冲突(FMS使用的也是Apache服务器),需要将这个端口修改。

Google后,发现修改 Flash Media Server 3conffms.ini 删除80留下1935即可。

# IP address and port(s) Flash Media Server should listen on
# For example:
#    ADAPTOR.HOSTPORT = :1935,80
#
ADAPTOR.HOSTPORT = :1935

唔~继续搞鼓Flex的流媒体传输了 …

more ...

CakePHP的全局变量

毕业设计AzaAjaxChat 中有一个功能,记录当前在线用户,直观的看,用Application对象就可以解决。

忙了一会发现,原来PHP没有Application对象这个概念,于是我想到了全局变量,噩梦便开始了。(Application 和全局变量其实完全不是同一个概念)

我使用的框架是CakePHP,查找资料后,找到了几种CakePHP中使用全局变量的方法。

一、使用bootstrap.php文件

在app/config 下面,有一个bootstrap文件,从名字就可以看出,这个是在控制器之前加载的文件,根据官方的描述,有下面几个用法。

  • 定义方便的函数
  • 注册全局常量
  • 定义新增的控制器,视图,控制器路径

通过这个文件可以实现全局变量的声明。

if (!isset ($globalAAC)) {
    global $globalAAC;
    $globalAAC = array (
        'currentMessageId' => -1,
        'onlineUsers' => array()
    );
}

在其他文件中就可以调用这个全局变量了。

二、通过Configure 类

Configure类是CakePHP用来进行配置文件的地方,通过write() 和read()方法 …

more ...

最近在学的技术

根据这篇日志的题目,必然是一篇水文,我思量再三,还是把它放出来,这些技术的接触把我带入了另一个广阔的天堂。这是我学Java以来的第二个里程碑。

使用Java1年半,1年前开始JSP编程,一直是我和周围的朋友自己摸索,学校没有开Java课,也没有参加什么培训课程,面对庞大的Java开源分支,我一直摸索 ,不能登堂入室。

万分感谢倪经理这1个月来的教导,他给了我一个不一样的Java。

iBatis

如果说Hibernate是一款自动化的导弹,那么iBatis则是一款轻型的半自动步枪,简介、高效、方便配置。加上iBator这个神器,iBatis可以使开发 效率几倍提升。

年前开始学习iBatis,想借其思想自己完成一个简单的ORM系统,3月份时候,公司的一个新框架采用了iBatis,更是给我提供了一个绝佳的Playgroun d。Hibernate和iBatis有各自的适合使用的领域,不能单纯的说谁好谁不好,不过iBatis绝对值得尝试。

动软的.net生成器使用的DAL接入层也是使用的iBats.net做数据接入。

Jaas

我对权限控制的理解,从最早的单表用户字段管理,到贴吧的基于角色权限控制,直到后来公司使用的基于权限+菜单控制,最好到现在的Jaas提供的资源-角色-权限- 菜单 控制体系。细化到原子级的权限控制带来了莫大的好处,这个很大程度归功于Jaas。

Java Authentication …

more ...

Log4D改版完成

image新主题SimpleD也运行 了一段时间了,没出什么大Bug。其实从刚工作时候,也就是11月份,就一直说要自己写一个主题,拖啊拖,拖啊拖,拖到上个月才正式发布SimpleD 1.0版。现在缝缝补补到1.3了。

根据我的工作性质,我本身也算半个Web Designer,花这么长时间搞鼓一个主题是有原因的。最大的问题不是来自主题本身,毕竟我不是艺术家,问题大部分集中在 插件的测试和融合上。下面我就把制作我主题的预期目标和中间遇到问题的解决方案分享一下。

一、使用框架

第一件要做的事情是使用一套现有的WordPress主题框架。对于IT从业者来说,编码之前使用一个健壮灵活的框架是多么重要。这里推荐2个框架Sandbox 和 WordPress Basis Theme。

1.Sandbox

下载地址:sandbox-theme - Project Hosting on Google Code

sandbox主题中文语言(汉化)包:sandbox主题中文语言(汉化)包 - Kily’s Blog …

more ...

PDA"未能建立与网络的连接"的解决办法

遇到这个问题大凡是因为模拟器或者真机无法连接网络,所以需要先测试网络是否畅通,在真机或者模拟器的IE中打开需要的WebService地址,看看是否能够正常获 取。

确定是网络原因后,可以采用多种方式连接网络,比如使用虚拟网卡来实现,又或者使用ActiveSync来实现。

使用本地网卡

在模拟器的文件-配置中的网卡中,选择本地网卡,可能会需要提示安装Virtual PC 2007,我不愿意装这么一个大家伙,也就没有尝试这种方法,需要的朋友可以在Download details: Virtual PC 2007来下载Virtual PC 2007进而连接互联网。

使用ActiveSync

ActiveSync是一个连接Win系列手持到电脑的同步软件,通过它可以使真机或者模拟机连接网络,步骤如下。

1、打开ActiveSync ,点击文件-连接设置,在“允许连接到以下其中一个端口”下选择“DMA”。

2、打开 VS2005,点击菜单工具-设备仿真管理器,选择一个windows mobile 5.0 PocketPC 模拟器。在右键菜单中点击“连接”。等模拟器启动后 …

more ...

VS2005无法创建或打开"智能设备"项目的一个问题的解决方法

状况

在VS2005中创建或打开“智能设备”项目时,提示以下错误: “从用户数据存储中检索信息时出错。系统未找到指定的对象。” 和 “由于数据存储中不存在项目引用的设备平台,因此无法打开项目。”

在打开VS2005的“工具”-“设备仿真器管理器”时,提示以下错误: “未能正确加载包”Smart Device Configuration Package“( GUID = {D245F354-3F45-4516-B1E6-04608DA126CC} )。请与包供应商联系以获得帮助。由于可能会发生环境损坏,建议重新启动应用程序。要禁止将来加载此包吗? 可以使用”devenv /resetskippkgs“重新启用包加载。”

不成功的解决办法

有说把.csproj文件中的<PlatformID>4118C335-430C-497f- BE48-11C3316B135E</PlatformID>改成<PlatformID>3C41C503-53EF-4c2a- 8DD4-A8217CAD115E</PlatformID>,原因说是“3C41C503-53EF-4c2a- 8DD4-A8217CAD115E”来自任意一个能运行的.net cf2.0项目的.csproj文件 …

more ...

Dean's FCKEditor上传目录修改

一直喜欢WorePress默认的上传文件方法,通过WP-content/uploads/年/月分组。

网站改版时候果断的把Dean’s FCKEditor With pwwang’s Code Plugin For Wordpress换成了Dean’s FCKEditor For Wordpress,Dean’s FCKEditor With pwwang’s Code Plugin For Wordpress是带一个代码编辑器的CKEditor插件,和WP-Syntax配合很好用,而Dean’s FCKEditor For Wordpress是常规的CKEditor。

PS:为神马要用两款插件呢,其实都是为了代码高亮,现在我发现Dean’s FCKEditor For Wordpress+SyntaxHL才是王道啊 …

more ...