View Issue Details

IDProjectCategoryView StatusLast Update
0005487Feature RequestsApi Changepublic2023-12-12 18:14
ReporterWolfgang Mahnke Assigned ToJeff Harding  
PrioritynormalSeverityfeatureReproducibilityalways
Status closedResolutionfixed 
Summary0005487: External localization of Event Messages
Description

In the Harmonization Working Group several CSs have showed interst in a feature that allows:

  • Providing a none-localized representation of a message, e.g. by a ResourceId (e.g. a string)
  • Providing values that are needed to generate a human-readable message by the higher-level application

For example, a RecourceId could represent the "template" for different lanuages like
„Dieses ist eine {%1} Meldung: {%2} hat das Problem {%3} verursacht!“ (in German)
„This is a {%1} Message: Problem {%3} was caused by {%2}!“ (in English)

The event would provide the event field RecourceId + the data to construct the message (e.g. {„System“, „Aggregat A1B2D4“, 0x80004005}).
Data could be represented as event field with type Array of Variant.
Both could be optional fields to BaseEventType

That allows higher-level applications to store the message and potentially even provide additional languages at a later time.

In addition, a standardized way to expose the "templates" behind the RecourceId should be provided. Not neccecarily all servers would support this. We should consider making the RecouceId a reasonable data type to easily access that information, e.g. QualifiedName or maybe NodeId.

TagsNo tags attached.
Commit Version1.05.04 RC
Fix Due Date2023-09-01

Relationships

related to 0004108 closedJim Luth Feature Requests Need mechanism to access localized text for different languages 
related to 0005509 closedJim Luth Feature Requests Placeholder in Event-Field for associated event values. 
related to 0009308 closedMatthias Damm 10000-004: Services External localization of Event Messages 
related to 0009309 closedJeff Harding 10000-003: Address Space External localization of Event Messages 

Activities

Wolfgang Mahnke

2020-03-06 15:59

developer   ~0011715

Discussion during Dallas Meeting

Create a structure containing
{
ResourceId String
Data Array of Variant
}

Each Event Field that needs to be localized need a counterpart with that structure. Each Variable need a counterpart with that structure. We should define a best practice for names (e.g. Message + MessageResourceId).

In addition, server provides StringTable with the templates for resources clients can access.

That should solve the direct communication part. Could potentially also be used for Publisher, putting string tables into the Metadata.

Another issue that came up during discussion: What is the big picture? How is localization managed in a system with many servers? What about aggrgating servers.
General idea: We should define a global server interface where applications can ask for string templates in many languages based on ResourceIds. Here, we need to consider, that different servers might use the same ResourceId for different resources, so somehow the server context (e.g. ServerUri) need to be considered as well. Similar issues occure in aggregating servers, where they might aggregate servers using the same ResourceId for different resources.
This needs to be worked out in more detail.

Jim Luth

2020-09-01 18:35

administrator   ~0012746

Notes from 2020-07-28 Telecon:

We had a long discussion and think we came to an elegant solution that will work in all places the LocalizedText datatype is used. We will define our own locale for "UA machine readable" and store a Uuencoded UA binary structure in the Text string that contains all of the data necessary for the Client to constrict the final string based on the string fragments and replaceable parameters in the UA binary structure. Further details need to be worked out and discussed further.

Paul Hunkar

2023-06-23 20:50

developer   ~0019671

discuss this issue in UA working group call - proposed a solution using a specific locale - attached slides help illustrate it

Jeff Harding

2023-06-25 12:06

developer   ~0019673

Thinking about this a bit more I think we can introduce this as follows:
In Part 3 expand the definition of LocalizedText and LocaleId to describe the specific use of the Locale code we will use to return multiple languages.
In Part 6 describe the format to be used to return the multiple languages as a JSON array of LocalizedText objects (i.e. localeId and text).

With this approach it is not limited to events and would apply to all uses of LocalizedText in all parts. Specifically if a session is established with the special multiple language LocaleId as the first priority then all LocalizedText will be returned by the server as JSON encoded arrays of all available languages for that LocalizedText Variable. Existing client are not affected as they will be requesting specific localeIds.

David Levine

2023-06-27 12:41

developer   ~0019681

These notes outline 2 different mechanisms for providing localized text messages.

We should consider the pros and cons of each - events-only vs all localized text, performance, efficiency, scalability, complexity, resource requirements, etc.
Use cases: embedded versus desktop, standalone vs aggregating, client-side vs server-side costs, etc.

Jim Luth

2023-07-25 15:54

administrator   ~0019723

Commit Date 2023-09-01

Jim Luth

2023-12-12 18:10

administrator   ~0020512

All text in Part 3 and Part 4 has been reviewed and accepted. Cloning this issue to both Parts for final integration into editor drafts.

Jim Luth

2023-12-12 18:14

administrator   ~0020527

Solution to this Feature Request has been reviewed and approved. Cloned to Part 3 and Part 4 for inclusion in official editor drafts.

Issue History

Date Modified Username Field Change
2020-02-26 12:44 Wolfgang Mahnke New Issue
2020-03-06 15:09 Matthias Damm Relationship added related to 0004108
2020-03-06 15:59 Wolfgang Mahnke Note Added: 0011715
2020-05-19 17:02 Jim Luth Status new => acknowledged
2020-06-01 19:33 Jim Luth Relationship added related to 0005509
2020-09-01 18:35 Jim Luth Note Added: 0012746
2023-06-23 12:59 Jim Luth Project 10000-005: Information Model => Feature Requests
2023-06-23 12:59 Jim Luth Category Spec => Api Change
2023-06-23 20:50 Paul Hunkar Note Added: 0019671
2023-06-23 20:50 Paul Hunkar File Added: MultipleLocalizedTextsInEventsIdeas.pptx
2023-06-25 12:06 Jeff Harding Note Added: 0019673
2023-06-27 12:41 David Levine Note Added: 0019681
2023-07-25 15:53 Jim Luth Assigned To => Jeff Harding
2023-07-25 15:53 Jim Luth Status acknowledged => assigned
2023-07-25 15:54 Jim Luth Note Added: 0019723
2023-07-25 18:53 Jim Luth Commit Version => 1.05.04 RC
2023-07-25 18:53 Jim Luth Fix Due Date => 2023-09-01
2023-12-12 18:10 Jim Luth Note Added: 0020512
2023-12-12 18:10 Jim Luth Issue cloned: 0009308
2023-12-12 18:10 Jim Luth Relationship added related to 0009308
2023-12-12 18:11 Jim Luth Issue cloned: 0009309
2023-12-12 18:11 Jim Luth Relationship added related to 0009309
2023-12-12 18:14 Jim Luth Status assigned => closed
2023-12-12 18:14 Jim Luth Resolution open => fixed
2023-12-12 18:14 Jim Luth Note Added: 0020527