drupal - 为全新 Drupal 8 安装设置默认语言
问题描述
在 Drupal 8 中,有没有办法为新安装自动设置安装语言?我将基于 URL,我已经有逻辑来确定应该选择哪种语言,但不确定如何在全新安装 Drupal 时使其成为默认选择。
解决方案
首先,您可以通过一些 URL 查询来填充安装状态参数。添加?langcode=en
会将其默认为英语。
否则,您将不得不使用自定义配置文件来确保做出正确的默认选择。相关代码在core/includes/install.core.inc
. 该install_drupal
函数执行 Drupal 的安装。langcode 是install_begin_request
通过由 填充的安装状态确定的install_state_defaults
。
您需要填充语言代码
if (!empty($install_state['parameters']['langcode'])) {
$install_state['parameters']['langcode'] = preg_replace('/[^a-zA-Z_0-9\-]/', '', $install_state['parameters']['langcode']);
}
查看代码,这只能通过查询参数实现
// Add any installation parameters passed in via the URL.
if ($install_state['interactive']) {
$install_state['parameters'] += $request->query->all();
}
除非您有一个自定义安装配置文件,该配置文件在安装过程开始时调用hook_install_tasks
以添加任务以设置默认语言代码。
推荐阅读
- html - flex 对这个元素没有影响,因为它不是一个弹性项目
- html - 如何在 div 上创建贴纸棒
- javascript - 添加带有浮点数的字符串Javascript
- django - django tornado 项目结构
- python-3.x - 如何检测不可迭代参数并将其转换为可迭代参数
- python - Python捕获帧而不停止VideoStream
- google-text-to-speech - 谷歌文本到语音:阅读一个句子作为较长句子的一部分
- c++ - 如何在 C++ 中制作自定义运算符
- android - 如何在运行时用 ChildFragmentManager 和没有 PagerSlidingTabStrip Xamarin.Android 标题的片段替换片段
- ruby-on-rails - MongoDB 聚合查询等效于 Ruby on Rails 不同查询