decaporg / decap-cms

A Git-based CMS for Static Site Generators
https://decapcms.org
MIT License
17.96k stars 3.05k forks source link

Translation Does not Support Simultaneously editing of Multiple Users #7303

Open bliles opened 1 month ago

bliles commented 1 month ago

Describe the bug If multiple users try to edit translations for the same document, they will overwrite each others changes since Decap groups changes to a document and all translations together. To duplicate, have a multi language setup for Decap, have two users start editing different language translations for the same page. Each time the users save, they will overwrite changes made by the other translator. It should at least be configurable for Decap to treat each translation of a document as a separate instead of always saving the original document and all translations from the browser state.

To Reproduce Have two users log in to Decap and start editing different translations of the same document simultaneously.

Expected behavior Pull requests should contain only the actively edited file/translation, or it should be possible to configure Decap to support multiple active translators.

Applicable Versions:

CMS configuration

backend:
  name: github
  repo: **redacted**
  branch: master
  base_url: **redacted**
  auth_endpoint: auth/login
  auth_scope: repo
  open_authoring: true

publish_mode: editorial_workflow
media_folder: "public/images"
public_folder: "/images"
site_url: **redacted**
show_preview_links: false

i18n:
  structure: multiple_folders
  locales: [en, de, es, fr, it, ja, pt, zh-Hans, zh-Hant]

collections:
  - label: "Blog"
    name: "blog"
    folder: "blog"
    identifier_field: title
    format: yaml-frontmatter
    preview_path: "blog/en/{{slug}}.html"
    fields:
      - label: Title
        name: title
        widget: string
        i18n: true

      - label: Page Class
        name: pageClass
        widget: hidden
        default: blog
        i18n: duplicate

      - label: Description
        name: description
        widget: string
        i18n: true
        required: false

      - label: Meta Description
        name: metaDescription
        widget: string
        i18n: true
        required: false

      - label: Date
        name: date
        format: "YYYY/MM/DD"
        default:
        time_format: false
        widget: datetime
        required: false
        i18n: true

      - label: Tags
        name: tags
        widget: list
        i18n: true
        allow_add: true

      - label: Image
        name: image
        widget: image
        i18n: duplicate
        required: false

      - label: Featured
        name: isFeatured
        widget: boolean
        i18n: duplicate
        required: false

      - label: Body
        name: body
        widget: markdown
        i18n: true

    create: true
    i18n: true