Language localization guidance

Hello!
My colleagues and I are in the process of designing a product, and after considering the capabilities of Node-RED, we have decided to utilize it. Throughout this endeavor, our goal has been to design and incorporate the necessary nodes. Currently, the only challenge we are facing pertains to the language used in Node-RED. As the product is specifically intended for Arabic speakers, it is crucial for the entire Node-RED workspace to be available in Arabic, facilitating seamless interaction with users. Moreover, it would be highly beneficial if there is a possibility to support the right-to-left orientation of these languages.

We would greatly appreciate any guidance or assistance from Node-RED designers or anyone knowledgeable in this area. If there is a way to achieve language localization and right-to-left support in Node-RED, please kindly advise us on how to proceed. Our team is fully capable of translating the Node-RED language into Arabic if it is feasible to do so, but we value any insights that can be offered to make this process smoother.

Thank you in advance for your help and expertise. Your assistance will be immensely valuable to us in creating a successful product for Arabic speakers.

1 Like

The files for the existing translations of core Node-RED can be found here:

Which would be the first place to get a feel for what would be needed for a new translation.

Any 3rd party nodes would need translating independently as they each supply their own translations.

I'm not sure about what would be needed for right-to-left support, but I'm sure somebody will chip in shortly on the feasibility.

1 Like

Thank you for your response and guidance. I have a question, though. It seems that specific changes made in the Node-RED files are not being saved and are not executable, unlike the changes I make to the red.js (node_modules>@node-red>editor-client>public>red>red.js) file. It appears that these files were created during the installation of Node-RED and any additional changes have no effect on the program execution. I think that the files build first when we install Node-RED.
Do you have a solution for saving the information again? For example, if I want to hide the sidebar(right side) with "display: none"?

For example, by making modifications to the mentioned functions or even removing all of these functions, the program runs flawlessly without any issues.

        if (!state) {
            $("#red-ui-main-container").addClass("red-ui-sidebar-closed");
        } else {
            $("#red-ui-main-container").removeClass("red-ui-sidebar-closed");
            sidebar_tabs.resize();
        }
        RED.events.emit("sidebar:resize");
    }

    function showSidebar(id, skipShowSidebar) {
        if (id === ":first") {
            id = lastSessionSelectedTab || RED.settings.get("editor.sidebar.order",["info", "help", "version-control", "debug"])[0]
        }
        if (id) {
            if (!containsTab(id) && knownTabs[id]) {
                sidebar_tabs.addTab(knownTabs[id]);
            }
            sidebar_tabs.activateTab(id);
            if (!skipShowSidebar && !RED.menu.isSelected("menu-item-sidebar")) {
                RED.menu.setSelected("menu-item-sidebar",true);
            }
        }
    }```

This is a very different question to that of providing translations to the core of node-red.

Do you intend on providing a pull request with new translations?

As for

do you run grunt after making changes to Node-RED source code?
npm run dev will run the grunt config and gather all of the files & (re)build node-red from source then start it up.

A very quick workflow that should work...

  1. stop node-red
  2. edit Node-RED source
  3. start node-red using npm run dev
  4. refresh browser

More info about running from source is here: Running Node-RED from source : Node-RED

1 Like

Could you please guide us on how to apply permanent changes in Node-RED? We are modifying the 'red.js' file located in the path
< '\packages\node_modules@node-red\editor-client\public\red' />,
but the changes are not taking effect. When we execute the 'npm run dev' command, the changes are also reverted. Please provide guidance on the correct path for the main files and how to apply these changes permanently without losing them.

Because that is a "built" file. Pretty much everything in public will get replaced by grunt. Look at the grunt.js file and you will see how it is built.

You would have to tell us what you are trying to change - the source files are all split up depending on functionality you are trying to modify.

You might find the documents here useful

Also look again at the link posted previously - Running Node-RED from source : Node-RED.

1 Like

Dear friends,

Thank you for your guidance and suggestions, which led to the creation of solutions for changing the language in the developer section and saving data.

Good to hear.

Will you be making a Pull Request back to the project so that everyone can benefit in the same way. We hope so.

Subject: Utilizing Node-Red as a Service for User-Specific Flows

Dear friends,

We are planning to utilize Node-Red as a service within our application, and we have not yet implemented this. Our primary objective is to assign each user a unique identifier and enable them to exclusively access and design their individual flow. In other words, upon accessing Node-Red, we want every user to interact solely with their designated flow, separate from other users. We are seeking your guidance on how to securely implement this within the Node-Red framework.

Your invaluable assistance in achieving this user flow isolation is greatly appreciated.

The only way to do this is to run a separate instance of Node-RED for each user. Node-RED is not a multi-tenant environment.

I would suggest looking at FlowFuse which is a platform specifically for running Node-RED for multiple users in this fashion.

I work for FlowFuse

To be able to run an independent Node-RED instance for each user, what solutions do you suggest? If you have references or examples of previous work done in this area, we would appreciate it if you could provide them to us.

As I mentioned FlowFuse is the current best example (I know of) of how to do this, especially if you intend to do it at any scale at all.

It has an API (FlowFuse API • FlowFuse Docs) to allow for integration with your existing stack and your modified/translated version of Node-RED can be packages as a custom stack (e.g. Kubernetes Project Stacks • FlowFuse Docs)

If you would like to arrange a call to talk about FlowFuse then let me know and we can set something up.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.