anchor.diff:            get_lang_mod/0,
             get_ui_string/1,
             get_log_string/1,
  +          get_block_type_strings/1,
             get_attrib_string/1,
  -          get_block_type_descr/1,
  +          get_attrib_id/1,
             get_map_string/2,
             get_ui_cmds/0,
             get_yes/0,
  
positive.code: get_log_string(LogStringId) ->
    case get_lang_mod() of
      undefined ->
        "Error: Language module not found~n";
  
      LangMod -> 
        get_map_string(LogStringId, LangMod:log_strings())
    end.
  
  
  %%
  %% Get an attribute name string from attribute ID
  %%
  -spec get_attrib_string(AttribStringId :: atom()) -> string().
  
  get_attrib_string(AttribStringId) ->
    case get_lang_mod() of
      undefined -> 
        "Error: Language module not found~n";
  
      LangMod -> 
        get_map_string(AttribStringId, LangMod:attrib_strings())
    end.
  
  
  %%
  %% Get the block type description, corresponding to the block module
  %%
  -spec get_block_type_descr(BlockModule :: atom()) -> string().
  
  get_block_type_descr(BlockModule) ->
    case get_lang_mod() of
      undefined -> 
        "Error: Language module not found~n";
  
      LangMod -> 
        get_map_string(BlockModule, LangMod:block_type_descrs())
    end.
  
  
  %%
  
negative.code: get_ui_string(UiStringId) ->
    case get_lang_mod() of
      undefined ->
        ErrorStr = "Error: Language module not found",
        logger:error(ErrorStr),
        ErrorStr;
    
      LangMod ->
        get_map_string(UiStringId, LangMod:ui_strings())
    end.
  
  