У меня недавно возникла проблема, и я не могу решить ее самостоятельно.
В моем коде $locale
возвращает текущий язык, по умолчанию используется en
{{ $locale := .Site.Language.Lang }}
После этого я проверил, что выходные данные двух следующих выражений
{{ (index .Site.Data $locale).nav.sidebar.navItems }}
{{ (index .Site.Data "en").nav.sidebar.navItems }}
правильно возвращают одни и те же данные.Файл sidebar.json выглядит следующим образом:
{
"navItems": [
{
"id": 1,
"title": "Parent",
"url": "/",
"parent": null
},
{
"id": 2,
"title": "Child",
"url": "/",
"parent": {
"id": 1
}
},
...
]
}
В приведенном ниже коде
{{ $menus := (index .Site.Data $locale).nav.sidebar.navItems }}
{{ $mainMenus := where $menus "parent" nil }}
Я получаю ошибку error calling where: can't iterate over <nil>
, но когда я изменяю ее на
{{ $menus := (index .Site.Data "en").nav.sidebar.navItems }}
результат, как и ожидалось.Я не хочу, чтобы языки были жестко закодированы из-за других языков, которые я буду использовать в своем приложении.