---
title: The Language Barrier
description: The Language Barrier
---

[![(877) 224-7768 <>](https://no-cache.hubspot.com/cta/default/1708946/5d9809e1-1922-4e3e-b06b-d359616d29bd.png)](https://cta-redirect.hubspot.com/cta/redirect/1708946/5d9809e1-1922-4e3e-b06b-d359616d29bd)

[![sales@profoundlogic.com <mailto:sales@profoundlogic.com>](https://no-cache.hubspot.com/cta/default/1708946/4fc30eb7-f66d-4552-81e2-49cc209a5ead.png)](https://cta-redirect.hubspot.com/cta/redirect/1708946/4fc30eb7-f66d-4552-81e2-49cc209a5ead)

[![Share on facebook](https://7528309.fs1.hubspotusercontent-na1.net/hub/7528309/hubfs/raw_assets/public/mV0_d-web-default-modules_hubspot/img/facebook-color.png?width=24&name=facebook-color.png)](https://www.facebook.com/share.php?u=https%3A%2F%2Fblog.profoundlogic.com%2Fthe-language-barrier%2F%3Futm_medium%3Dsocial%26utm_source%3Dfacebook) [![Share on twitter](https://7528304.fs1.hubspotusercontent-na1.net/hub/7528304/hubfs/raw_assets/public/mV0_d-web-default-modules_hubspot/img/twitter-color.png?width=24&name=twitter-color.png)](https://twitter.com/intent/tweet?original_referer=https%3A%2F%2Fblog.profoundlogic.com%2Fthe-language-barrier%2F%3Futm_medium%3Dsocial%26utm_source%3Dtwitter&url=https%3A%2F%2Fblog.profoundlogic.com%2Fthe-language-barrier%2F%3Futm_medium%3Dsocial%26utm_source%3Dtwitter&source=tweetbutton&text=)

[![Profound Logic](https://blog.profoundlogic.com/hs-fs/hubfs/PLS_Logo.jpg?width=150&height=52&name=PLS_Logo.jpg "Profound Logic")](https://www.profoundlogic.com/)

- AI-Enhanced Products 
    - [Profound AI](https://www.profoundlogic.com/ai/)
    - [Profound UI](https://www.profoundlogic.com/profoundui/)
    - [Profound.js](https://www.profoundlogic.com/profoundjs/)
    - [Profound API](https://www.profoundlogic.com/api/)
- Services 
    - Futurization and Transformation 
          - [Profound 360 Analysis](https://www.profoundlogic.com/services/profound-360-analysis/)
          - [Flexible IBM i Code Transformation](https://www.profoundlogic.com/services/flexible-code-transformation/)
          - [IBM i UX Modernization Service](https://www.profoundlogic.com/services/ibm-i-ux-modernization-service/)
          - [Database Modernization](https://www.profoundlogic.com/services/database-modernization/)
    - Integration & API Development 
          - [System Integration](https://www.profoundlogic.com/services/systems-integration/)
          - [Cloud Migration Services](https://www.profoundlogic.com/services/cloud-migration-services/)
    - [Rapid Application Development](https://www.profoundlogic.com/services/application-development/) 
          - [Application Development](https://www.profoundlogic.com/services/application-development/)
          - [Mobile Application Development](https://www.profoundlogic.com/services/mobile-application-development/)
- [Company](https://www.profoundlogic.com/about-profound-logic/) 
    - [About Us](https://www.profoundlogic.com/about-profound-logic/)
    - [Press Releases](https://www.profoundlogic.com/press-releases/)
    - [Careers](https://www.profoundlogic.com/careers/)
    - [Contact Us](https://www.profoundlogic.com/contact/)
- Resources 
    - [Blog](https://www.profoundlogic.com/blog/)
    - [Case Studies](https://www.profoundlogic.com/case-studies/)
    - [On-Demand Webinars](https://www.profoundlogic.com/webinars/)
    - [White Papers](https://www.profoundlogic.com/white-papers/)
    - [Product Documentation](https://profoundlogicsupport.atlassian.net/wiki/spaces/PUI/overview)
    - [User Forum](https://forum.profoundlogic.com/)
    - [Contact Support](https://profoundlogicsupport.atlassian.net/servicedesk/customer/portal/1)

[![Contact Us](https://no-cache.hubspot.com/cta/default/1708946/interactive-172756632938.png)](https://blog.profoundlogic.com/hs/cta/wi/redirect?encryptedPayload=AVxigLJx7PMTlYfONt3rr4qbFCtuE7Slp%2BetUpkMAp6pyegZr84W%2BwgdPP%2BByGQFTQhDPvmxxXp%2FnnllaZRqkIj%2FNGBIObn4faMi6J7eXVBrJutjXxCaS1hbsQYK%2B%2Ftu2kFkSb%2FYPASdY%2Bpdnc8uy3ubYRhQ8BuIUGNHBRzxAgVcpLzYzb7fQR%2F54aRk&webInteractiveContentId=172756632938&portalId=1708946)

# iModernize - The Profound Logic Software Blog

# The Language Barrier

Posted by [Scott Klement](https://blog.profoundlogic.com/author/scott-klement) on Aug 9, 2013 11:39:54 AM

- [Tweet](https://twitter.com/share)

I was given the interesting assignment of changing Profound UI so that any runtime messages would be available in any language chosen by the customer. I can definitely see why. Prior to this project, most of the messages that the product provided were in English, which is clearly not suitable for non-English speakers.

## The Challenges

The tricky part was figuring out how best to do it. Here is a list of challenges:

- We can't possibly provide every single language on the planet, so a customer should be able to provide his own language files, if desired.
- A customer should be able to rephrase/replace any of our messages with his own.
- We have many existing configurable messages that a customer can override with his own text. We need to preserve backward compatibility.
- This should all run on any web browser, and run fast.

Note that I'm really only concerned about runtime messages at this point. Developers should understand English sufficiently well to design and code their programs with English labels and help, but the end-users who run our applications are a different story. They should be able to see all of the text and messages in their own language.

## The Solution

After conferring with colleagues, we decided on a solution that involves creating a "language dictionary". Right now, we have two dictionaries, one for runtime messages (such as error messages or warnings) and one for runtime text (such as screen/widget labels.) We can add more dictionaries in the future, if we ever need them. Within each dictionary is a set of languages. The customer can add additional languages to the dictionary, or use the ones we provided. Within each language is a set of "message keys" that identify a particular message that can be placed on the screen at the appropriate time. The message keys are simple strings that descriptively identify the message.

Since the Profound UI framework is written in JavaScript and runs in the web browser, I carefully planned it so that our messages are loaded into memory first. Then, customer's messages are loaded. When the framework needs to display a message, it calls a function pui.getLanguageText() that gets the proper message in the desired language. This function also checks to see if the customer is using one of the original styles of message strings, and if so, uses that instead of the one from the language dictionary to preserve backward compatibility.

This was implemented as a set of JavaScript objects, coded like this:

```
<strong>pui[dictionary-name][language-code][message-key] = "The message string."</strong>
```

Where:

- **dictionary-name** = The name of the dictionary. Right now, we have runtimeMsg and runtimeText as dictionaries in Profound UI. In the future, we may decide to use more.
- **language-code** = I decided to use the ISO language codes. Currently Profound UI provides the following languages pre-defined, but you can add any that you want: 
    - en\_US = English/USA
    - en\_UK = English/UK
    - de\_DE = German/Germany
    - es\_ES = Spanish/Spain
    - es\_MX = Spanish/Mexico
    - pt\_PT = Portuguese/Portugal
    - pt\_BR = Portuguese/Brazil
    - fr\_FR = French/France
    - it\_IT = Italian/Italy
- **message-key** = identifies the specific message to display (within the language and dictionary)

## Specifying a Language

To specify a language, you'll want to create a file named **language.js** in the **/www/profoundui/htdocs/profoundui/userdata/custom** directory of the IFS. This is where you'll type your language settings.

How you get the settings to load into your Profound UI session depends on which environment you're running your rich displays from:

- **From a Profound UI session**, any files in the userdata/custom directory given above will automatically be loaded into the browser. You don't need to do anything else.
- **From a Genie session**, edit the start.html file in your Genie skin. Add **<script type="text/javascript" src="/profoundui/userdata/custom/js/language.js"></script>**. It should be placed immediately after any other <script> tags in the file.
- **From a PhoneGap project,** edit the index.html file and add **<script type="text/javascript" src="http://yourserver:8080/profoundui/userdata/custom/js/language.js">** after any other script tags in the index.html file.

These statements will cause the Profound UI framework to load your language.js file into the browser so that it can read the settings from it. To use one of our predefined languages, you should put the following in the language.js file:

```
<strong>pui["language"] = "en_US";</strong>
```

Replace "en\_US" with any of the language codes listed above. Once you save your settings and re-load Profound UI, you should get all of the messages and text in the language you've chosen.

It does so by reading the dictionary like this:

```
message = pui["runtimeMsg"][<strong>the pui-language setting, above</strong>]["message key"];
```

If you do not set a pui\["language"\] value in this manner, Profound UI will default to "en\_US" (English for USA).

## Modifying the Strings for a Language

If you wish to change the way a message or text label is phrased for a given language, you can do that simply by adding an additional setting to the language.js file. First, make sure you've created a language.js file (as described in the "specifying a language" section, above.) Then specify the new string using the dictionary/language-code/message-key as described above.

For example, when a subfile grid has it's "export csv" option enabled, a text label normally appears at the bottom of the grid that says "Export to Excel". Perhaps you'd like to say that differently, if so, you could define it like this:

```
<strong><code>pui[</code><code>"runtimeText"</code><code>][</code><code>"en_US"</code><code>][</code><code>"csv export text"</code><code>] = </code><code>"Open in Excel"</code></strong><code>;</code>
```

Now it'll say "Open in Excel" instead of "Export to Excel" if you are using the English/USA language. If you'd like to change the text to a different language, simply specify a different language code instead of "en\_US".

There's a list of all of the message keys that you can override in the ["Defining a New Language" section under "Language Support" in the Profound UI manual.](http://www.profoundlogic.com/docs/display/PUI/Language+Support)

## Adding Your Own Language Definition

To add a new language aside from those that Profound UI provides, you can simply create the proper JavaScript objects in your language.js file. You can create any language you wish by specifying a language with a different string.

For fun, let's say that I wanted my instance of Profound UI to sound like the cartoon character, Elmer Fudd. To do that, I could create a new language dictionary named "fudd", and set my pui\["language"\] setting to the fudd language. The following JavaScript statements will set my language, and create the needed JavasScript objects:

```
<strong><code>pui["language"] = "fudd";
pui["runtimeMsg"]["fudd"] = {};
pui["runtimeText"]["fudd"] = {};
</code></strong>
```

Now that I have the proper JavaScript objects, I will need to define all of the messages in the new Elmer Fudd language. To do that, I can add the following lines of code (they should go after the preceding ones) to my language.js file:

```
<strong><code>pui["runtimeMsg"]["fudd"]["closeMessage"] = "Dis wiww end youw session, uh-hah-hah-hah.";
pui["runtimeMsg"]["fudd"]["no connection message"] = "Unabwe to weach sewvew. Check youw connection and twy again, uh-hah-hah-hah.";
pui["runtimeMsg"]["fudd"]["upload file limit"] = "Wimit of &amp;1 fiwe(s) exceeded.";
pui["runtimeMsg"]["fudd"]["upload size limit"] = "Wimit of &amp;1MB pew fiwe exceeded";
pui["runtimeMsg"]["fudd"]["upload no files"] = "No fiwes sewected.";
pui["runtimeMsg"]["fudd"]["upload duplicate file"] = "Dupwicate fiwes sewected.";
pui["runtimeMsg"]["fudd"]["upload file exists"] = "One ow mowe fiwes awweady exist on the fiwe system.";
pui["runtimeMsg"]["fudd"]["upload prevented"] = "Opewation pwevented by exit pwogwam.";
pui["runtimeMsg"]["fudd"]["upload input limit"] = "Totaw input size wimit exceeded.";
pui["runtimeMsg"]["fudd"]["upload no session"] = "Not connected to a vawid session, uh-hah-hah-hah.";
pui["runtimeMsg"]["fudd"]["upload timeout"] = "Twansaction timed out.";
pui["runtimeMsg"]["fudd"]["upload invalid response"] = "De sewvew wesponse is missing ow invawid.";
pui["runtimeMsg"]["fudd"]["close browser text"] = "To compwete the wog off pwocess, pwease cwose youw bwowsew window.";
pui["runtimeMsg"]["fudd"]["session ended text"] = "Youw session has ended.";
pui["runtimeMsg"]["fudd"]["outside ucs2"] = "Chawactews awe outside of UCS-2 wange.";
pui["runtimeMsg"]["fudd"]["invalid number"] = "&amp;1 is not a vawid numbew.";
pui["runtimeMsg"]["fudd"]["invalid length"] = "&amp;1 has an incowwect data wengf ow decimaw position, uh-hah-hah-hah.";
pui["runtimeMsg"]["fudd"]["invalid decimal"] = "&amp;1 has too many decimaw pwaces. Oh, dat scwewy wabbit! (max: &amp;2)";
pui["runtimeMsg"]["fudd"]["invalid choice"] = "\"&amp;1\" is invawid. Vawid choices awe: \"&amp;2\" ow \"&amp;3\".";
pui["runtimeMsg"]["fudd"]["invalid date"] = "\"&amp;1\" is not a vawid date. Exampwe fowmat: &amp;2";
pui["runtimeMsg"]["fudd"]["invalid time"] = "\"&amp;1\" is not a vawid time. Exampwe fowmat: &amp;2";
pui["runtimeMsg"]["fudd"]["invalid time stamp"] = "\"&amp;1\" is not a vawid time stamp. Exampwe fowmat: &amp;2";
pui["runtimeMsg"]["fudd"]["invalid percent"] = "&amp;1 is not a vawid decimaw.";
pui["runtimeMsg"]["fudd"]["invalid digits"] = "\"&amp;1\" contains too many digits. Oh, dat scwewy wabbit! Max: &amp;2";
pui["runtimeMsg"]["fudd"]["exceeds whole"] = "\"&amp;1\" exceeds the maximum numbew of digits fow the whowe numbew powtion (&amp;2 digits).";
pui["runtimeMsg"]["fudd"]["exceeds decimal"] = "\"&amp;1\" exceeds the maximum numbew of digits fow the decimaw powtion (&amp;2 digits).";
pui["runtimeMsg"]["fudd"]["zip too long"] = "Zip code is too wong. (Maximum: &amp;1 digits)";
pui["runtimeMsg"]["fudd"]["phone too long"] = "Phone numbew is too wong. (Maximum: &amp;1 digits)";
pui["runtimeMsg"]["fudd"]["ssno too long"] = "Sociaw secuwity numbew is too wong. (Maximum: &amp;1 digits)";
pui["runtimeMsg"]["fudd"]["invalid custom val"] = "Invawid custom vawidation function, uh-hah-hah-hah.";
pui["runtimeMsg"]["fudd"]["error custom val"] = "Ewwow in custom vawidation function, uh-hah-hah-hah.";
pui["runtimeMsg"]["fudd"]["ME"] = "Mandatowy entwy fiewd. You must entew data.";
pui["runtimeMsg"]["fudd"]["MF"] = "Mandatowy fiww fiewd. You must fiww the input box compwetewy.";
pui["runtimeMsg"]["fudd"]["required"] = "De vawue cannot be bwank. Dis fiewd is weqwiwed.";
pui["runtimeMsg"]["fudd"]["file required"] = "You must sewect at weast one fiwe.";
pui["runtimeMsg"]["fudd"]["signature overflow"] = "De signatuwe dwawing size exceeds the maximum numbew of bytes avaiwabwe fow stowing the signatuwe. Pwease cweaw the signatuwe pad and twy again, uh-hah-hah-hah.";
pui["runtimeMsg"]["fudd"]["validValues"] = "Vawue entewed is not vawid. Vawid vawues awe:";
pui["runtimeText"]["fudd"]["upload select text"] = "Sewect Fiwes";
pui["runtimeText"]["fudd"]["upload clear text"] = "Cweaw";
pui["runtimeText"]["fudd"]["upload remove text"] = "Wemove";
pui["runtimeText"]["fudd"]["upload upload text"] = "Upwoad";
pui["runtimeText"]["fudd"]["csv export text"] = "Expowt to Excew";
pui["runtimeText"]["fudd"]["filter text"] = "Fiwtew";
pui["runtimeText"]["fudd"]["remove filters text"] = "Wemove Aww Fiwtews";
pui["runtimeText"]["fudd"]["next link text"] = "Next";
pui["runtimeText"]["fudd"]["previous link text"] = "Pwevious";
pui["runtimeText"]["fudd"]["sort ascending text"] = "Sowt Ascending";
pui["runtimeText"]["fudd"]["sort descending text"] = "Sowt Descending";</code></strong>
```

Even though "fudd" is not an internationally recognized language, and was not shipped with the system, I was able to add it simply by defining "fudd" as my pui\["language"\] value, and then defining the proper messages for my new "fudd" language.

This is just an example, and it's important to understand that as time goes on Profound Logic will keep adding additional message keys to the product. When that happens, the new keys will not be added to this blog entry, but they will be added to the official [Profound UI Documentation for Language Support](http://www.profoundlogic.com/docs/display/PUI/Language+Support). Please visit that page to get a comprehensive list of all of the needed message keys.

 Topics: [Development](https://blog.profoundlogic.com/topic/development), [New Features](https://blog.profoundlogic.com/topic/new-features)

Search Blog

### Subscribe to Blog Updates

**....and get our "How to Get Full Business Buy-In for Your Modernization Project" ebook!**

![business buy-in ebook](https://blog.profoundlogic.com/hs-fs/hubfs/mockup.png?width=621&name=mockup.png "business buy-in ebook")

### Recent Posts

### Posts by Topic

- [Events & Education (203)](https://blog.profoundlogic.com/topic/events-education)
- [Application modernization (173)](https://blog.profoundlogic.com/topic/application-modernization)
- [IBM i Modernization (169)](https://blog.profoundlogic.com/topic/ibm-i-modernization)
- [IBM i applications (169)](https://blog.profoundlogic.com/topic/ibm-i-applications)
- [Profound.js (165)](https://blog.profoundlogic.com/topic/profound-js)
- [Node.js (164)](https://blog.profoundlogic.com/topic/node-js)
- [Agile modernization (162)](https://blog.profoundlogic.com/topic/agile-modernization)
- [IBM i (161)](https://blog.profoundlogic.com/topic/ibm-i)
- [RPG (158)](https://blog.profoundlogic.com/topic/rpg)
- [AS400 modernization (157)](https://blog.profoundlogic.com/topic/as400-modernization)
- [iSeries (149)](https://blog.profoundlogic.com/topic/iseries)
- [Legacy Modernization (141)](https://blog.profoundlogic.com/topic/legacy-modernization)
- [RPG Development (85)](https://blog.profoundlogic.com/topic/rpg-development)
- [AS 400 (58)](https://blog.profoundlogic.com/topic/as-400)
- [Profound UI (54)](https://blog.profoundlogic.com/topic/profound-ui)
- [Profound Logic (50)](https://blog.profoundlogic.com/topic/profound-logic)
- [AS\_400 (49)](https://blog.profoundlogic.com/topic/as_400)
- [New Features (28)](https://blog.profoundlogic.com/topic/new-features)
- [Tips and Tricks (26)](https://blog.profoundlogic.com/topic/tips-and-tricks)
- [Development (20)](https://blog.profoundlogic.com/topic/development)
- [green screen modernization (15)](https://blog.profoundlogic.com/topic/green-screen-modernization)
- [Mobile Development (14)](https://blog.profoundlogic.com/topic/mobile-development-2)
- [5250 (12)](https://blog.profoundlogic.com/topic/5250)
- [IBM Watson (10)](https://blog.profoundlogic.com/topic/ibm-watson)
- [Press Release (9)](https://blog.profoundlogic.com/topic/press-release)
- [Product Announcement (9)](https://blog.profoundlogic.com/topic/product-announcement)
- [Scott Klement Health (7)](https://blog.profoundlogic.com/topic/scott-klement-health)
- [Partnerships (6)](https://blog.profoundlogic.com/topic/partnerships)
- [PLUS 2018 (5)](https://blog.profoundlogic.com/topic/plus-2018)
- [Prime UI (5)](https://blog.profoundlogic.com/topic/prime-ui)
- [Case Study (4)](https://blog.profoundlogic.com/topic/case-study)
- [Enterprise Modernization (3)](https://blog.profoundlogic.com/topic/enterprise-modernization)
- [Year in review (3)](https://blog.profoundlogic.com/topic/year-in-review)
- [PLUS 2019 (2)](https://blog.profoundlogic.com/topic/plus-2019)
- [mobile applications (2)](https://blog.profoundlogic.com/topic/mobile-applications)
- [mobile mondernization (2)](https://blog.profoundlogic.com/topic/mobile-mondernization)
- [2016 Survey (1)](https://blog.profoundlogic.com/topic/2016-survey)
- [2019 Survey (1)](https://blog.profoundlogic.com/topic/2019-survey)
- [Conversion Service (1)](https://blog.profoundlogic.com/topic/conversion-service)
- [Model 3 (1)](https://blog.profoundlogic.com/topic/model-3)
- [Tesla (1)](https://blog.profoundlogic.com/topic/tesla)
- [connectria (1)](https://blog.profoundlogic.com/topic/connectria)
- [node (1)](https://blog.profoundlogic.com/topic/node)

see all

### Archive

- [September 2014 (17)](https://blog.profoundlogic.com/archive/2014/09)
- [March 2017 (14)](https://blog.profoundlogic.com/archive/2017/03)
- [May 2017 (10)](https://blog.profoundlogic.com/archive/2017/05)
- [April 2019 (10)](https://blog.profoundlogic.com/archive/2019/04)
- [May 2019 (10)](https://blog.profoundlogic.com/archive/2019/05)
- [February 2013 (9)](https://blog.profoundlogic.com/archive/2013/02)
- [June 2017 (9)](https://blog.profoundlogic.com/archive/2017/06)
- [August 2017 (9)](https://blog.profoundlogic.com/archive/2017/08)
- [September 2017 (9)](https://blog.profoundlogic.com/archive/2017/09)
- [October 2017 (9)](https://blog.profoundlogic.com/archive/2017/10)
- [July 2017 (8)](https://blog.profoundlogic.com/archive/2017/07)
- [June 2018 (8)](https://blog.profoundlogic.com/archive/2018/06)
- [January 2019 (8)](https://blog.profoundlogic.com/archive/2019/01)
- [March 2019 (8)](https://blog.profoundlogic.com/archive/2019/03)
- [June 2019 (8)](https://blog.profoundlogic.com/archive/2019/06)
- [August 2014 (7)](https://blog.profoundlogic.com/archive/2014/08)
- [August 2015 (7)](https://blog.profoundlogic.com/archive/2015/08)
- [December 2017 (7)](https://blog.profoundlogic.com/archive/2017/12)
- [January 2018 (7)](https://blog.profoundlogic.com/archive/2018/01)
- [July 2018 (7)](https://blog.profoundlogic.com/archive/2018/07)
- [August 2018 (7)](https://blog.profoundlogic.com/archive/2018/08)
- [October 2018 (7)](https://blog.profoundlogic.com/archive/2018/10)
- [June 2014 (6)](https://blog.profoundlogic.com/archive/2014/06)
- [October 2014 (6)](https://blog.profoundlogic.com/archive/2014/10)
- [September 2015 (6)](https://blog.profoundlogic.com/archive/2015/09)
- [April 2017 (6)](https://blog.profoundlogic.com/archive/2017/04)
- [November 2017 (6)](https://blog.profoundlogic.com/archive/2017/11)
- [March 2018 (6)](https://blog.profoundlogic.com/archive/2018/03)
- [November 2018 (6)](https://blog.profoundlogic.com/archive/2018/11)
- [December 2018 (6)](https://blog.profoundlogic.com/archive/2018/12)
- [February 2019 (6)](https://blog.profoundlogic.com/archive/2019/02)
- [January 2014 (5)](https://blog.profoundlogic.com/archive/2014/01)
- [April 2014 (5)](https://blog.profoundlogic.com/archive/2014/04)
- [October 2015 (5)](https://blog.profoundlogic.com/archive/2015/10)
- [February 2018 (5)](https://blog.profoundlogic.com/archive/2018/02)
- [April 2018 (5)](https://blog.profoundlogic.com/archive/2018/04)
- [July 2020 (5)](https://blog.profoundlogic.com/archive/2020/07)
- [January 2013 (4)](https://blog.profoundlogic.com/archive/2013/01)
- [March 2013 (4)](https://blog.profoundlogic.com/archive/2013/03)
- [April 2013 (4)](https://blog.profoundlogic.com/archive/2013/04)
- [July 2014 (4)](https://blog.profoundlogic.com/archive/2014/07)
- [May 2018 (4)](https://blog.profoundlogic.com/archive/2018/05)
- [September 2018 (4)](https://blog.profoundlogic.com/archive/2018/09)
- [July 2019 (4)](https://blog.profoundlogic.com/archive/2019/07)
- [September 2013 (3)](https://blog.profoundlogic.com/archive/2013/09)
- [March 2014 (3)](https://blog.profoundlogic.com/archive/2014/03)
- [July 2015 (3)](https://blog.profoundlogic.com/archive/2015/07)
- [November 2015 (3)](https://blog.profoundlogic.com/archive/2015/11)
- [January 2016 (3)](https://blog.profoundlogic.com/archive/2016/01)
- [March 2016 (3)](https://blog.profoundlogic.com/archive/2016/03)
- [April 2016 (3)](https://blog.profoundlogic.com/archive/2016/04)
- [September 2016 (3)](https://blog.profoundlogic.com/archive/2016/09)
- [October 2019 (3)](https://blog.profoundlogic.com/archive/2019/10)
- [June 2020 (3)](https://blog.profoundlogic.com/archive/2020/06)
- [August 2020 (3)](https://blog.profoundlogic.com/archive/2020/08)
- [November 2013 (2)](https://blog.profoundlogic.com/archive/2013/11)
- [February 2014 (2)](https://blog.profoundlogic.com/archive/2014/02)
- [May 2014 (2)](https://blog.profoundlogic.com/archive/2014/05)
- [November 2014 (2)](https://blog.profoundlogic.com/archive/2014/11)
- [January 2015 (2)](https://blog.profoundlogic.com/archive/2015/01)
- [April 2015 (2)](https://blog.profoundlogic.com/archive/2015/04)
- [February 2016 (2)](https://blog.profoundlogic.com/archive/2016/02)
- [June 2016 (2)](https://blog.profoundlogic.com/archive/2016/06)
- [July 2016 (2)](https://blog.profoundlogic.com/archive/2016/07)
- [October 2016 (2)](https://blog.profoundlogic.com/archive/2016/10)
- [December 2016 (2)](https://blog.profoundlogic.com/archive/2016/12)
- [February 2017 (2)](https://blog.profoundlogic.com/archive/2017/02)
- [March 2020 (2)](https://blog.profoundlogic.com/archive/2020/03)
- [April 2020 (2)](https://blog.profoundlogic.com/archive/2020/04)
- [May 2020 (2)](https://blog.profoundlogic.com/archive/2020/05)
- [September 2020 (2)](https://blog.profoundlogic.com/archive/2020/09)
- [October 2020 (2)](https://blog.profoundlogic.com/archive/2020/10)
- [January 2021 (2)](https://blog.profoundlogic.com/archive/2021/01)
- [November 2012 (1)](https://blog.profoundlogic.com/archive/2012/11)
- [December 2012 (1)](https://blog.profoundlogic.com/archive/2012/12)
- [May 2013 (1)](https://blog.profoundlogic.com/archive/2013/05)
- [June 2013 (1)](https://blog.profoundlogic.com/archive/2013/06)
- [July 2013 (1)](https://blog.profoundlogic.com/archive/2013/07)
- [August 2013 (1)](https://blog.profoundlogic.com/archive/2013/08)
- [October 2013 (1)](https://blog.profoundlogic.com/archive/2013/10)
- [December 2013 (1)](https://blog.profoundlogic.com/archive/2013/12)
- [December 2014 (1)](https://blog.profoundlogic.com/archive/2014/12)
- [March 2015 (1)](https://blog.profoundlogic.com/archive/2015/03)
- [May 2015 (1)](https://blog.profoundlogic.com/archive/2015/05)
- [May 2016 (1)](https://blog.profoundlogic.com/archive/2016/05)
- [November 2016 (1)](https://blog.profoundlogic.com/archive/2016/11)
- [January 2017 (1)](https://blog.profoundlogic.com/archive/2017/01)
- [August 2019 (1)](https://blog.profoundlogic.com/archive/2019/08)
- [December 2019 (1)](https://blog.profoundlogic.com/archive/2019/12)
- [November 2020 (1)](https://blog.profoundlogic.com/archive/2020/11)
- [December 2020 (1)](https://blog.profoundlogic.com/archive/2020/12)

see all

#### Related Resources

- [\[fa icon="caret-right"\] Benefits of Modernizing Legacy Systems](https://www.profoundlogic.com/benefits-of-modernizing-legacy-systems/)
- [\[fa icon="caret-right"\] Customer Satisfaction and Supply Chains](https://www.profoundlogic.com/customer-satisfaction-and-supply-chains/)
- [\[fa icon="caret-right"\] Why Your Business Must Modernize Its Legacy Applications](https://www.profoundlogic.com/why-your-business-must-modernize-its-legacy-applications/)
- \[fa icon="caret-right"\] Coding in 2021 and Beyond: Is Node.js Dead?

#### Recommended for you

- [\[fa icon="caret-right"\] The Importance of API Security to Protect Sensitive Business Data](https://info.profoundlogic.com/the-importance-of-api-security-to-protect-sensitive-business-data)
- [\[fa icon="caret-right"\] Why API Matters for Enterprise Development](https://info.profoundlogic.com/why-api-matters-for-business-development-whitepaper)
- [\[fa icon="caret-right"\] The Cost of Technical Debt to Business on IBM i](https://info.profoundlogic.com/technical-debt)
- [\[fa icon="caret-right"\] Node.js for Enterprise IBM i Modernization](https://info.profoundlogic.com/node)

#### Watch now on demand

- [\[fa icon="caret-right"\] What is Code Transformation?](https://info.profoundlogic.com/code-transformation-stage-one)
- [\[fa icon="caret-right"\] Transform IBM i/AS400 Now](https://www.profoundlogic.com/transform-ibm-i-as400-now/)
- [\[fa icon="caret-right"\] Profound API, Low-Code and Product Updates Announced at PLUS 2020](https://info.profoundlogic.com/plus2020)
- [\[fa icon="caret-right"\] IBM i Transformation Risks Every Business Leader Should Know](https://info.profoundlogic.com/transformation-risks-wod)

#### Company

- [\[fa icon="caret-right"\] About Us](https://www.profoundlogic.com/about-profound-logic/)
- [\[fa icon="caret-right"\] Press Releases](https://www.profoundlogic.com/press-releases/)
- [\[fa icon="caret-right"\] Events and Webinars](https://www.profoundlogic.com/events/)
- [\[fa icon="caret-right"\] Careers](https://www.profoundlogic.com/careers/)
- [\[fa icon="caret-right"\] Partnerships](https://www.profoundlogic.com/partnerships/)
- [\[fa icon="caret-right"\] Contact Us](https://www.profoundlogic.com/contact/)

[Sign up for our newsletter](https://www.profoundlogic.com/newsletter-signup-profound-logic/) | [Developers](https://docs.profoundlogic.com/) | [Blog](https://www.profoundlogic.com/blog/) | [Privacy](https://www.profoundlogic.com/privacy-policy) | [Contact](https://www.profoundlogic.com/contact/) | [1-877-224-7768](tel:877-224-7768)

 Copyright © 2026 Profound Logic Software | [Sitemap](https://www.profoundlogic.com/sitemap.xml)

\[fa icon="chevron-up"\]

![](https://www.facebook.com/tr?id=237478240316292&ev=PageView&noscript=1)