Skip to main content link. Accesskey S
  • Log In
  • Help
  • IBM Logo
  • IBM Notes and Domino wiki
  • All Wikis
  • All Forums
  • Home
  • Product Documentation
  • Community Articles
  • Learning Center
  • IBM Redbooks
Community Articles Product Documentation Learning Center IBM Redbooks This category IBM iNotes 9.0 Social Edition - Administering IBM iNotes 9.0 Social Edition - Using IBM Notes 9.0 Social Edition IBM Notes Traveler 9.0 - Administering IBM Notes Traveler 9.0 - Using Lotus Notes 8.5.3 Documentation Lotus Notes Traveler 8.5.3 Administration Documentation Lotus Notes Traveler 8.5.3 Usage Documentation Custom Search Scope...
Search
Product Documentation > Administering IBM iNotes 9.0 Social Edition > Best Practices for multi cultural templates
  • New Article
  • Share Show Menu▼
  • Subscribe Show Menu▼

About the Original Author

IBM contributorMike R O'Brien
Contribution Summary:
  • Articles authored: 1
  • Articles edited: 0
  • Comments Posted: 0

Recent articles by this author

Best Practices for multi cultural templates

Template Development guideline for localization consideration Avoid using concatenation string Issue: The full sentence will be tagged into the separated terms in the DGW glossary if it contains the concatenation strings. As a result, template engineers need to know the which and which strings ...

Community articleBest Practices for multi cultural templates

Added by IBM contributor Mike R O'Brien on September 30, 2008 | Version 1
expanded Abstract
collapsed Abstract
No abstract provided.
Tags: templates, globalization

 

 

Template Development guideline for localization consideration

 

 

Avoid using concatenation string

 

Issue: 

 

The full sentence will be tagged into the separated terms in the DGW glossary if it contains the concatenation strings. As a result, template engineers need to know the which and which strings will be contatenated together and provide comments for translation vendors for reference. 

Sometimes the concatenation strings have different combination, the verb use in this string may not use in another strings due to different language culture. The sentence order needs to be adjusted after translation.

 

 

There are several patterns that we can use to fix these.   

 

1)   First pattern is to create a string that simply includes other string defines.

 

 

Here is an example from the Current Design:  Mail8.ntf->form->(Out Of Office Profile) | OutOfOfficeProfile ->Postrecalc

 

 

Current Code

 

FIELD DaysOutDisplay:=@If(FirstDayOut = "" | FirstDayBack = ""; ""; "I will be out of the office starting  " + @Text(@Date(FirstDayOut)) + " and will not  return until " + @Text(@Date(FirstDayBack)) + ".");

 

 

Could be changed to

 

dispFirstDayOut := @Text(@Date(FirstDayOut));

dispFirstDayBack := @text(@Date(FirstDayBack));

 

{REM TSC The Next 3 strings are for concatentation }

                        {REM TSC The following string is the variable %disOOOString1 }

dispOOOstring1 := "I will be out of the office";

 

                        {REM TSC The following string is the variable %disOOOString2 }

dispOOOstring2 := " and will not return until";

 

{REM  TSC  The following string is used in the Out Of Office feature.  

            The %dispFirstDayOut is the time when a person starts their OOO,

            dispFirstDayBack is the first day they are back}

 

FullString := "%disOOOString1 %dispFirstDayOut %dispOOOString2 %dispFirstDayBack";

 

FIELD DaysOutDisplay:=@If(FirstDayOut = "" | FirstDayBack = "";""; FullString);

 

 

 

                        DGW will produce property file values that will look like this.

 

                        # The Next 3 strings are for concatentation

                        # The following string is the variable %disOOOString1

                        Form.OutOfOfficeProfile.PostRecalc.I_will_be_out_of_the_office=I will be out of the office

                        #  The following string is the variable %disOOOString2

                        Form.OutOfOfficeProfile.PostRecalc.and_will_not_return_until=and will not return until

                        # The following string is used in the Out Of Office feature.  

                        # The %dispFirstDayOut is the time when a person starts their Out of Office,

                        #  dispFirstDayBack is the first day they are back

                        Form.OutOfOfficeProfile.PostRecalc=%disOOOString1 %dispFirstDayOut %dispOOOString2 %dispFirstDayBack

 

           

 

2)  Use a variable that can be translated so that the code can check the value to display the correct order

 

 

{ REM TSC The text of the next string determines the order of desplay of the following strings  "Hello" and "World" }

OrderOfStings := "HelloFirst";

Field1 := "Hello";

Field2 := "World";

 

{ REM Begin DNT }

FIELD Display:=@If(OrderOfStrings = "HelloFirst" ;Field1+Field2; Field2+Field1)

{ REM End DNT }

 

 

                        DGW will produce property file values that will look like this.

 

                        #  The text of the next string determines the order of display of the following strings  "Hello" and "World"

                        Form.Memo.Action_Label_Formula.HelloFirst=HelloFirst

                        Form.Memo.Action_Label_Formula.Hello=Hello

                        Form.Memo.Action_Label_Formula.Hello=World

 

 

 

 

Add Comments for DNT terms and Hidden terms

 

 

 

1. DNT Terms in the LotusScript

 

'Begin Do Not Translate or

'Begin DNT

 

 

'End Do Not Translate

 

2. DNT terms in the Formula

 

REM {Begin Do Not Translate};

or

REM {Begin DNT};

 

 

REM {End Do Not Translate};

 

 

3. Always hidden terms

 

'Begin Always Hidden terms

 

 

'End Always Hidden terms

 

 

At least assign an alias for the forms and views. And the alias doesn't include space.

 

 

The form name and view name should be translated because they can be displayed on UI. So the design alias is necessary for programming consideration.

One more, we suggest the alias doesn't include space since it may be used on web.

 

Here is an example below,

In design: Mail8.ntf->Folder-> (Group Calendars)

 

Found NT title:

This folder's name "(Group Calendars)" should be translated because they will be displayed on UI, but it will cause function bug after translation.

 

 

 

Avoid using translatable string as programming condition

 

 

 

Example:

Current Design: Mail7ex.ntf->Form->CalendarProfile->"Change Access" button

 

Set item = note.getfirstitem("dspIndividualAccess")

strIndividualAccess = item.Text

lposition = Instr( strIndividualAccess, "Calendar notices are automatically forwarded to this person")

 

Field "dspIndividualAccess"

 

 

Issue:

 

Above code identity whether "Calendar notices are automatically forwarded to this person" is included into the field "dspIndividualAccess". 2 separated terms will be created into the DGW glossary. Template engineers need to add comments on them for translation vendors. This is an effort for Localization team.

The first sentence can not be translated as a sub-sentence of the second sentence on some international languages

 

 

 

Increase the default length of hotpot picture, or use the Notes button instead of it

 

 

 

Example:

 

Truncation:

 

Issue: If you want to use hotpot picture, please increase the default length of it to let the picture accommodate full international translation. Perhaps we should use the Notes button instead of the hotpot picture.

 

 

 

Use table column rather than the "tab" key to separate the static text from the field

 

 

 

Example:

 

 

Issue: this is an alignment problem.  You can use table column rather than "tab" key to separate the static text from the field.

 

 

Define translatable strings as variables; put all translatable variables into one section.

 

Example:

mail7ex: CSCalendarEntry_zh-TW(Script Library): (Declarations)

 

                                    If ( DurNDTend.TimeDifference( tmpNDT ) / 60) > 0 Then                 

                                                Msgbox "Your start and end times result in a duration that is greater than 24 hours." + Chr(13) _

                                                + "Please check end date and time or Time Zone information." , MB_OK + MB_ICONSTOP, "Duration error"

                                                CheckDuration = False

                                                Exit Function

                                    End If                                    

                                    If lDuration <= 0 Then ' I am not sure if this should be done here - within this function

                                                Msgbox "Your start and end times result in a duration that is less than 1 minute." + Chr(13)  _

                                                + "Please check end date and time or Time Zone information." + Chr(13) + "(Duration result is: " + Cstr(lDuration) + " )", MB_ICONSTOP ,"Duration error"

                                                CheckDuration = False

                                   

Issue:

 

The translatable strings appear near the end of file, pls define them as some varialbles in the front of code and put them into one paragraph. Below is a good example:

 

 

Const ACCEPT_ERR_TITLE                    = "Calendar Conflict"

Const ACCEPT_ERR_DECLINE = "Part or all of this meeting is already on your calendar. You must decline those entries first before processing this notice."

Const ACCEPT_ERR_DELETE   = "Part or all of this meeting is already in your mailfile.   Would you like Notes to delete those entries and accept this instead?"

                                               

 

Example of strings in a column formula

 

Bad practice

 

@If(TargetObjectSubTypeProperty="1""Keywords";TargetObjectSubTypeProperty="2""Formula""");

@If(TargetObjectName="" & TargetObjectType = "1";" [Shared Actions]";TargetObjectType = "7";"[Database]";TargetObjectSubName !="" & TargetObjectSubTypeProperty != ""; TargetObjectName + "."+TargetObjectSubName+"."+Property;TargetObjectName+"."+TargetObjectSubNameTargetObjectSubName !="";TargetObjectName+"."+TargetObjectSubName;TargetObjectName)

 

           

 

            The translator in this example will see the text strings "1" and think they have to translate it.    The modified formula below shows a good practice.

 

 

Good practice

 

SharedActions :=" [Shared Actions]";

Database := "[Database]";

Keywords := "Keywords";

Formula := "Formula";

 

"REM Begin DNT";

 

@If(TargetObjectSubTypeProperty="1";Keywords;TargetObjectSubTypeProperty="2";Formula;"");

@If(TargetObjectName="" & TargetObjectType = "1";SharedActions;TargetObjectType = "7";Database;TargetObjectSubName !="" & TargetObjectSubTypeProperty != ""; TargetObjectName + "."+TargetObjectSubName+"."+Property;TargetObjectName+"."+TargetObjectSubNameTargetObjectSubName !="";TargetObjectName+"."+TargetObjectSubName;TargetObjectName)

 

 

 

Avoid showing filed name or form name on UI console directly

 

 

Example:

 

Issue: you should avoid showing field name and form name on UI console directly. now Localization team has below workround, it is a manual work.

Mail7ex.ntf->Form->Notice

1.In "(Declarations)" of "(Globals) Notice" Objects, 10th line add 2 lines code and translate marked by RED:

    SUBJECT_TITLE = "Subject"

    LOCATION_TITLE = "Location"
2.In "RaiseConflictDialog" of "(Globals) Notice" Objects, 29th line add 2 lines code:
    cLst(x) = Replace (cLst(x),"Subject",SUBJECT_TITLE)
    cLst(x) = Replace (cLst(x),"Location",LOCATION_TITLE)

 

 

 

Uncheck "No Wrap" option for the Notes button

 

 

 

Example:

 

 

Issue: It is a wrap up problem,  you need to uncheck "no wrap" option for the Notes button.

 

 

 

 

 

URLDecode the strings that are displayed on web UI

 

 

Example:

 

 

Issue: The window title is HTML encode. Please don't forget to decode it.

Workround: PartialName := Right(@URLDecode("Domino";Query_String);"&Title=")

 

 

 

Create alias for the keyword of option field(e.g. Listbox, Checkbox, etc)

 

 

 

It is necessary to create an alias for every keyword for programing consideration.

 

 

 

 

 

2)    Use prefixed aliases when calling design elements.

 

Instead of: @command([Compose];"Memo")

Try to use: @command([Compose];"fa-Memo")

 

Instead of: @command([Compose];"Memo")

Try to use: @command([Compose];"fa-Memo")

 

 

Do not use normal legible words when using internal variables (for instance stored in always hidden fields).

 

 

Instead of:  @if(xxdocname = "Interest Profile";"Interest Profile";"Standard Document")

Try to use: @if(xxdocname = "InterestProfile";"Interest Profile";"Standard Document")

 

 

Put some of the information between parentheses

 

Instead of:  "Created by " & doc.username(0)  & " on " & doc.date(0) & " at " & doc.time(0)

Try to use:  "Created by " & doc.username(0) & "("doc.date(0) & " - " & doc.time(0)")

 

"Instead of: "Retrieved " & RetrievedDocs & " documents. Updated " & UpdatedDocs & " documents. Saved " & SavedDocs & " documents."

Try to use: "Retrieved documents: " & RetrievedDocs & " Updated documents:" & UpdatedDocs & " Saved documents: " & SavedDocs

 

 

To avoid concatenation problem with bitmap in the strings,  put link and bitmaps in the end of the sentence

 

 

Avoid given the same alias for the same kind of design elements

 

Avoid using the same alias name for the same type design elements whose main names are translatable, here is an example below,

in Design:

Mail8.ntf->Form-> Reply with History & Attachments

Mail8.ntf->Form-> Reply

 

These two forms have the same alias, but their main names are translatable. After two form names are translated in our localized language templates, if the "Reply with History & Attachments" form is in front of the "Reply" form in the designer(the sequence of the forms are opposite with the US template after DGW update sometimes), it will cause the functional bugs.

 

Before translate these form's main names

After translate form's main names

 

Suppose other programs will call the form'alias name directly, but it will confused which form will be called if they have the same alias. Here are some NLV SPRs about this issue.

 

 

 

 

 

 

 

SPR#

Tot

QA

Dev

Description

Notes Link

 

 

 

 

 

JLWN74HBTV

 

Jian Lin Wan

Xue Feng Jia

Mail8.ntf -> unexcepted dialog appears when open replay mail

Notes Link

 

 

 

 

 

JTSG744FY5

 

Eason YH Lin

Eric HY Chang

Mail8.ntf: Error message while open a reply message.

Notes Link

 

 

 

 

 

PDCW73FFMQ

 

Peter DC Wang

Xiao Feng Ji

[0502_Pseudo] Pop up an error message while opening a replied mail.

 

 

 

Avoid using @uppercase and @lowercase in formula to uppercase or lowercase translatable strings

 

Avoid using @uppercase and @lowercase formual to uppercase or lowercase translatable strings.


Here is an example:
Current design: Mail8.ntf -> form ->appointment -> tmpRepeatsText field

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
expanded Attachments (0)
collapsed Attachments (0)
expanded Versions (3)
collapsed Versions (3)
Version Comparison     
VersionDateChanged by              Summary of changes
3Jul 31, 2012 2:16:38 PMAmy Smith  IBM contributor
2Sep 30, 2008 1:28:11 PMKendra Bowker  IBM contributor
This version (1)Sep 30, 2008 10:32:59 AMMike R O'Brien  IBM contributor
Copy and paste this wiki markup to link to this article from another article in this wiki.
Go ElsewhereStay ConnectedHelpAbout
  • IBM Collaboration Solutions wikis
  • IBM developerWorks
  • IBM Software support
  • Twitter LinkIBMSocialBizUX on Twitter
  • FacebookIBMSocialBizUX on Facebook
  • ForumsLotus product forums
  • BlogsIBM Social Business UX blog
  • Community LinkIBM Collaboration Solutions
  • Wiki Help
  • Forgot user name/password
  • Wiki design feedback
  • Content feedback
  • About the wiki
  • About IBM
  • Privacy
  • Accessibility
  • IBM Terms of use
  • Wiki terms of use