# Language localization guidance

**URL:** <https://discourse.nodered.org/t/language-localization-guidance/80069>\
**Category:** General\
**Created:** [26 July 2023 06:13 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069 "2023-07-26T06:13:38Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![AmirYaakbarieh](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/amiryaakbarieh/32/81536_2.png) [@AmirYaakbarieh](https://discourse.nodered.org/u/AmirYaakbarieh)\
**Post date:** [26 July 2023 06:13 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/1 "2023-07-26T06:13:38Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![hardillb](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/hardillb/32/12373_2.png) [@hardillb](https://discourse.nodered.org/u/hardillb)\
**Post date:** [26 July 2023 08:28 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/2 "2023-07-26T08:28:50Z")

</div>

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

> <https://github.com/node-red/node-red/tree/master/packages/node_modules/%40node-red/editor-client/locales>
>
> //github.com/node-red/node-red/tree/master/packages/node\_modules/%40node-red/editor-client/locales

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.

---

<div class="post-metadata">

**Author:** ![AmirYaakbarieh](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/amiryaakbarieh/32/81536_2.png) [@AmirYaakbarieh](https://discourse.nodered.org/u/AmirYaakbarieh)\
**Post date:** [30 July 2023 10:31 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/3 "2023-07-30T10:31:56Z")

</div>

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.

````plaintext
        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);
            }
        }
    }```
````

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [30 July 2023 11:58 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/4 "2023-07-30T11:58:17Z")

</div>

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

> [@AmirYaakbarieh](#):
>
> 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.

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](https://nodered.org/docs/getting-started/development)

---

<div class="post-metadata">

**Author:** ![AmirYaakbarieh](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/amiryaakbarieh/32/81536_2.png) [@AmirYaakbarieh](https://discourse.nodered.org/u/AmirYaakbarieh)\
**Post date:** [1 August 2023 11:29 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/5 "2023-08-01T11:29:25Z")

</div>

> [@AmirYaakbarieh](#):
>
> Thank you for your guidance.

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.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [1 August 2023 13:20 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/6 "2023-08-01T13:20:51Z")

</div>

> [@AmirYaakbarieh](#):
>
> \< '\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

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.

> [@AmirYaakbarieh](#):
>
> Please provide guidance on the correct path for the main files and how to apply these changes permanently without losing them.

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](https://github.com/node-red/node-red/wiki/Design-Notes) useful

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [1 August 2023 13:47 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/7 "2023-08-01T13:47:51Z")

</div>

Also look again at the link posted previously - [Running Node-RED from source : Node-RED](https://nodered.org/docs/getting-started/development).

---

<div class="post-metadata">

**Author:** ![AmirYaakbarieh](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/amiryaakbarieh/32/81536_2.png) [@AmirYaakbarieh](https://discourse.nodered.org/u/AmirYaakbarieh)\
**Post date:** [17 August 2023 09:15 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/8 "2023-08-17T09:15:29Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [17 August 2023 15:14 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/9 "2023-08-17T15:14:50Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![AmirYaakbarieh](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/amiryaakbarieh/32/81536_2.png) [@AmirYaakbarieh](https://discourse.nodered.org/u/AmirYaakbarieh)\
**Post date:** [26 September 2023 08:32 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/10 "2023-09-26T08:32:08Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![hardillb](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/hardillb/32/12373_2.png) [@hardillb](https://discourse.nodered.org/u/hardillb)\
**Post date:** [26 September 2023 08:57 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/11 "2023-09-26T08:57:09Z")

</div>

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](https://flowfuse.com/) which is a platform specifically for running Node-RED for multiple users in this fashion.

I work for FlowFuse

---

<div class="post-metadata">

**Author:** ![AmirYaakbarieh](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/amiryaakbarieh/32/81536_2.png) [@AmirYaakbarieh](https://discourse.nodered.org/u/AmirYaakbarieh)\
**Post date:** [26 September 2023 11:12 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/12 "2023-09-26T11:12:55Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![hardillb](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/hardillb/32/12373_2.png) [@hardillb](https://discourse.nodered.org/u/hardillb)\
**Post date:** [26 September 2023 12:52 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/13 "2023-09-26T12:52:37Z")

</div>

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](https://flowfuse.com/docs/api/)) 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](https://flowfuse.com/docs/install/kubernetes/stacks/))

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

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [25 November 2023 12:53 UTC](https://discourse.nodered.org/t/language-localization-guidance/80069/14 "2023-11-25T12:53:31Z")

</div>

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