我有一些问题有关cake,我花了很长时间的搜索解决方案,并为我没有找到任何我不确定我把正确的方法。

因此,我有一个菜单/网站地图,其部分静态(xml文件的i10n)和动态的一部分(数据库i18n)

我已经要求高速缓存的菜单,以便:

  1. 一组创建一个缓xml文件的整个菜单的每个语言,如果它不存在

  2. 一个帮手创建一个缓html格式化,xml文件创造的成分

  3. 的布局使用的辅助来加菜单中的页面

问题:

  • 我如何获得可利用的语言助手和由的组成部分?

  • 是这样的

    $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 $htmlecho $html->charset(); 在布局

不能理解为什么...

有帮助吗?

解决方案

你可以使用 Configure::read('Config.language').一部分的食谱国:

当前区域的当前值的配置::read('Config。语言').值的配置。语言被分配在L10n级,除非它已经设定。

I18n,类负责翻译的使用 __(), 使用 Config.language 所以,除非你来复盖它 bootstrap.php, 那变量包含选定的语言。实际上,即使你复盖,它仍将包含所使用的语文(可能有不一致之处,因为I10n是不是真的知道的变化,但我从来没有遇到任何).

获得一个名单的语言,可以使用 L10n::catalog().我不确定这是你追求的是什么,但是,由于它列出所有的语言Cake知道,不仅在语言实际上有一个翻译 app/locale.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top