--
-- packages/gp-lang/sql/language-create.sql
--
-- @author Jeff Davis (davis@arsdigita.com)
-- @author Bruno Mattarollo (bruno.mattarollo@ams.greenpeace.org)
--
-- @creation-date 2000-09-10
-- @cvs-id $Id: message-catalog.sql,v 1.3 2002/10/07 14:32:42 lars Exp $
--

create table lang_keys (
    key                varchar2(200),
    package_key        varchar2(100)
                       constraint lang_keys_pk_fk
                       references apm_package_types (package_key)
);

create table lang_messages (    
    key                    varchar2(200)
                           constraint lang_messages_key_fk
                           references lang_keys(key),
    locale                 varchar2(30) 
                           constraint lang_messages_locale_fk
                           references ad_locales(locale)
                           constraint lang_messages_locale_nn
                           not null,
    message                clob,
    registered_p           char(1)
                           constraint lm_tranlated_p_ck check(registered_p in ('t','f')),
    constraint lang_messages_pk primary key (key, locale)
);

comment on table lang_messages is '
    Holds all the messages translated. The key is the way to get to a message.
    This table should be read at boot time -from ACS- to load all the messages
    into an nsv_array.
';

-- ****************************************************************************
-- * The lang_translate_columns table holds the columns that require translation.
-- * It is needed to generate the user interface for translating the web site.
-- * Note that we register on_what_column itself for translation.
-- ****************************************************************************

create table lang_translate_columns (   
        column_id integer 
	    constraint ltc_column_id_pk primary key,
        -- cant do references on user_tables cause oracle sucks
        on_which_table varchar2(50),
        on_what_column varchar2(50),
        --
        -- whether all entries in a column must be translated for the 
        -- site to function.
        --
        -- probably ultimately need something more sophisticated than 
        -- simply required_p
        --
        required_p char(1)
            constraint ltc_required_p_ck check(required_p in ('t','f')),
        --
        -- flag for whether to use the lang_translations table for content
        -- or add a row in the on_which_table table with the translated content.
        --
        short_p char(1)
            constraint ltc_short_p_ck check(short_p in ('t','f')),
        constraint ltc_un unique (on_which_table, on_what_column)
);


-- ****************************************************************************
-- * The lang_translation_registry table identifies a row as requiring translation
-- * to a given language. This should identify the parent table not the broken-apart
-- * child table.
-- ****************************************************************************

create table lang_translation_registry (
	on_which_table varchar(50),
	on_what_id integer 
	    constraint ltr_on_what_id_nn not null,
        locale varchar2(30)
	    constraint ltr_locale_fk
            references ad_locales(locale),
        --
        -- should have dependency info here
        --
        constraint lang_translation_registry_pk primary key(on_what_id, on_which_table, locale)
);

