gpt4 book ai didi

silverstripe - 在 cms 中限制语言

转载 作者:行者123 更新时间:2023-12-04 19:37:52 25 4
gpt4 key购买 nike

我使用 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;

在 flush=1 之后我得到以下错误: fatal error :无法访问 ... _config.php 中的私有(private)属性 i18n::$common_locales

知道哪里出了问题吗?谢谢

最佳答案

从 3.1 开始,大多数静态 php 变量都是私有(private)的。这意味着您无法再访问这些内容。
这个 api 更改的原因是它们现在被配置层缓存(这也是为什么你现在必须 ?flush=1 在类中更改私有(private)静态变量后,例如使用 private static $db )

如果你想在配置层更新一些东西,你可以这样做:

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

您可以使用配置更新来覆盖通用语言环境(类为“i18n”,字段为“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',
));

关于silverstripe - 在 cms 中限制语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20282841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com