Cake佣工和i18n
-
06-09-2019 - |
题
我有一些问题有关cake,我花了很长时间的搜索解决方案,并为我没有找到任何我不确定我把正确的方法。
因此,我有一个菜单/网站地图,其部分静态(xml文件的i10n)和动态的一部分(数据库i18n)
我已经要求高速缓存的菜单,以便:
一组创建一个缓xml文件的整个菜单的每个语言,如果它不存在
一个帮手创建一个缓html格式化,xml文件创造的成分
的布局使用的辅助来加菜单中的页面
问题:
我如何获得可利用的语言助手和由的组成部分?
是这样的
$this->L10n = new L10n(); $this->L10n->lang
正确的方式得到实际的语言?
如果我进佣工/组件在app_controller而不是输入它们在每个控制器
class AppController extends Controller { var $components = array('menu', 'otherComponent'); var $helpers = array('menuCache'); function beforeFilter(){ $this->menu->doSomething(); } }
我得到一个 call to undefined object $html
的 echo $html->charset();
在布局
不能理解为什么...
解决方案
你可以使用 Configure::read('Config.language')
.一部分的食谱国:
当前区域的当前值的配置::read('Config。语言').值的配置。语言被分配在L10n级,除非它已经设定。
I18n,类负责翻译的使用 __()
, 使用 Config.language
所以,除非你来复盖它 bootstrap.php
, 那变量包含选定的语言。实际上,即使你复盖,它仍将包含所使用的语文(可能有不一致之处,因为I10n是不是真的知道的变化,但我从来没有遇到任何).
获得一个名单的语言,可以使用 L10n::catalog()
.我不确定这是你追求的是什么,但是,由于它列出所有的语言Cake知道,不仅在语言实际上有一个翻译 app/locale
.
不隶属于 StackOverflow