How to translate forms into different languages

Normally when developing an application in a modern language or framework, you can use a translation library where all messages, labels and sentences can be referred to a code and where a table relates each code with the translated version. So providing the translation table to a translator, no matter if he or she is a programmer, can easily fulfill it and add a language to the app.

But ARS’ applications translations (localization as referred by BMC) is not as simple as looking at a table of sentences and translate them. Well, it wasn’t. But recently BMC has delivered a “Localization Toolkit”, that simplifies this work.

1. Step

You need to set AR server to be localized also go to AR System Administration: Console -> System -> General Server information. In the AR System Administration: Server Information also open tab Advanced and check Localize server true. Now is your server able to make translations.

ARS_step2
AR System Administration: Server Information
ARS_step1
AR System Administration: Console

After this you need to setup a local database (local means on your pc) also go to Window -> Preferences -> BMC Localization toolkit .

Remedy localization toolkit
Remedy Developer Preferences

You need to specify a Root folder, depends on you or leave a default path. Check “Use the AR System server as the localization database” and choose you AR Server, after that click on Set Up Database. This means that translations will be stored on ARS.

2. Step

Create a display1 form in BMC Remedy Developer studio with Default view. Add all fields that you need like a characters, buttons, panels, trims, dropdowns etc… In some cases I added few fields with values2 . Click on view and open Properties, set the Localize field True and do not set locale language. This means that this view is ready to translate . You need to add a character field called Locale (field ID 160) and make him hidden.

BMC_RLT_FORM
Test form
View properties
Properties of master/default view

Tip: All fields should have labels in English cause if remedy doesn’t found a translated view then the default will be used. And i think that En language is better than chinesse. 🙂

3. Step

Every time I mark all fields and and set them as Localize label: False after that you can choose fields which are needed to translate like char fields, dd, menus, texts, cells and mark them as True

BMC_RLT_FIELD
Properties of field

4. Step

You can find translation definitions in sidebar (Best practice customization) in localization packages. Open AR System navigator and right click on Localization Package definitions -> New package definition to create new definition. In this definition choose Locales which are required. Do not choose language as locale which is already used on default view cause you don’t need one language twice. (English in our case) 🙂

BMC_RLT_LOCALES
Dialog to select locales

Tip: Locale de is default for Germany, but users from Austria are using de_AT dialect, also you are able to make different view for them. If you left make de than users with de_XX will be always redirected to de view. Its very easy to useful and clever.

5. Step

Choose independent forms – that means form which have to be translated. Forms can share translated phrases of fields each other. For example if you have buttons like a Save, you don’t have to translate them twice.

6. Step

Click ->Extract String to extracting all fields labels, active links with  text, alternate text, help text. This action takes some time you can watch a progress in Console window.

When this action ends you can export strings in different states as *.xliff file and use file editor, but for me is more friendly do the translation in developer studio. Now move to Details or Translation status, both links have same function. This tab shows current states of translations and you can choose what you want to do. Fields like a zTmp or panels can bet set as Do not translate. If I translate a phrase I will change the state to Reviewed.

BMC_RLT_DETAILS
Detail of Localizing package
BMC_RLT_PHRASES
Summary of translation statuses

Tip: Already translated phrases are shared between the forms. Also if you have already translated Yes as “Ja” (DE) in another form, then you don’t have to translate it again and you can find it in Reviewed (if you have reviewed it before). Finally you can build up a kind of  translation database. 🙂

7. Step

Back To Overview tab and click on Create/Replace View. You have to choose if you want to translate active links and stored data in form (messages and form data). This action can take some to create/update Views in mentioned languages. If any phrase is not translated then remedy will not change it and stays in default language.

BMC_RLT_CRUPDATE
Dialog to select localizing data

8. Step

Now you have form with multiple views in different languages and every view has own language and related language (except Main view). You should check width of labels and edit them if they are too long because this can cause problems to users. 🙂

Tip: BMC provides a video help, but it doesn’t contains all information.

——
1– if you create a regular you are able to translate stored data.
2– Remedy is able to translate values in messages of values in dropdown boxes.

Best tip in Remedy Developer? Clear cache.

Today I was thinking about daily problems with BMC Remedy developer studio and have kind of 42 solve everything in app.
Every time when I have a problem with Remedy Developer studio, like errors and exceptions in Console, saving or getting forms, old values ,there is a very easy way how to solve it.

Shutdown the developer studio, clear cache folder and Start the studio again. This is really helpfull! 🙂
Path like: C:\……\BMC Remedy Developer\workspace\devstudiocache\

Checking client timeouts on AR Server

In ARS8.1 Service Pack 2 is new feature for monitoring timeouts.

The BMC Remedy AR System server adds exception logging to the API and SQL server statistics feature. This feature provides additional options for managing API and SQL performance statistics. The key additions are:

  • A new log file, arexception.log, is the repository for all exception-logging activity. The arexception.log file is managed like the arerror.log file.
  • API calls that reach the server and are not completed before the client times out are logged to arexception.log. A client timeout server event is also available that allows client timeouts to be detected through server workflow.
  • API and SQL calls that exceed the defined minimum time threshold are logged immediately to arexception.log if the exception-logging option is enabled.

You enable exception logging for the performance statistics feature on the Server Statistics tab of the Administration Server form by selecting Enable Exception Logging in the API/SQL Performance Tracking form.

Server Statistics tab

The Server Recording Mode determines what information is recorded in the server statistics form. The values are:

  • 0 — (Default) Recording is off.
  • 1 — The server records only cumulative queue statistics (the sum of all the individual queue statistics).
  • 2 — The server records both cumulative and individual queue statistics. One entry is written for the cumulative statistics and a separate entry is written for each queue.

The Recording Interval is at which the server records server statistics. The default is 60 seconds.

a server event entry is created that provides information about the API call that experienced the timeout. Client timeouts can be detected with server event workflow, which provides expanded capabilities for communicating with administrators and users. For example, if a long-running API call caused a client timeout, server event workflow could email the affected user and notify the administrator about the details of the timeout.

You enable server event support for client timeouts by selecting Client Timeout on the Server Events tab of the Admin Console:

The information provided in the Server Event form is tailored to notifications, with fields that can be easily used in the qualification and as substitution parameters in the notification text. For more information, see Types of events you can record and Viewing client timeout server event details

Server event workflow

The standard BMC Remedy AR System does not include server event workflow, and the client timeout feature does not provide workflow with the form. The administrator must create the server event workflow. The following figure shows an example of the filter workflow an administrator might use to be notified of a user timeout:

Example of timeout in arexception.log. Servers gets “busy” notification and developer was not able to connect.

[<API > <TID: 0000000772> <RPC ID: 0000001374> <Queue: Admin> <Client-RPC: 390600> <USER: xxx> <Overlay-Group: 1> /* Tue Mar 22 2016 14:54:45.7690 */+GSI    ARGetServerInfo -- as user UB00073 from Developer Studio (protocol 20) at IP address 10.119.200.109  // :q:124.9s]
[<API > <TID: 0000000772> <RPC ID: 0000001374> <Queue: Admin> <Client-RPC: 390600> <USER: xxx> <Overlay-Group: 1> /* Tue Mar 22 2016 14:54:45.7691 */-GSI FAIL -- RPC Client has timed out]

I thinks that this feature is very useful for admins, because you can monitor developers and users on MT and everything via API.

[source]

How to center content in the form

In this example we will make a centered form like a html div with absolute width and left and right margin set to auto;

  1. Set Layout Style: Fill in form properties (also form is responsible)
  1. Add a panel holder “PH_MainHolder” in the form.  Make sure the holder’s properties are set as mentioned:

Display Type:  Collapsible
Orientation:  Horizontal (can be vertical if you want to center in second axis)
Borderless:  True (depends on you, but true is nicer)
Minimum size: 800 (content cannot be thinner)

  1. Add three panels to the panel holder in order: “PH_MainHolder_Left”, “PH_MainHolder_Center”, “PH_MainHolder_Right”.   Screen Shot 2016-03-29 at 20.45.44
  1. Mark all three panels and make a header state to hidden.

Header State: Hidden

  1. Set properties of PH_MainHolder_Left and PH_MainHolder_Right to:

Minimum Size: 2 (same as initial)
Initial Size: 2 (initial size and we have to calculate it main panel)
Maximum Size: 3000  (or can be infinitive J )
Panel State: Expand
Slack Distribution Order: 1Screen Shot 2016-03-29 at 20.46.28

  1. “PH_MainHolder_Center” is panel where all fields should be placed and set following properties:

Minimum Size: 796 (800 – initial slack panels size)
Initial Size: 796 
Maximum Size: 796 
Panel State: Expand
Slack Distribution Order: 0 (default)

This tweak can be used in ARS 7.6 or newer.

Tip: Inside of PH_MainHolder_Center can be inserted another panel holder with same panels and properties but orientation as vertical. Result is that final center panel will be centered in both axes.

Thanks to Dave Sulcer

Change background-color of panel by ActiveLink (workaround)

Hello, I am working as a developer in BMC Remedy environment and would like to share a tips and tricks, this is my first post. My current version is 8.1.02 AIX Sometimes I have a new idea but standard BMC workflow doesn’t support few basic features, also workaround is necessary. BMC provides no option to change bg color of panel by ACL.

nav_changefield.PNG

 I am attaching actions that can be provided by active link. As you can see, there is no action similar to color changing. First option is make a splitter with 2 panels (black/white) inside of splitter and hiding/showing them due the two activelinks with different qualification. But there is easier workaround. Set the “Custom CSS Style” eg. unique identifier of html element of the desired panel to “changePanelBGColor” and execute the following line via “Run Process”, it is very easy to run jQuery action:

javascript:$('.changePanelBGColor > fieldset > div').css({"background-color":"blue"})

Instead of class changePanelBGColor you can use id of field (if you dont want to identify custom css style). Mentioned panel will change bg color to blue. You can use own css identifier or find css id inside of div. There is a example as  active/inactive tabs in

UIM_scrshot

Incident Console: PS: Be carful with midtier upgrade because of new versions can change html structure.