-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update Docs: migrate Beta Features - i18n (#7045)
- Loading branch information
1 parent
fafa5a1
commit 095cd49
Showing
2 changed files
with
127 additions
and
123 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
--- | ||
group: Configuration | ||
weight: 10 | ||
title: i18n Support | ||
--- | ||
|
||
The CMS can provide a side by side interface for authoring content in multiple languages. | ||
Configuring the CMS for i18n support requires top level configuration, collection level configuration and field level configuration. | ||
|
||
### Top level configuration | ||
|
||
```yaml | ||
i18n: | ||
# Required and can be one of multiple_folders, multiple_files or single_file | ||
# multiple_folders - persists files in `<folder>/<locale>/<slug>.<extension>` | ||
# multiple_files - persists files in `<folder>/<slug>.<locale>.<extension>` | ||
# single_file - persists a single file in `<folder>/<slug>.<extension>` | ||
structure: multiple_folders | ||
|
||
# Required - a list of locales to show in the editor UI | ||
locales: [en, de, fr] | ||
|
||
# Optional, defaults to the first item in locales. | ||
# The locale to be used for fields validation and as a baseline for the entry. | ||
default_locale: en | ||
``` | ||
### Collection level configuration | ||
```yaml | ||
collections: | ||
- name: i18n_content | ||
# same as the top level, but all fields are optional and defaults to the top level | ||
# can also be a boolean to accept the top level defaults | ||
i18n: true | ||
``` | ||
When using a file collection, you must also enable i18n for each individual file: | ||
```yaml | ||
collections: | ||
- name: pages | ||
label: Pages | ||
# Configure i18n for this collection. | ||
i18n: | ||
structure: single_file | ||
locales: [en, de, fr] | ||
files: | ||
- name: about | ||
label: About Page | ||
file: site/content/about.yml | ||
# Enable i18n for this file. | ||
i18n: true | ||
fields: | ||
- { label: Title, name: title, widget: string, i18n: true } | ||
``` | ||
### Field level configuration | ||
```yaml | ||
fields: | ||
- label: Title | ||
name: title | ||
widget: string | ||
# same as 'i18n: translate'. Allows translation of the title field | ||
i18n: true | ||
- label: Date | ||
name: date | ||
widget: datetime | ||
# The date field will be duplicated from the default locale. | ||
i18n: duplicate | ||
- label: Body | ||
name: body | ||
# The markdown field will be omitted from the translation. | ||
widget: markdown | ||
``` | ||
Example configuration: | ||
```yaml | ||
i18n: | ||
structure: multiple_folders | ||
locales: [en, de, fr] | ||
|
||
collections: | ||
- name: posts | ||
label: Posts | ||
folder: content/posts | ||
create: true | ||
i18n: true | ||
fields: | ||
- label: Title | ||
name: title | ||
widget: string | ||
i18n: true | ||
- label: Date | ||
name: date | ||
widget: datetime | ||
i18n: duplicate | ||
- label: Body | ||
name: body | ||
widget: markdown | ||
``` | ||
### Limitations | ||
1. File collections support only `structure: single_file`. | ||
2. List widgets only support `i18n: true`. `i18n` configuration on sub fields is ignored. | ||
3. Object widgets only support `i18n: true` and `i18n` configuration should be done per field: | ||
|
||
```yaml | ||
- label: 'Object' | ||
name: 'object' | ||
widget: 'object' | ||
i18n: true | ||
fields: | ||
- { label: 'String', name: 'string', widget: 'string', i18n: true } | ||
- { label: 'Date', name: 'date', widget: 'datetime', i18n: duplicate } | ||
- { label: 'Boolean', name: 'boolean', widget: 'boolean', i18n: duplicate } | ||
- { | ||
label: 'Object', | ||
name: 'object', | ||
widget: 'object', | ||
i18n: true, | ||
field: { label: 'String', name: 'string', widget: 'string', i18n: duplicate }, | ||
} | ||
``` |