Chapter 7. Language Module

7.1. Requirements

This chapter is $Revision: 1.1 $ $Date: 2003/01/05 00:00:29 $ .

7.1.1. Business Requirements

  1. Maintain ISO 639 language information and source information. Source of this information is http://www.loc.gov/standards/iso639-2/ .

  2. Maintain information for the User Interface (UI) such as Label, Tooltip and Help Text that will be stored in the database. The label is a description or name of the data that can be used by forms and reports as heading for the field data. Tooltip is optionally displayed when the users cursor moves over a field and tooltip support is on. Help Text is a window of text that is displayed at the request of the user for more information about a field.

  3. There will be two help tables in the db. One "standard" (called sys_help) is provided by the module writer and in the other "individual" (called user_help) the user can fill in when he wants different help information. When updating a module via a system update, only the standard table gets overwritten.

There will be a tool that helps importing default data into the db, including helpt text. Since now those things are handeled like normal data, it can be the same tool we use for importing standard data like countrycodes etc.

There are several arguments for storing help information in the database and not in ascii files:

  1. We can make a form for that, and the user can easily change the data

  2. The data from that tables can be used in 2-tier mode, too

  3. Access to db data is probably faster than access to ascii files (especially when we have big ascii files we have to search through to find the correct label).

  4. We make use of the db's advanced caching mechanisms

  5. It is easy to simply backup a database and have all variable data of gnue saved

  6. We don't have to invent just another file format with just another parser

  7. We can use the standard geas security system to decide which user can change help text and which user can't

  8. We could even have different labels/help texts for different companies by making the "individual" table company dependent if we want

  9. We can use the standard geas security system to decide which user can change help text and which user can't * we could even have different labels/help texts for different companies by making the "individual" table company dependent if we want

7.1.8. Business Object Definition

					
# language.gcd
#                  
# Copyright (C) 2001 Free Software Foundation, Inc.
#
# This file is part of GNU Enterprise.
#
# GNU Enterprise is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# 
# GNU Enterprise is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Enterprise; see the file COPYING.  If not, write to the
# Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA.
#
# This file originally written by Neil Tiffin (neilt@gnue.org).
#
# $Revision: 1.1 $ $Date: 2003/01/05 00:00:29 $ $Author: psu_gnue $
#

# ===========================================================================
# language - language dependent stuff goes here.
# ===========================================================================

module language {

  # -------------------------------------------------------------------------
  # definition of languages.
  # -------------------------------------------------------------------------
  class language
  {
    char     code<8>;       # en = ISO for english
    char     dialect<8>;    # us = ISO for united states
    char     desc_en<25>;   # english description of language (required)
    char     desc_fr<25>;   # french language description of language
    char     desc_ot<25>;    # other language description of language
  };
  
  # -------------------------------------------------------------------------
  # default system language dependent data for use by forms and reports
  # to assist the user.
  # -------------------------------------------------------------------------
  class help
  {
    language::language * language;
    
    char  code<8>;            # code that matches language::language.code
    char  dialect<8>;         # dialect that matches language::language.dialect
    
    char  name<255>;          # fully qualified module class field name.
                              #   TODO define/document format.
    
                              # other layers of help may be defined by
                              #   extending this class.
                              # base help has these fields = null
    char  company<15>;        # place holder until decided how it works in geas.
    char  usr_group<15>;     # if empty this change applies to all groups.
    char  usr<15>;           # if empty this change applies to all users.

                              # Help data
    char  help_text<2000>;    # full help text if the user clicks on help.
    char  help_keywords<100>; # keywords to help for searches.
    text  tool_tip;           # short help when the user's mouse passes over
                              #   the field.
    text  label;              # default label for this data, used for
                              #   both reports and forms.
    text  long_label;
    text  short_label;
    text  default_text;       # default text data for new fields.
  };
};