Localization.Mod 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. MODULE Localization; (** AUTHOR "staubesv"; PURPOSE "Localization interface"; *)
  2. IMPORT
  3. Configuration;
  4. TYPE
  5. Language* = RECORD
  6. code* : ARRAY 3 OF CHAR; (* ISO 936-1 language code *)
  7. END;
  8. Languages* = POINTER TO ARRAY OF Language;
  9. VAR
  10. currentLanguage : Language;
  11. preferenceList : Languages; (* {(preferenceList # NIL) & (LEN(preferenceList) >= 0) } *)
  12. PROCEDURE GetCurrentLanguage*() : Language;
  13. BEGIN {EXCLUSIVE}
  14. RETURN currentLanguage;
  15. END GetCurrentLanguage;
  16. PROCEDURE GetLanguagePreferences*() : Languages;
  17. BEGIN {EXCLUSIVE}
  18. RETURN preferenceList;
  19. END GetLanguagePreferences;
  20. PROCEDURE SetLanguage*(CONST language : Language);
  21. BEGIN {EXCLUSIVE}
  22. currentLanguage := language;
  23. preferenceList[0] := currentLanguage;
  24. END SetLanguage;
  25. PROCEDURE GetDefaultLanguage;
  26. VAR
  27. res: WORD;
  28. BEGIN
  29. Configuration.Get("Local.Language", currentLanguage.code, res);
  30. IF res # Configuration.Ok THEN
  31. currentLanguage.code := "en"
  32. END
  33. END GetDefaultLanguage;
  34. BEGIN
  35. GetDefaultLanguage;
  36. NEW(preferenceList, 1);
  37. preferenceList[0] := currentLanguage;
  38. END Localization.
  39. System.Free Localization ~