FuelCMS 中的多语言
Multi language in FuelCMS
我正在尝试使用 fuelCMS 在 codeigniter 中制作一个多语言网站。我想通了一些事情:
我在MY_fuel.php
中添加了多语言选项
$config['language_mode'] = 'segment';
$config['settings']['languages'] = array(
'type' => 'keyval',
'fields' => array(
'key' => array('ignore_representative' => TRUE),
'label' => array('ignore_representative' => TRUE),
),
'class' => 'repeatable',
'repeatable' => TRUE,
'ignore_representative' => TRUE
);
我已经为不同的语言设置了导航。
<?php echo fuel_nav(array('container_tag_id' => 'masterMenu', 'item_id_prefix' => 'menu-item','subcontainer_tag_class' => array("subMenu"),'language' => $this->fuel->language->selected())); ?>
导航是这样的:
default en:
- about
- products/producta
- products/productb
以及其他语言:
nl:
- overons
- producten/producta
- producten/productb
它显示了正确的导航。但是选择的语言不是 url 中的 "imported"。所以它总是消失。
示例:
如果我在关于页面(默认为英语)上,我将语言更改为 nl。它仍然显示关于页面,但带有正确的荷兰语导航。所以我对此有一些疑问。
(已解决此部分)是否有可能让语言始终在 url 中?我查看了菜单 class (http://docs.getfuelcms.com/libraries/menu) 但无法添加它。
我可以在 CMS 中有 1 个页面包含多语言吗?如果我更改语言,它会显示正确的荷兰语文本吗?
类似
{language=en}About the company{/language}
{language=nl}Over het bedrijf{/language}
- 或者有其他解决办法吗?如果我更改语言,也许总是会转到该语言的主页?
我设法解决了一部分问题。
我添加了一个页面 "overons"(NL 的语言参数,位置提示)
然后我使用位置参数 nl/overons 手动为该页面添加了导航。这行得通。
只有当我在英文页面上更改语言时,它才会保持英文。所以我不能 link 页面到翻译页面。
如果我在视图文件夹中手动添加它们似乎是可能的。但我不知道如何在 CMS 中解决这个问题。
View Pages
Additionally, if your pages are using views and there is a language
value set by the user using Fuel_language, it will first look for a
view file in the views/language/{language}/ folder and if it doesn't
find it, it will default to just the views folder.
编辑:
我已经用另一种方法解决了。只是还没有导入到 CMS。
我在视图中创建了以下结构:
language/
language/fr/
language/fr/home.php
language/fr/company.php
-
language/nl/
language/nl/home.php
language/nl/company.php
并且在全局视图地图中,我添加了主页&company.php。
对于正确的菜单,我有这个代码
views/_variables/nav.php
if($this->fuel->language->selected() == "nl"){
$nav['home'] = 'Home';
$nav['contact'] = 'Contact';
$nav['company'] = 'Over ons';
}
if($this->fuel->language->selected() == "en"){
$nav['home'] = 'Home';
$nav['contact'] = 'Contact';
$nav['company'] = 'About us';
}
if($this->fuel->language->selected() == "fr"){
$nav['home'] = 'Accueil';
$nav['contact'] = 'Contact';
$nav['company'] = 'Société';
}
我正在尝试使用 fuelCMS 在 codeigniter 中制作一个多语言网站。我想通了一些事情:
我在MY_fuel.php
中添加了多语言选项$config['language_mode'] = 'segment';
$config['settings']['languages'] = array(
'type' => 'keyval',
'fields' => array(
'key' => array('ignore_representative' => TRUE),
'label' => array('ignore_representative' => TRUE),
),
'class' => 'repeatable',
'repeatable' => TRUE,
'ignore_representative' => TRUE
);
我已经为不同的语言设置了导航。
<?php echo fuel_nav(array('container_tag_id' => 'masterMenu', 'item_id_prefix' => 'menu-item','subcontainer_tag_class' => array("subMenu"),'language' => $this->fuel->language->selected())); ?>
导航是这样的:
default en:
- about
- products/producta
- products/productb
以及其他语言:
nl:
- overons
- producten/producta
- producten/productb
它显示了正确的导航。但是选择的语言不是 url 中的 "imported"。所以它总是消失。
示例: 如果我在关于页面(默认为英语)上,我将语言更改为 nl。它仍然显示关于页面,但带有正确的荷兰语导航。所以我对此有一些疑问。
(已解决此部分)是否有可能让语言始终在 url 中?我查看了菜单 class (http://docs.getfuelcms.com/libraries/menu) 但无法添加它。
我可以在 CMS 中有 1 个页面包含多语言吗?如果我更改语言,它会显示正确的荷兰语文本吗?
类似
{language=en}About the company{/language}
{language=nl}Over het bedrijf{/language}
- 或者有其他解决办法吗?如果我更改语言,也许总是会转到该语言的主页?
我设法解决了一部分问题。
我添加了一个页面 "overons"(NL 的语言参数,位置提示) 然后我使用位置参数 nl/overons 手动为该页面添加了导航。这行得通。
只有当我在英文页面上更改语言时,它才会保持英文。所以我不能 link 页面到翻译页面。
如果我在视图文件夹中手动添加它们似乎是可能的。但我不知道如何在 CMS 中解决这个问题。
View Pages
Additionally, if your pages are using views and there is a language value set by the user using Fuel_language, it will first look for a view file in the views/language/{language}/ folder and if it doesn't find it, it will default to just the views folder.
编辑:
我已经用另一种方法解决了。只是还没有导入到 CMS。
我在视图中创建了以下结构:
language/
language/fr/
language/fr/home.php
language/fr/company.php
-
language/nl/
language/nl/home.php
language/nl/company.php
并且在全局视图地图中,我添加了主页&company.php。
对于正确的菜单,我有这个代码 views/_variables/nav.php
if($this->fuel->language->selected() == "nl"){
$nav['home'] = 'Home';
$nav['contact'] = 'Contact';
$nav['company'] = 'Over ons';
}
if($this->fuel->language->selected() == "en"){
$nav['home'] = 'Home';
$nav['contact'] = 'Contact';
$nav['company'] = 'About us';
}
if($this->fuel->language->selected() == "fr"){
$nav['home'] = 'Accueil';
$nav['contact'] = 'Contact';
$nav['company'] = 'Société';
}