Class MuLi

java.lang.Object
eu.bandm.tools.muli.MuLi

public class MuLi extends Object
Each 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.TextFound
with
 
    MuLi.TextFound ::= (index:(NAT U{-1}) * language:String * result:String
   
The 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).
  • Field Details

    • syntheticLanguage

      public static final String syntheticLanguage
      Use this as key value for put and get in cases where no natural language is applicable. E.g. for technical notions, personal names, formulae.
      See Also:
    • texts

      protected Map<String,String> texts
    • location

      protected Location location
  • Constructor Details

    • MuLi

      public MuLi()
    • MuLi

      public MuLi(Map<String,String> data)
      Initialize translations, uses put(Map), see there for important remarks!
  • Method Details

    • cloneUnmodifiable

      public MuLi cloneUnmodifiable()
      Returns:
      an unmodifiable copy. (Indeed, location is still modifiable !-)
    • toString

      public String toString()
      Overrides:
      toString in class Object
      Returns:
      a string representation. currently using java.util.Map default conversion.
    • get_location

      public Location get_location()
    • set_location

      public void set_location(Location loc)
    • getLanguages

      public Set<String> getLanguages()
      Returns:
      an unmodifiable copy of all languages serving as keys.
    • get

      @Opt public @Opt String get(String lang)
      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

      public boolean containsLang(String lang)
      Returns:
      whether there is an entry in this language.
    • get

      @Opt public @Opt MuLi.TextFound get(String... preference)
      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

      @Opt public @Opt MuLi.TextFound get(List<String> preference)
      See Also:
    • put

      public void put(String lang, String text)
      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

      public void put(Map<String,String> data)
      Put a multitude of key/value pairs into the internal map. The mapentries are separated into key and value, and passed to put(String,String).
      So, existing entries will silently be overwritten.
      Parameters:
      data - map of language to name
    • put

      @Deprecated public void put(String... pairs)
      Deprecated.
      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 to put(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 public void put(List<String> pairs)
      Deprecated.
      See Also: