This article is relevant if you seek to craft NetSuite-driven documents with international, multi-language considerations.
Background
For NetSuite-driven organizations with global business operations, it becomes important to consider public-facing documents in the language of the recipient’s locale. In 2012, I discussed how Overcoming NetSuite Custom Field Language Translations is factored into the platform. In 2014, I discussed the mechanism for Setting Customer Language Preference via SuiteScript. Likewise, in 2013, I referred to NetSuite’s Locale Preference Lookup List.
In a more ambitious effort, in 2016, I discussed how we built a framework for Global NetSuite Locale Based Content Generation. The good news is that since that time, NetSuite has extended its capacities to include Translation definitions. We no longer need a custom framework to define strings based on particular locales. We can do that natively in NetSuite.
Still, it may be elusive to understand how to combine NetSuite capacities to generate dynamically generated documents sensitive to various aspects of multi-language content development. Hence, in this article, I provide you with a roadmap of options.
Multi-Language Document Generation Considerations
When contemplating a single template that can dynamically respond to the recipient’s locale, the following should be considered:
- String Labels: The way we decorate a document with labels needs to be translated. “Amount” in English is “Menge” in German. Our template should express these document elements in response to the recipient’s locale.
- Date Formats: We have no universal way to express dates. Thus, date values too should be translated to fit the recipient’s locale.
- Currency: currency values should be represented with a symbol and formatted to fit how the user typically understands those values.
NetSuite Template Driven Generated Content
NetSuite offers an Advanced PDF template technology that works with the Freemarker templating library to craft translation templates to produce dynamically generated documents. While this tool is good, my firm, Prolecto Resources, offers a license-free tool, Content Renderer Engine, that extends NetSuite’s framework to reach more data and produce a much more powerful interactive development environment.
While the examples I will show use our Content Renderer Engine, the concepts for solving multi-language international-based documents are the same.
Craft String Labels
NetSuite has Translation tools that allow you to define a collection of dictionary keys that can hold the language-specific value for each element. Go to Customization –> Translations –> Manage Translations to access the subsystem. Craft all the keys you will need for your document. For example, in a recent implementation, we defined these keys: (note, I am deliberately formatting the following list into a JavaScript array; yet NetSuite’s tool allows you to define each key one at a time using conventional record management techniques). [“TOTAL”,”TRANTYPE”,”BILLTO”,”SHIPTO”,”PAYMENTMETHOD”,”PONBR”,”SHIPPINGMETHOD”,”SHIPDATE”,”QUANTITY”,”ITEM”,”RATE”,”AMOUNT”,”SUBTOTAL”,”TAXTOTAL”].
Click on the image to see more information.
Note, NetSuite’s HELP document illustrates various ways that language elements are defined in the system.
Use String Labels in Template
Once you have your string library, you need to know how to reference it in your template to get the values out. I have created a full template with comments to help explain all these concepts. Click here to download it.
Click the image here to see syntax snippets.
Craft Date Formats
Various date formats are used in the international context. I recommend you create a variable to hold the value you need and then use the ?string([date format expression]) syntax. For example, the United States typically formats dates using “MM/dd/yyyy”. In that case, your referencing (before using a variable) can look like ${record.trandate?string(“MM/dd/yyyy”)}. Click on my screenshot syntax snippet to see how I defined it in the provided full template using a variable to make it dynamic.
Currency Symbol and Delimeter Presentations
Fortunately, NetSuite supplies currency-based values with the symbols already included. In addition, currencies are often formatted with delimiters to help distinguish thousands and fractions. Thus, there should be no work required for formatting. Click the image to see currency presentations.
Generate Content Fitting User Expectations
This article should help the NetSuite Administrator develop an attack plan to internationalize documents. The better approach is to use a bit of FreeMarker programming that avoids hard-coding so that additional languages are quickly supported. Any NetSuite end-user interested in our free-of-license-charge Content Renderer Engine can make an inquiry. We can help you quickly get up to speed on the tool while we tackle your dynamic multi-language document project.
If you found this article relevant, feel free to sign up for notifications to new articles as I post them. Let’s have a conversation if you want assistance with your content development project.