GUI explains to the end user what each field is about, by reciting DESC of
olcAttributeTypes - this design seems passable, after all, DESC is intended
to describe the attribute type. This method worked for years.
Now user base grows, there are speakers of different languages. It is
required the field being described in multiple languages.
Had DESC been like the 'description' attribute type, an attribute type
defined in RFC2256, then I would be able to use language modifier:
description: Weight, in kg. It is used to screen health problems.
description;lang-zh: 体重,用于检查健康问题。
But it is not.
I can see only two ways to workaround the problem:
1. Extend DESC. This look ugly but simple:
... NAME 'ibmWeight' DESC 'Your weight, in kg. It is used to screen health
problems.|lang-zh: 您的体重,用于检查健康问题。' ...
The application would read DESC, split it by vertical-bars, find the
langauge that matches the users's and only display that part.
2. Build a shadow entry for every attributeType:
dn: olcAttributeTypes=ibmWeight,cn=shadowAttributeTypes,dc=ibm,dc=com
objectClass: ibmShadowAttributeType
olcAttributeTypes: ibmWeight
description: Weight, in kg. It is used to screen health problems.
description;lang-zh: 体重,用于检查健康问题。
and laboriously manually update shadow attribute entry when user add or
modify existing olcAttributeTypes.
What do you think? How can such a need can be solved?
Thanks in advance!
P.S. === about openldap's choice of design ===
When a few years ago I learned that
a attribute type is defined by adding an olcAttributeTypes attribute
my first reaction was, why not design it in such a way, that
a attribute type is defined by adding an olcAttributeType *entry*?
Like this:
--> objectClasss: olcAttributeType
--> olcAttributeName: ibmWeight
--> description: Weight, in kg. It is used to screen health problems.
--> description;lang-zh: 体重,用于检查健康问题。
The advantage, is to allow extension and inheritance. e.g. the following
example has olcConstrainedAttributeType which inherits olcAttributeType
--> objectClasss: olcAttributeType
++> objectClasss: olcConstrainedAttributeType
--> olcAttributeName: ibmWeight
--> description: Weight, in kg. It is used to screen health problems.
--> description;lang-zh: 体重,用于检查健康问题。
++> olcConstraintRegex: [0-9.][0-9.]kg
For usability reasons, some developer may as well add jpegPhoto into
attribute type definition.