/*
 * locale.c  V2.0
 *
 * localization stuff
 *
 * (c) 1990-1992 Stefan Becker
 */

#include "ToolManagerConf.h"

/* locale string array */
char *AppStrings[]={
    MSG_WINDOW_TOP_GAD_STR,
    MSG_WINDOW_UP_GAD_STR,
    MSG_WINDOW_DOWN_GAD_STR,
    MSG_WINDOW_BOTTOM_GAD_STR,
    MSG_WINDOW_REMOVE_GAD_STR,
    MSG_WINDOW_NAME_GAD_STR,
    MSG_WINDOW_COMMAND_GAD_STR,
    MSG_WINDOW_HOTKEY_GAD_STR,
    MSG_WINDOW_PUBSCREEN_GAD_STR,
    MSG_WINDOW_POSITION_OPEN_LABEL_STR,
    MSG_WINDOW_POSITION_CLOSE_LABEL_STR,
    MSG_WINDOW_LEFTEDGE_GAD_STR,
    MSG_WINDOW_TOPEDGE_GAD_STR,
    MSG_WINDOW_EXEC_GAD_STR,
    MSG_WINDOW_IMAGE_GAD_STR,
    MSG_WINDOW_SOUND_GAD_STR,
    MSG_WINDOW_OK_GAD_STR,
    MSG_WINDOW_CANCEL_GAD_STR,

    MSG_MAINWIN_TITLE_STR,
    MSG_MAINWIN_TYPE_GAD_STR,
    MSG_MAINWIN_TYPE_EXEC_CYCLE_LABEL_STR,
    MSG_MAINWIN_TYPE_IMAGE_CYCLE_LABEL_STR,
    MSG_MAINWIN_TYPE_SOUND_CYCLE_LABEL_STR,
    MSG_MAINWIN_TYPE_MENU_CYCLE_LABEL_STR,
    MSG_MAINWIN_TYPE_ICON_CYCLE_LABEL_STR,
    MSG_MAINWIN_TYPE_DOCK_CYCLE_LABEL_STR,
    MSG_MAINWIN_LIST_GAD_STR,
    MSG_MAINWIN_SORT_GAD_STR,
    MSG_MAINWIN_NEW_GAD_STR,
    MSG_MAINWIN_EDIT_GAD_STR,
    MSG_MAINWIN_COPY_GAD_STR,
    MSG_MAINWIN_SAVE_GAD_STR,
    MSG_MAINWIN_USE_GAD_STR,
    MSG_MAINWIN_TEST_GAD_STR,

    MSG_MAINWIN_PROJECT_MENU_LABEL_STR,
    MSG_MAINWIN_OPEN_MENU_LABEL_STR,
    MSG_MAINWIN_OPEN_MENU_SHORTCUT_STR,
    MSG_MAINWIN_SAVEAS_MENU_LABEL_STR,
    MSG_MAINWIN_SAVEAS_MENU_SHORTCUT_STR,
    MSG_MAINWIN_ABOUT_MENU_LABEL_STR,
    MSG_MAINWIN_QUIT_MENU_LABEL_STR,
    MSG_MAINWIN_QUIT_MENU_SHORTCUT_STR,
    MSG_MAINWIN_EDIT_MENU_LABEL_STR,
    MSG_MAINWIN_LASTSAVED_MENU_LABEL_STR,
    MSG_MAINWIN_LASTSAVED_MENU_SHORTCUT_STR,
    MSG_MAINWIN_RESTORE_MENU_LABEL_STR,
    MSG_MAINWIN_RESTORE_MENU_SHORTCUT_STR,
    MSG_MAINWIN_SETTINGS_MENU_LABEL_STR,
    MSG_MAINWIN_CREATEICONS_MENU_LABEL_STR,
    MSG_MAINWIN_CREATEICONS_MENU_SHORTCUT_STR,

    MSG_MAINWIN_WRITE_ERROR_STR,

    MSG_EXECWIN_TITLE_STR,
    MSG_EXECWIN_NEWNAME_STR,
    MSG_EXECWIN_EXECTYPE_GAD_STR,
    MSG_EXECWIN_CURRENTDIR_GAD_STR,
    MSG_EXECWIN_OUTPUT_GAD_STR,
    MSG_EXECWIN_PATH_GAD_STR,
    MSG_EXECWIN_STACK_GAD_STR,
    MSG_EXECWIN_PRIORITY_GAD_STR,
    MSG_EXECWIN_DELAY_GAD_STR,
    MSG_EXECWIN_ARGUMENTS_GAD_STR,
    MSG_EXECWIN_TOFRONT_GAD_STR,

    MSG_IMAGEWIN_TITLE_STR,
    MSG_IMAGEWIN_NEWNAME_STR,
    MSG_IMAGEWIN_FILE_GAD_STR,

    MSG_SOUNDWIN_TITLE_STR,
    MSG_SOUNDWIN_NEWNAME_STR,
    MSG_SOUNDWIN_AREXX_GAD_STR,

    MSG_MENUWIN_TITLE_STR,
    MSG_MENUWIN_NEWNAME_STR,

    MSG_ICONWIN_TITLE_STR,
    MSG_ICONWIN_NEWNAME_STR,
    MSG_ICONWIN_SHOWNAME_GAD_STR,

    MSG_DOCKWIN_TITLE_STR,
    MSG_DOCKWIN_NEWNAME_STR,
    MSG_DOCKWIN_TITLE_GAD_STR,
    MSG_DOCKWIN_COLUMNS_GAD_STR,
    MSG_DOCKWIN_FONT_GAD_STR,
    MSG_DOCKWIN_ACTIVATED_GAD_STR,
    MSG_DOCKWIN_CENTERED_GAD_STR,
    MSG_DOCKWIN_FRONTMOST_GAD_STR,
    MSG_DOCKWIN_MENU_GAD_STR,
    MSG_DOCKWIN_PATTERN_GAD_STR,
    MSG_DOCKWIN_POPUP_GAD_STR,
    MSG_DOCKWIN_TEXT_GAD_STR,
    MSG_DOCKWIN_VERTICAL_GAD_STR,
    MSG_DOCKWIN_EDITTOOLS_GAD_STR,

    MSG_DOCKLISTWIN_TITLE_STR,
    MSG_DOCKLISTWIN_TOOLS_GAD_STR,
    MSG_DOCKLISTWIN_NEW_GAD_STR,

    MSG_MOVEWIN_DRAG_GAD_STR,

    MSG_FILEREQ_TITLE_FILE_STR,
    MSG_FILEREQ_TITLE_DRAWER_STR,

    MSG_FONTREQ_TITLE_STR,

    MSG_LISTREQ_TITLE_EXEC_STR,
    MSG_LISTREQ_TITLE_IMAGE_STR,
    MSG_LISTREQ_TITLE_SOUND_STR,
    MSG_LISTREQ_TITLE_PUBSCREEN_STR
};

/* misc. data */
struct Library *LocaleBase=NULL;
static struct Catalog *Catalog;

/* Get locale strings */
void GetLocale(void)
{
 /* Try to open locale.library */
 if (LocaleBase=OpenLibrary("locale.library",38)) {

  DEBUG_PRINTF("Locale: 0x%08lx\n",LocaleBase);

  /* Try to get catalog for current language */
  if (Catalog=OpenCatalog(NULL,"toolmanager.catalog",
                          OC_BuiltInLanguage, "english",
                          OC_Version,         2,
                          TAG_DONE)) {
   /* Read in locale language strings */
   char **as=AppStrings;
   ULONG i;

   DEBUG_PRINTF("Catalog: 0x%08lx\n",Catalog);

   /* Get translation strings */
   for (i=0; i<=MSG_LISTREQ_TITLE_PUBSCREEN; i++, as++)
    *as=GetCatalogStr(Catalog,i,*as);
  }
 }
}

void FreeLocale(void)
{
 if (LocaleBase) {
  if (Catalog) CloseCatalog(Catalog);
  CloseLibrary(LocaleBase);
 }
}
