Index: openacs-4/packages/ref-language/ref-language.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ref-language/ref-language.info,v
diff -u -r1.9 -r1.10
--- openacs-4/packages/ref-language/ref-language.info 13 May 2010 16:57:20 -0000 1.9
+++ openacs-4/packages/ref-language/ref-language.info 14 May 2010 12:22:49 -0000 1.10
@@ -7,17 +7,18 @@
f
t
-
+
Jon Griffin
ISO 639-1 language reference data for acs-reference.
Mayuli Enterprises, LLC
This is the ISO 639-1 language reference data (with languages names in English).
-
+
+
Index: openacs-4/packages/ref-language/sql/oracle/ref-language-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ref-language/sql/oracle/ref-language-create.sql,v
diff -u -r1.6 -r1.7
--- openacs-4/packages/ref-language/sql/oracle/ref-language-create.sql 13 May 2010 16:57:20 -0000 1.6
+++ openacs-4/packages/ref-language/sql/oracle/ref-language-create.sql 14 May 2010 12:22:49 -0000 1.7
@@ -6,7 +6,7 @@
--
--- ISO 639
+-- ISO 639-1
create table language_codes (
language_id char(2)
constraint language_codes_language_id_pk
@@ -43,3 +43,13 @@
commit;
end;
/
+
+-- Languages ISO-639-2 codes
+
+create table language_639_2_codes (
+ iso_639_2 char(3) constraint language_codes_iso_639_2_pk primary key,
+ iso_639_1 char(2),
+ label varchar(200)
+);
+
+comment on table language_639_2_codes is 'Contains ISO-639-2 language codes and their corresponding ISO-639-1 when it exists.';
Index: openacs-4/packages/ref-language/sql/oracle/ref-language-drop.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ref-language/sql/oracle/ref-language-drop.sql,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/ref-language/sql/oracle/ref-language-drop.sql 30 Sep 2003 12:10:10 -0000 1.4
+++ openacs-4/packages/ref-language/sql/oracle/ref-language-drop.sql 14 May 2010 12:22:49 -0000 1.5
@@ -12,6 +12,8 @@
-- This will probably fail if their is a child table using this.
-- I can probably make this cleaner also, but ... no time today
+drop table language_639_2_codes;
+
declare
cursor refsrc_cur is
select table_name,
Index: openacs-4/packages/ref-language/sql/oracle/upgrade/upgrade-5.6.0d2-5.6.0d3.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ref-language/sql/oracle/upgrade/upgrade-5.6.0d2-5.6.0d3.sql,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ref-language/sql/oracle/upgrade/upgrade-5.6.0d2-5.6.0d3.sql 14 May 2010 12:22:49 -0000 1.1
@@ -0,0 +1,11 @@
+-- The table is filled by after_install and after_upgrade apm callbacks
+-- using the iso-639-2.dat file
+
+create table language_639_2_codes (
+ iso_639_2 char(3) constraint language_codes_iso_639_2_pk primary key,
+ iso_639_1 char(2),
+ label varchar(200)
+);
+
+comment on table language_639_2_codes is 'Contains ISO-639-2 language codes and their corresponding ISO-639-1 when it exists.';
+
Index: openacs-4/packages/ref-language/sql/postgresql/ref-language-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ref-language/sql/postgresql/ref-language-create.sql,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/ref-language/sql/postgresql/ref-language-create.sql 13 May 2010 16:57:20 -0000 1.3
+++ openacs-4/packages/ref-language/sql/postgresql/ref-language-create.sql 14 May 2010 12:22:49 -0000 1.4
@@ -38,3 +38,13 @@
'http://www.iso.ch',
now()
);
+
+-- Languages ISO-639-2 codes
+
+create table language_639_2_codes (
+ iso_639_2 char(3) constraint language_codes_iso_639_2_pk primary key,
+ iso_639_1 char(2),
+ label varchar(200)
+);
+
+comment on table language_639_2_codes is 'Contains ISO-639-2 language codes and their corresponding ISO-639-1 when it exists.';
Index: openacs-4/packages/ref-language/sql/postgresql/ref-language-drop.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ref-language/sql/postgresql/ref-language-drop.sql,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/ref-language/sql/postgresql/ref-language-drop.sql 15 Sep 2001 01:11:32 -0000 1.3
+++ openacs-4/packages/ref-language/sql/postgresql/ref-language-drop.sql 14 May 2010 12:22:49 -0000 1.4
@@ -10,6 +10,8 @@
-- This will probably fail if their is a child table using this.
-- I can probably make this cleaner also, but ... no time today
+drop table language_639_2_codes;
+
create function inline_0() returns integer as '
declare
rec acs_reference_repositories%ROWTYPE;
Index: openacs-4/packages/ref-language/sql/postgresql/upgrade/upgrade-5.6.0d2-5.6.0d3.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ref-language/sql/postgresql/upgrade/upgrade-5.6.0d2-5.6.0d3.sql,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ref-language/sql/postgresql/upgrade/upgrade-5.6.0d2-5.6.0d3.sql 14 May 2010 12:22:49 -0000 1.1
@@ -0,0 +1,10 @@
+-- The table is filled by after_install and after_upgrade apm callbacks
+-- using the iso-639-2.dat file
+
+create table language_639_2_codes (
+ iso_639_2 char(3) constraint language_codes_iso_639_2_pk primary key,
+ iso_639_1 char(2),
+ label varchar(200)
+);
+
+comment on table language_639_2_codes is 'Contains ISO-639-2 language codes and their corresponding ISO-639-1 when it exists.';
Index: openacs-4/packages/ref-language/tcl/apm-callback-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ref-language/tcl/apm-callback-procs.tcl,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/ref-language/tcl/apm-callback-procs.tcl 13 May 2010 16:57:20 -0000 1.1
+++ openacs-4/packages/ref-language/tcl/apm-callback-procs.tcl 14 May 2010 12:22:49 -0000 1.2
@@ -9,6 +9,13 @@
namespace eval ref_language {}
namespace eval ref_language::apm {}
+ad_proc -private ref_language::apm::after_install {
+} {
+ Fill ISO-639-2 codes table
+} {
+ ref_language::apm::add_language_639_2_codes
+}
+
ad_proc -private ref_language::apm::after_upgrade {
{-from_version_name:required}
{-to_version_name:required}
@@ -21,25 +28,73 @@
set new_languages [ref_language::apm::lang_list_for_5_6_0d2]
- foreach {name code} $new_languages {
- set exists_p [db_string get_lang {select count(*) from language_codes where language_id = :code} -default 0]
-
- if { $exists_p } {
- db_dml update_lang {
- update language_codes set name = :name
- where language_id = :code
- }
- } else {
- db_dml insert_lang {
- insert into language_codes (language_id, name)
- values (:code, :name)
- }
- }
+ foreach {code name} $new_languages {
+ ref_language::set_data -iso1 $code -label $name
}
+
}
+ 5.6.0d2 5.6.0d3 {
+
+ ref_language::apm::add_language_639_2_codes
+
+ }
}
}
+## Helper procs
+
+ad_proc -private ref_language::apm::add_language_639_2_codes {
+} {
+ Fills language_639_2_codes
+
+ The ISO-639-2 codes are in a dat file located at
+ ref-language/sql/commjon directory. The file was downloaded from
+ http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt
+
+ Separator is "|" and the columns are:
+
+
+ - ISO 639-2 Bibliographic code (used if terminology one is empty)
+ - ISO 639-2 Terminology code (used if exists)
+ - ISO 639-1 code (2 digits)
+ - Language name in english
+ - Language name in french (ignored if present)
+
+
+} {
+
+ set filename "[acs_root_dir]/packages/ref-language/sql/common/iso-639-2.dat"
+
+ set channel [open $filename]
+ set data [read $channel]
+ close $channel
+
+ set row_list [split $data "\n"]
+ foreach row $row_list {
+
+ if { $row eq "" } {
+ continue
+ }
+
+ set col_list [split $row "|"]
+
+ # Set iso-639-2 code to terminology if exists, otherwise
+ # uses the bibliography one (see RFC 4646)
+
+ set iso2b [lindex $col_list 0]
+ set iso2 [lindex $col_list 1]
+ set iso1 [lindex $col_list 2]
+ set label [lindex $col_list 3]
+
+ if { $iso2 eq "" } {
+ set iso2 $iso2b
+ }
+
+ ref_language::set_data -iso2 $iso2 -iso1 $iso1 -label $label
+
+ }
+}
+
ad_proc -private ref_language::apm::lang_list_for_5_6_0d2 {
} {
return {
Index: openacs-4/packages/ref-language/tcl/ref-language-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ref-language/tcl/ref-language-procs.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ref-language/tcl/ref-language-procs.tcl 14 May 2010 12:22:49 -0000 1.1
@@ -0,0 +1,58 @@
+ad_library {
+
+ Library for managing language codes
+
+ @author Emmanuelle Raffenne (eraffenne@gmail.com)
+}
+
+namespace eval ref_language {}
+
+ad_proc -public ref_language::set_data {
+ -label:required
+ {-iso1 ""}
+ {-iso2 ""}
+} {
+ Add new ISO-639 language codes (3 chars and 2 chars) where they don't exist,
+ update them otherwise.
+} {
+
+ if { $iso1 eq "" && $iso2 eq "" } {
+
+ error "you need to provide either a 2 chars or a 3 chars language code"
+
+ } else {
+
+ if { $iso2 ne "" } {
+ set exists_p [db_string get_lang {} -default 0]
+
+ if { $exists_p } {
+ db_dml update_lang {}
+ } else {
+ db_dml insert_lang {}
+ }
+ }
+
+ if { $iso1 ne "" } {
+ ref_language::set_iso1 -code $iso1 -name $label
+ }
+ }
+
+}
+
+ad_proc -private ref_language::set_iso1 {
+ -code:required
+ -name:required
+} {
+ Add a new ISO-639-1 language code (2 chars) if it doesn't exist,
+ update it otherwise
+} {
+
+ set exists_p [db_string get_lang {} -default 0]
+
+ if { $exists_p } {
+ db_dml update_lang {}
+ } else {
+ db_dml insert_lang {}
+ }
+
+}
Index: openacs-4/packages/ref-language/tcl/ref-language-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ref-language/tcl/ref-language-procs.xql,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ref-language/tcl/ref-language-procs.xql 14 May 2010 12:22:49 -0000 1.1
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+ select count(*)
+ from language_639_2_codes
+ where iso_639_2 = :iso2
+
+
+
+
+
+
+
+ update language_639_2_codes
+ set label = :label, iso_639_1 = :iso1
+ where iso_639_2 = :iso2
+
+
+
+
+
+
+
+ insert into language_639_2_codes
+ (iso_639_2, iso_639_1, label)
+ values
+ (:iso2, :iso1, :label)
+
+
+
+
+
+
+
+ select count(*) from language_codes
+ where language_id = :code
+
+
+
+
+
+
+
+ update language_codes set name = :name
+ where language_id = :code
+
+
+
+
+
+
+
+ insert into language_codes (language_id, name)
+ values (:code, :name)
+
+
+
+
+