This issue has been created
 
 
Book Versions / cid:jira-generated-image-avatar-b0cca7d7-d42f-4a38-920e-7fb99c7892fc BVERSION-56 Open

Add multilingual feature

 
View issue   ·   Add comment
 

Issue created

 
cid:jira-generated-image-avatar-1c9faa22-0ca2-4505-b1c2-3c82f3c974e6 Paul Pantiru created this issue on 16/Dec/24 07:16
 
Summary: Add multilingual feature
Issue Type: cid:jira-generated-image-avatar-b0cca7d7-d42f-4a38-920e-7fb99c7892fc New Feature
Assignee: Unassigned
Created: 16/Dec/24 07:16
Priority: cid:jira-generated-image-static-major-f75fdb7f-fdec-458a-8b4c-f7cf8489130c Major
Reporter: Paul Pantiru
Description:
  1. Book Versions Multilingual Feature Design
    1. 1. Class Structure
      1. New Translation Class(es)
        ```
        BookVersions.Code.PageTitleTranslationClass
        Properties:
  • language (String, required) - Language code
  • title (String) - Translated page title
  • status (StaticList) - Translation status ("not_translated", "in_progress", "translated")

Attached to: WebHome pages for unversioned and in content sub-pages for versioned
```

```
BookVersions.Code.MultilingualClass
Properties:

  • enabled (Boolean, required) - Enable disable feature
  • supportedLanguages (Multivalued input field) - List of supported languages

Attached to: WebHome of new Languages space
```

    1. 2. Document Structure
      1. Unversioned Page
        ```
        MyBook/Page1/
        ├── WebHome
            ├── BookPageClass (unversioned: true)
            ├── PageTitleTranslationClass objects (for title translations)
            └── Content with translation macros
        ```
      1. Versioned Page
        ```
        MyBook/Page1/
        ├── WebHome 
        │   ├── BookPageClass (unversioned: false)
        ├── v1.0/ (hidden)
        │   ├── BookVersionedContentClass
        │   ├── PageTitleTranslationClass objects
        │   └── Content with translation macros
        └── v2.0/ (hidden)
            ├── BookVersionedContentClass
            ├── PageTitleTranslationClass objects
            └── Content with translation macros
        ```
      1. Languages Space

```
MyBook
├── Page1 
│   ├── v1.0/ (hidden)
│   │   ├── PageTitleTranslationClass objects
│   │   └── Content with translation macros
│   ├── v2.0/ (hidden)
│   │   ├── PageTitleTranslationClass objects
│   │   └── Content with translation macros
├── Versions
├── Variants
├── Libraries
└── Languages
    └── WebHome
        └── MultilingualClass object
```

      1. Templates
  • New templates if multilingual for versioned and unversioned that puts the content inside a macro for default language (facilitates mirgration)
    1. 3. Translation Macro
      ```
      Name: contentTranslation
      Parameters:
  • language (required) - Target language code
    Usage:
    contentTranslation language="ja"
    Japanese content here
    /contentTranslation
    ```
    1. 4. Content Inheritance Rules
      1. Title Translation
        1. Look for PageTitleTranslationClass object in requested language
        2. If not found, check version inheritance chain
        3. Fall back to default language if no translation found
      1. Content Translation
        For versioned pages:
        1. Check current version's hidden page for translation
        2. If not found, follow version inheritance chain
        3. Fall back to default language content

For unversioned pages:
1. Check WebHome page for translation
2. Fall back to default language content

    1. 5. UI Components
      1. Versions Administration
  • Language configuration section in dedicated Language Admin space
  • Global translation status overview
  • Add/remove languages
      1. Content Editor
  • Language selector showing available languages or available translations
  • Translation status indicator
  • Users will add the translation macros manually
      1. Navigation
  • Language selector in book navigation menu
  • Visual indicators for untranslated content
  • Language-aware breadcrumbs / URLs - computed title - picks title from object solves this for both breadcrubs and URLs