Skip to content

describe microflow prints a translated concurrency error message in a non-default language, and a rebuild from it overwrites the default-language text #1711

Closed

Description

@ynnckw

Summary

On a project whose default language is en_US with de_DE also enabled, describe microflow prints the concurrency
error message (disallow concurrent execution error message '…') in its de_DE translation, with the comment
-- also translated into en_US; replaying this line keeps only the one shown. A rebuild from that output (drop microflow and create microflow in one script) then stores the German text under en_US as well, so the English
message is gone. check, exec and mx check report nothing. A show message text in the same flow, translated the
same way, is described in en_US and keeps both translations through the same rebuild.

Environment

  • mxcli v0.29.0 (2026-10-30T17:00:32Z), Windows amd64
  • Mendix Studio Pro 11.12.6, MPR v2
  • Project languages: en_US (default) and de_DE

Steps to reproduce

  1. On a project with DefaultLanguageCode: 'en_US' and de_DE added as a language, run:

    create module MyModule;
    
    create microflow MyModule.SaveOrder ()
    returns Boolean
    disallow concurrent execution error message 'Another save is running. Try again in a moment.'
    begin
      show message 'The order was not saved.' type Error blocking;
      return true;
    end;
    /
    
    create or modify translations in MyModule for de_DE (
      'Another save is running. Try again in a moment.' as 'Ein anderes Speichern läuft. Versuchen Sie es gleich noch einmal.',
      'The order was not saved.' as 'Die Bestellung wurde nicht gespeichert.'
    );
    

    The unit now holds ConcurrenyErrorMessage with the items en_US "Another save is running. …" and de_DE "Ein
    anderes Speichern läuft. …", in that order, and the show message text likewise.

  2. describe microflow MyModule.SaveOrder prints:

    create or modify microflow MyModule.SaveOrder ()
    returns Boolean
    disallow concurrent execution error message 'Ein anderes Speichern läuft. Versuchen Sie es gleich noch einmal.'  -- also translated into en_US; replaying this line keeps only the one shown
    begin
      show message 'The order was not saved.' type Error blocking;
      return true;
    end;
    
  3. Run that output as a rebuild: drop microflow MyModule.SaveOrder; followed by the printed statement with create microflow in place of create or modify microflow, in one script. check passes, exec reports "Dropped" and
    "Created".

Expected

describe prints the concurrency message in the project's default language, en_US, as it does for the show message
text, so that a rebuild from it keeps the source text. A rebuild keeps both translations, or at least leaves the
en_US item with its English text.

Actual

After step 3 the unit holds ConcurrenyErrorMessage with en_US "Ein anderes Speichern läuft. …" and de_DE "Ein
anderes Speichern läuft. …". The English message is lost, and English users get the German text. The show message text
still holds en_US "The order was not saved." and de_DE "Die Bestellung wurde nicht gespeichert.".

mx check afterwards reports no new error or warning. Replaying the describe output unchanged as create or modify
(without the drop) answers "Unchanged microflow" and keeps both items, so only a rebuild loses the text.

Notes

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions