View Issue Details

IDProjectCategoryView StatusLast Update
000930910000-003: Address SpaceSpecpublic2024-03-26 16:40
ReporterJim Luth Assigned ToJeff Harding  
PrioritynormalSeverityfeatureReproducibilityalways
Status closedResolutionfixed 
Fixed in Version1.05.04 RC1 
Summary0009309: 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.
Attached Files
Commit Version1.05.04 RC
Fix Due Date2024-01-15

Relationships

related to 0005487 closedJeff Harding Feature Requests External localization of Event Messages 

Activities

Wolfgang Mahnke

2023-12-12 18:11

developer   ~0020520

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

2023-12-12 18:11

administrator   ~0020521

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-12-12 18:11

developer   ~0020522

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

Jeff Harding

2023-12-12 18:11

developer   ~0020523

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-12-12 18:11

developer   ~0020524

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-12-12 18:11

administrator   ~0020525

Commit Date 2023-09-01

Jim Luth

2023-12-12 18:11

administrator   ~0020526

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.

Jeff Harding

2024-01-23 16:55

developer   ~0020697

Part 4 changes are complete and accepted in the 1.05.04 draft.

Jim Luth

2024-03-26 16:40

administrator   ~0021040

fixed with related issue.

Issue History

Date Modified Username Field Change
2023-12-12 18:11 Jim Luth New Issue
2023-12-12 18:11 Jim Luth Status new => assigned
2023-12-12 18:11 Jim Luth Assigned To => Jeff Harding
2023-12-12 18:11 Jim Luth Issue generated from: 0005487
2023-12-12 18:11 Jim Luth Note Added: 0020520
2023-12-12 18:11 Jim Luth Note Added: 0020521
2023-12-12 18:11 Jim Luth Note Added: 0020522
2023-12-12 18:11 Jim Luth Note Added: 0020523
2023-12-12 18:11 Jim Luth Note Added: 0020524
2023-12-12 18:11 Jim Luth Note Added: 0020525
2023-12-12 18:11 Jim Luth Note Added: 0020526
2023-12-12 18:11 Jim Luth Relationship added related to 0005487
2023-12-12 18:12 Jim Luth Project Feature Requests => 10000-003: Address Space
2023-12-12 18:16 Jim Luth Category Api Change => Spec
2023-12-12 18:16 Jim Luth Commit Version => 1.05.04 RC
2023-12-12 18:16 Jim Luth Fix Due Date => 2024-01-15
2024-01-23 16:55 Jeff Harding Status assigned => resolved
2024-01-23 16:55 Jeff Harding Resolution open => fixed
2024-01-23 16:55 Jeff Harding Fixed in Version => 1.05.04 RC1
2024-01-23 16:55 Jeff Harding Note Added: 0020697
2024-03-26 16:40 Jim Luth Status resolved => closed
2024-03-26 16:40 Jim Luth Note Added: 0021040