I have started to add in panel translations, but they don’t seem to be working. Where might I have gone wrong?
pages/notes.yml
# title
title:
en: Blog
de: Bläg
# icon
icon: 📖
# options
options:
delete: false
status: false
url: false
# tabs
tabs:
# content tab
content:
label:
en: Content
de: Inhalt
icon: text
columns:
- width: 1/2
sections:
drafts:
status: draft
extends: sections/notes
headline:
en: Work In Progress
de: Work In Progress
unlisted:
status: unlisted
extends: sections/notes
headline:
en: Ready For Review
de: Ready For Review
- width: 1/2
sections:
page:
type: fields
fields:
headline:
type: text
label:
en: Headline
de: Headline
intro:
type: markdown
label:
en: Intro
de: Intro
buttons: false
size: small
validate:
maxLength: 120
listed:
status: listed
extends: sections/notes
headline:
en: Published
de: Published
# seo tab
seo:
extends: tabs/seo
tabs/seo.yml
label:
en: SEO
de: SEO
icon: search
sections:
meta:
type: fields
fields:
seoTitle:
type: text
label:
en: Page Title
de: Page Title
validate:
maxLength: 60
seoDescription:
type: text
label:
en: Description
de: DescriptionZZ
validate:
maxLength: 150
I know almost everything is still english, but if you look inside the seo tab I have just added in a couple extra ZZ on the end of one word and translated content tab name.
Panel translations are intended to work when the user language is changed, not when you change your translation language.
That wasn’t the case in kirby 2 was it?
Yes, it was the same in Kirby 2, and is the only thing that makes sense, because the labels should be in line with the Panel language.
I’m going to high-jack this a little bit even though I got my original answer.
Are we expecting this to work?
info:
en: "{{ page.images.count }} image(s)"
de: "{{ page.images.count }} image(s)"
I currently get Invalid value for "info"
# title
title:
en: Post
de: Post
# icon
icon: 📝
# options
num: date
# status
status:
# draft
draft:
label:
en: Draft
de: Draft
text:
en: Post can only be seen by editors in the panel.
de: Post can only be seen by editors in the panel.
# review
unlisted:
label:
en: In Review
de: In Review
text:
en: Post is online but can only be visited with the direct URL.
de: Post is online but can only be visited with the direct URL.
# published
listed:
label:
en: Published
de: Published
text:
en: Post is published, online and can be viewed by all.
de: Post is published, online and can be viewed by all.
# tabs
tabs:
# content tab
content:
label:
en: Content
de: Inhalt
icon: text
columns:
- width: 2/3
fields:
headline:
type: text
label:
en: Headline
de: Headline
editor:
type: markdown
label:
en: Post Content
de: Post Content
size: huge
- width: 1/3
fields:
date:
type: date
label:
en: Date
de: Date
default: now
time: true
author:
type: users
label:
en: Author
de: Author
tags: true
categories:
type: select
label:
en: Categories
de: Categories
required: true
options:
3d:
en: 3D
de: 3D
architecture:
en: Architecture
de: Architecture
design:
en: Design
de: Design
photography:
en: Photography
de: Photography
web:
en: Web
de: Web
cover:
type: files
label:
en: Cover
de: Cover
min: 1
multiple: false
uploads: image
gallery:
type: pages
label:
en: Gallery
de: Gallery
empty:
en: "No gallery selected"
de: "No gallery selected"
info:
en: "{{ page.images.count }} image(s)"
de: "{{ page.images.count }} image(s)"
multiple: false
query: kirby.page("photography").children
image:
cover: true
help:
en: Place the {{ gallery }} tag anywhere in your text to add the selected gallery
de: Place the {{ gallery }} tag anywhere in your text to add the selected gallery
# seo tab
seo:
extends: tabs/seo
According to the docs, info
can only be a string, not an array of translations.
I don’t even know what that example is supposed to be, a headline field? 
Looks like you can translate the text of an info field: https://getkirby.com/docs/reference/panel/sections/info#text
I would have to take a closer look, but later…
Well help text is define further up the page, so not sure why this last section also talks about help text. Headlines is also defined further up the page. It’s the fact it has the word info in it, that makes me think it could/should be able to be translated.
You can see my use case for wanting it translated - I have the word images in english inside my info string. I want the word images translated to german for example.
Don’t get too hung up on “info field” it’s not an info field. It’s an option within a type of pages. It works as a single string, but the moment I try to translate it, it says invalid value. Even if I try to change this info option into a type of info and use the text option it won’t work.
Anyway, it is currently not supported for some properties. For example, if I add these lines in the pages field, it works:
'info' => function($info = null) {
return I18n::translate($info, $info);
}
Have to look if we already have an issue anywhere, otherwise, this should be on the list (or you would have to create some custom fields that override the default ones).