限制cms中的语言

 手机用户2502918767 发布于 2023-02-13 19:49

我使用silverstripe 3.1我想限制CMS中下拉列表中可用的语言(仅限德语​​和英语).因此,我将以下代码放在我的mysite/_config.php中

i18n::set_locale('de_DE');
$allowed_locales = array(
   'de_DE' => array('Deutsch', 'Deutsch'),
   'en_EN' => array('English', 'English')
);
i18n::$common_locales = $allowed_locales;

刷新= 1我得到以下错误:致命错误:无法访问私有属性i18n :: $ common_locales in ... _config.php

任何想法出了什么问题?谢谢

1 个回答
  • 从3.1开始,大多数静态php变量都是私有的.这意味着您无法再访问这些内容.
    这个api更改的原因是它们现在被配置层缓存了(这也是为什么你必须在更改类中的私有静态之后立即刷新= 1 private static $db)

    如果要更新配置层中的内容,可以使用以下命令:

     Config::inst()->update('CLASS', 'FIELD', $value);
    

    你可以使用config update来覆盖常见的语言环境(类将是'i18n',而field将是'common_locales'):

    Config::inst()->update('i18n', 'common_locales', $array);
    

    注意:如果要完全覆盖现有配置,则必须先执行此操作remove().

    Config::inst()->remove('i18n', 'common_locales');
    Config::inst()->update('i18n', 'common_locales', $array);
    

    但是,如果您正在使用可翻译模块并且想要限制可翻译语言的数量,那么已经有一种更好的方法:

    // in your _config.php
    i18n::set_locale('en_US');
    Translatable::set_allowed_locales(array(
        'de_DE',
        'en_US',
     ));
    

    2023-02-13 19:51 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有