Package eu.bandm.tools.muli
Class MuLi
java.lang.Object
eu.bandm.tools.muli.MuLi
Each
The
An index of
ATTENTION
"language" parameters are currently encoded as "totally free" string values.
(1) A linkage to the "locale" mechanisms of java is not yet defined.
(2) A hash storage for all "language" strings (converting them to unique single objects) could be sensible, but has to be decided in connection with (1).
MuLi
represents a multi-lingual identifier or text.
Its structure is
language ::= (String U syntheticLanguage)
MuLi ::= language -/-> String
syntheticLanguage
is a special string value reserved for the cases
in which a language differetiation is not applicable (e.g. for pure numeric strings
or for personal names).
The
language
values should follow the ISO language codes.
as specified in
ISO 639-2. These are the codes also used by "xml:lang
",
cf. RFC 4646 / RFC 4647 / IETF BCP 47.
At least they should not have the value of the syntheticLanguage
string.
The look-up function get(String)
is delegated to a map object and
has the usual java-like semantics, esp. returning null
if
s
not in the domain.
Further, there is a special look-up function get(String...)
of type
get : preference:(SEQ language)->MuLi.TextFoundwith
MuLi.TextFound ::= (index:(NAT U{-1}) * language:String * result:StringThe object of class
MuLi.TextFound
,
as returned by the function, reflects the most left language in
the original preference list for which an entry can be found in the
MuLi
object.
An index of
=-1
indicated the fact that the found language is chosen
by random and was not in the list of preferred languages.
ATTENTION
"language" parameters are currently encoded as "totally free" string values.
(1) A linkage to the "locale" mechanisms of java is not yet defined.
(2) A hash storage for all "language" strings (converting them to unique single objects) could be sensible, but has to be decided in connection with (1).
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
A class representing the result of calls toget(String...)
and sim. -
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
containsLang
(String lang) void
Deprecated.void
Put a new key/value pair into the internal map.void
Deprecated.use "put(Collections.literalMap(Object,Object)
" instead!void
Put a multitude of key/value pairs into the internal map.void
set_location
(Location loc) toString()
-
Field Details
-
syntheticLanguage
Use this as key value forput
andget
in cases where no natural language is applicable. E.g. for technical notions, personal names, formulae.- See Also:
-
texts
-
location
-
-
Constructor Details
-
MuLi
public MuLi() -
MuLi
Initialize translations, usesput(Map)
, see there for important remarks!
-
-
Method Details
-
cloneUnmodifiable
- Returns:
- an unmodifiable copy. (Indeed, location is still modifiable !-)
-
toString
-
get_location
-
set_location
-
getLanguages
- Returns:
- an unmodifiable copy of all languages serving as keys.
-
get
- Returns:
- the string stored under a certain key representing a "language".
Is directly mapped to java.util.Map, i.e. returns
null
if key not in domain.
-
containsLang
- Returns:
- whether there is an entry in this language.
-
get
- Returns:
- a
MuLi.TextFound
object representing the first string found when trying the listed languages from left to right. If not translation is found, return an arbitrary one. If no translation exists, return null.
-
get
- See Also:
-
put
Put a new key/value pair into the internal map. Existing entries will silently be overwritten.- Parameters:
lang
- the key, should be a language code.text
- the value, i.e. the translation into this language.
-
put
Put a multitude of key/value pairs into the internal map. The mapentries are separated into key and value, and passed toput(String,String)
.
So, existing entries will silently be overwritten.- Parameters:
data
- map of language to name
-
put
Deprecated.use "put(Collections.literalMap(Object,Object)
" instead!Put a multitude of key/value pairs into the internal map. The number of arguments must be even. The arguments are intepreted as key and value, alternatingly, and passed toput(String,String)
.
So, existing entries will silently be overwritten.- Parameters:
pairs
- sequence of key/value pairs- Throws:
IllegalArgumentException
- in case the number of Strings in not even.
-
put
Deprecated.use "put(Collections.literalMap(Object,Object)
" instead!- See Also:
-
Collections.literalMap(Object,Object)
" instead!