Index: openacs-4/packages/acs-admin/www/apm/version-i18n.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/apm/version-i18n.tcl,v diff -u -r1.11.10.2 -r1.11.10.3 --- openacs-4/packages/acs-admin/www/apm/version-i18n.tcl 29 Jul 2014 11:23:55 -0000 1.11.10.2 +++ openacs-4/packages/acs-admin/www/apm/version-i18n.tcl 9 Sep 2014 08:31:53 -0000 1.11.10.3 @@ -103,7 +103,7 @@ -options {{{Find human language text and replace with <# ... #> tags} replace_text} {{Replace <# ... #> tags with #...# keys and insert message into catalog} replace_tags}} \ -values {replace_text} \ } else { - # TCL files or SQL files + # Tcl files or SQL files element create file_list_form tcl_action_inform \ -datatype text \ -widget inform \ Index: openacs-4/packages/acs-automated-testing/tcl/aa-test-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-automated-testing/tcl/aa-test-procs.tcl,v diff -u -r1.38.6.4 -r1.38.6.5 --- openacs-4/packages/acs-automated-testing/tcl/aa-test-procs.tcl 30 Apr 2014 23:40:47 -0000 1.38.6.4 +++ openacs-4/packages/acs-automated-testing/tcl/aa-test-procs.tcl 9 Sep 2014 08:31:53 -0000 1.38.6.5 @@ -309,7 +309,7 @@ @param cats Properties of the test case. Must be zero or more of the following:

We recommend the short notation for new package development. -

Message Keys in TCL Files

+

Message Keys in Tcl Files

In adp files message lookups are typically done with the syntax \#package_key.message_key\#. In Tcl files all message lookups *must* be on either of the following formats: @@ -100,10 +100,10 @@

- Translatable texts in page TCL scripts are often found in page titles, + Translatable texts in page Tcl scripts are often found in page titles, context bars, and form labels and options. Many times the texts are enclosed in double quotes. The following is an example of grep commands - that can be used on Linux to highlight translatable text in TCL files: + that can be used on Linux to highlight translatable text in Tcl files:

 # Find text in double quotes
 find -iname '*.tcl'|xargs egrep -i '"[a-z]'
@@ -118,7 +118,7 @@
 find -iname '*.tcl'|xargs egrep -i '(ad_complain|ad_return_error)'|egrep -v '<#'
 
       

- You may mark up translatable text in TCL library files and TCL pages + You may mark up translatable text in Tcl library files and Tcl pages with temporary tags on the <#key text#> syntax. If you have a sentence or paragraph of text with variables and or procedure calls in it you should in most cases @@ -171,11 +171,11 @@ When you feel ready you may vist your package in the package manager and run the action "Replace tags with keys - and insert into catalog" on the TCL files that you've edited to + and insert into catalog" on the Tcl files that you've edited to replace the temporary tags with calls to the message lookup procedure. -

Dates, Times, and Numbers in TCL files

- Most date, time, and number variables are calculated in TCL files. Dates and times must be converted when stored in the database, +

Dates, Times, and Numbers in Tcl files

+ Most date, time, and number variables are calculated in Tcl files. Dates and times must be converted when stored in the database, when retrieved from the database, and when displayed. All dates are stored in the database in the server's timezone, which is an APM Parameter set at Index: openacs-4/packages/acs-core-docs/www/i18n-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-requirements.html,v diff -u -r1.25.2.1 -r1.25.2.2 --- openacs-4/packages/acs-core-docs/www/i18n-requirements.html 21 Aug 2013 10:19:23 -0000 1.25.2.1 +++ openacs-4/packages/acs-core-docs/www/i18n-requirements.html 9 Sep 2014 08:31:55 -0000 1.25.2.2 @@ -178,9 +178,9 @@ write other character sets. In particular, conversions to and from Unicode will need to be explicitly performed at the following times:

  • Loading source files (.tcl or .adp) or content files from the -filesystem

  • Accepting form input data from users

  • Delivering text output to a browser

  • Composing an email message

  • Writing data to the filesystem

Acs-templating does the following.

  • When the acs-templating package opens an an ADP or TCL file, it assumes the file is iso-8859-1. If the output charset (OutputCharset) in the AOLserver config file is set, then acs-templating assumes it's that charset. +filesystem

  • Accepting form input data from users

  • Delivering text output to a browser

  • Composing an email message

  • Writing data to the filesystem

Acs-templating does the following.

  • When the acs-templating package opens an an ADP or Tcl file, it assumes the file is iso-8859-1. If the output charset (OutputCharset) in the AOLserver config file is set, then acs-templating assumes it's that charset. Writing Files

  • When the acs-templating package writes an an ADP or - TCL file, it assumes the file is iso-8859-1. If the output + Tcl file, it assumes the file is iso-8859-1. If the output charset (OutputCharset) in the AOLserver config file is set, then acs-templating assumes it's that charset.

Tcl Source File Character Set

There are two classes of Tcl files loaded by the system; library files loaded at server startup, and page script files, Index: openacs-4/packages/acs-core-docs/www/individual-programs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/individual-programs.html,v diff -u -r1.32.2.1 -r1.32.2.2 --- openacs-4/packages/acs-core-docs/www/individual-programs.html 21 Aug 2013 10:19:23 -0000 1.32.2.1 +++ openacs-4/packages/acs-core-docs/www/individual-programs.html 9 Sep 2014 08:31:55 -0000 1.32.2.2 @@ -8,7 +8,7 @@ Transport Agent, and source control system, are also needed for a fully effective installation.

Table 2.2. Version Compatibility Matrix

OpenACS Version3.2.5 4.5 4.6 4.6.14.6.24.6.35.05.15.25.35.45.5
AOLserver3YesNo
3.3+ad13MaybeYesNo
3.3oacs1MaybeYesNo
3.4.4No
3.4.4oacs1MaybeYesNo
3.5.5MaybeYesNo
4.0MaybeYes
4.5NoYes
Tcl8.4Yes
8.5.4 -Maybe
PostgreSQL7.0YesNo
7.2MaybeYesNo
7.3.2 - 7.3.xNoYesNo
7.4NoYesNo
8.0NoMaybeYes
8.1NoYes
8.2NoCVS version onlyYes
8.3NoYes
Oracle8.1.6MaybeYesMaybe
8.1.7MaybeYesMaybe
9iNoYes
10gNoYes
11gNoMaybe

The OpenACS installation instructions assume the operating system and build environment are installed. - The instructions explain installation of TCL, Tcllib, tDOM, tclwebtest, a Web Server, a Database, a Process Controller, and + The instructions explain installation of Tcl, Tcllib, tDOM, tclwebtest, a Web Server, a Database, a Process Controller, and Source Control software. The following external links are for reference only.

  • OpenACS 5.7.0The OpenACS tarball comprises the core packages and many useful additional packages. This includes a full set @@ -36,19 +36,19 @@ whereas on BSD distributions, make and gmake are - different --use gmake.

  • TCL 8.4.x. 

    • TCL 8.4.x, REQUIRED. OpenACS is written in TCL, an interpreted - language. A threaded version of the TCL interpreter must be installed for - OpenACS to work. The TCL interpreter that is included in most standard - distributions may not be thread safe.

    • TCL 8.4.x development headers and libraries, OPTIONAL.  The site-wide-search service, OpenFTS, requires these to + different --use gmake.

  • Tcl 8.4.x. 

    • Tcl 8.5.x, REQUIRED. OpenACS is written in Tcl, an interpreted + language. A threaded version of the Tcl interpreter must be installed for + OpenACS to work. The Tcl interpreter that is included in most standard + distributions may not be thread safe.

    • TCL 8.5.x development headers and libraries, OPTIONAL.  The site-wide-search service, OpenFTS, requires these to compile. (Debian users: apt-get install - tcl8.4-dev). You need this + tcl8.5-dev). You need this to install OpenFTS.

  • Tcllib, REQUIRED.  OpenACS 5.7.0 uses those Tcl extensions to send e-mail out, among others.

  • tDOM, REQUIRED. OpenACS 5.7.0 stores queries in XML files, so we use an AOLserver module called tDOM to parse these files. (This replaces libxml2, which - was used prior to 4.6.4.)

  • tclwebtest, OPTIONAL. tclwebtest is a tool for testing web interfaces via tcl scripts.

  • Web Server. The web server handles incoming HTTP requests, provides - a runtime environment for OpenACS's tcl code, connects to the + was used prior to 4.6.4.)

  • tclwebtest, OPTIONAL. tclwebtest is a tool for testing web interfaces via Tcl scripts.

  • Web Server. The web server handles incoming HTTP requests, provides + a runtime environment for OpenACS's Tcl code, connects to the database, sends out HTTP responses, and logs requests and errors. OpenACS uses AOLserver; some people have had success running Apache with mod_nsd.

    • AOLserver 4.x, REQUIRED. Provides the base HTTP server

    @@ -89,7 +89,7 @@ through a PAM module (such as RADIUS).

  • pam_radius 1.3.16, OPTIONAL. Provides RADIUS capabilities for PAM. You need this if you want to use RADIUS authentication via PAM in OpenACS.

  • ns_ldap 0.r8, OPTIONAL. Provides LDAP capabilities for AOLserver. You need this if you want to use LDAP authentication in OpenACS.

  • OpenFTS - TCL 0.3.2, OPTIONAL. Adds + Tcl 0.3.2, OPTIONAL. Adds full-text-search to PostgreSQL and includes a driver for AOLserver. You need this if you want users to be able to search for any text on your site. For postgres 7.4.x and Index: openacs-4/packages/acs-core-docs/www/install-steps.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-steps.html,v diff -u -r1.34.2.1 -r1.34.2.2 --- openacs-4/packages/acs-core-docs/www/install-steps.html 21 Aug 2013 10:19:25 -0000 1.34.2.1 +++ openacs-4/packages/acs-core-docs/www/install-steps.html 9 Sep 2014 08:31:56 -0000 1.34.2.2 @@ -88,7 +88,7 @@ you've done a search first. When you do post, be sure to include your setup information (OS, etc) as well as the exact commands that are failing with the accompanying error. If - there's a SQL error in the TCL error or in the log, + there's a SQL error in the Tcl error or in the log, post that too.

  • If you find errors in this document or if you have ideas about Index: openacs-4/packages/acs-core-docs/www/release-notes.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/release-notes.html,v diff -u -r1.54.2.1 -r1.54.2.2 --- openacs-4/packages/acs-core-docs/www/release-notes.html 21 Aug 2013 10:19:28 -0000 1.54.2.1 +++ openacs-4/packages/acs-core-docs/www/release-notes.html 9 Sep 2014 08:31:56 -0000 1.54.2.2 @@ -83,7 +83,7 @@ release.

  • The ChangeLogs include an annotated list of changes (the section called “Changelog (most recent release only)”) since the last release and in the entire 5.7 release sequence the section called “Changelog for oacs-5-7”.

    Release 5.3.1

    • Bug fixes.

      New TIPs implemented.

      All Core Automated Tests for Postgres pass.

      New Site and Blank master templates and CSS compatible with the .LRN Zen work. Compatibility master templates are provided for existing sites.

    The ChangeLogs include an annotated list of changes (the section called “Changelog (most recent release only)”) since the last release and in the -entire 5.7 release sequence the section called “Changelog for oacs-5-7”.

    Release 5.3.0

    • Bug fixes.

      New TIPs implemented.

      All Core Automated Tests for Postgres pass.

    Release 5.2.0

    • Bug fixes.

      New TIPs implemented.

      This release does not include new translations.

    Release 5.1.4

    • Bug fixes.

      The missing CR TCL API has been filled in, thanks to Rocael and +entire 5.7 release sequence the section called “Changelog for oacs-5-7”.

      Release 5.3.0

      • Bug fixes.

        New TIPs implemented.

        All Core Automated Tests for Postgres pass.

      Release 5.2.0

      • Bug fixes.

        New TIPs implemented.

        This release does not include new translations.

      Release 5.1.4

      • Bug fixes.

        The missing CR Tcl API has been filled in, thanks to Rocael and his team and Dave Bauer.

        This release does not include new translations.

      Release 5.1.3

      • Bug fixes, primarily for .LRN compatibility in support of upcoming .LRN 2.1.0 releases. This release does not include new translations since 5.1.2.

      Release 5.1.2

      • Translations syncronized with the translation server. Basque and Catalan added. Index: openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html,v diff -u -r1.42.2.1 -r1.42.2.2 --- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 21 Aug 2013 10:19:32 -0000 1.42.2.1 +++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 9 Sep 2014 08:31:56 -0000 1.42.2.2 @@ -14,7 +14,7 @@ This tutorial uses the content repository package. This radically simplifies the database work, but forces us to work around the content repository's limitations, including an - incomplete TCL API. So the tutorial is messier than we'd like + incomplete Tcl API. So the tutorial is messier than we'd like right now. Code that is temporary hackage is clearly marked.

        In this tutorial, we will make an application package for displaying a list of text notes. Index: openacs-4/packages/acs-core-docs/www/tutorial-pages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-pages.html,v diff -u -r1.43.2.1 -r1.43.2.2 --- openacs-4/packages/acs-core-docs/www/tutorial-pages.html 21 Aug 2013 10:19:32 -0000 1.43.2.1 +++ openacs-4/packages/acs-core-docs/www/tutorial-pages.html 9 Sep 2014 08:31:57 -0000 1.43.2.2 @@ -5,7 +5,7 @@

      Install some API

      As a workaround for missing content-repository functionality, copy a provided file into the directory for tcl files:

           cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial/note-procs.tcl /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/

      To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage".

      Page Map

      Our package will have two visible pages. The first shows a list of all objects; the second shows a single object in view or edit mode, and can also be used to add an object. The index page will display the list, but since we might reuse the list later, we'll put it in a seperate file and include it on the index page.

      Figure 9.5. Page Map

      Page Map

      Build the "Index" page

      Each user-visible page in your package has, typically, three parts. The tcl file - holds the procedural logic for the page, including TCL and + holds the procedural logic for the page, including Tcl and database-independent SQL code, and does things like check permissions, invoke the database queries, and modify variables, and the adp page Index: openacs-4/packages/acs-core-docs/www/tutorial-second-database.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-second-database.html,v diff -u -r1.9.4.1 -r1.9.4.2 --- openacs-4/packages/acs-core-docs/www/tutorial-second-database.html 21 Aug 2013 10:19:33 -0000 1.9.4.1 +++ openacs-4/packages/acs-core-docs/www/tutorial-second-database.html 9 Sep 2014 08:31:57 -0000 1.9.4.2 @@ -1,5 +1,5 @@ -Connect to a second database

      Connect to a second database

      It is possible to use the OpenACS TCL database API with +Connect to a second database

      Connect to a second database

      It is possible to use the OpenACS Tcl database API with other databases. In this example, the OpenACS site uses a PostGre database, and accesses another PostGre database called legacy.

      1. Modify config.tcl to accomodate the legacy database, and to Index: openacs-4/packages/acs-core-docs/www/xml/developers-guide/i18n.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/developers-guide/i18n.xml,v diff -u -r1.26 -r1.26.4.1 --- openacs-4/packages/acs-core-docs/www/xml/developers-guide/i18n.xml 11 Dec 2010 23:36:32 -0000 1.26 +++ openacs-4/packages/acs-core-docs/www/xml/developers-guide/i18n.xml 9 Sep 2014 08:31:57 -0000 1.26.4.1 @@ -110,7 +110,7 @@ - Localizable text must be handled in ADP files, in TCL files, and + Localizable text must be handled in ADP files, in Tcl files, and in APM Parameters. OpenACS provides two approaches, message keys and localized ADP files. For ADP pages which are mostly code, replacing the message text with message key placeholders @@ -214,7 +214,7 @@ - Message Keys in TCL Files + Message Keys in Tcl Files In adp files message lookups are typically done with the syntax @@ -247,10 +247,10 @@ - Translatable texts in page TCL scripts are often found in page titles, + Translatable texts in page Tcl scripts are often found in page titles, context bars, and form labels and options. Many times the texts are enclosed in double quotes. The following is an example of grep commands - that can be used on Linux to highlight translatable text in TCL files: + that can be used on Linux to highlight translatable text in Tcl files: # Find text in double quotes @@ -267,7 +267,7 @@ - You may mark up translatable text in TCL library files and TCL pages + You may mark up translatable text in Tcl library files and Tcl pages with temporary tags on the <#key text#> syntax. If you have a sentence or paragraph of text with variables and or procedure calls in it you should in most cases @@ -342,17 +342,17 @@ When you feel ready you may vist your package in the package manager and run the action "Replace tags with keys - and insert into catalog" on the TCL files that you've edited to + and insert into catalog" on the Tcl files that you've edited to replace the temporary tags with calls to the message lookup procedure. - Dates, Times, and Numbers in TCL files + Dates, Times, and Numbers in Tcl files - Most date, time, and number variables are calculated in TCL files. Dates and times must be converted when stored in the database, + Most date, time, and number variables are calculated in Tcl files. Dates and times must be converted when stored in the database, when retrieved from the database, and when displayed. All dates are stored in the database in the server's timezone, which is an APM Parameter set at @@ -513,8 +513,8 @@ - Replace human-readable text in TCL files with temporary tags - Examine all of the tcl files in the packages for human-readable text and replace it with temporary tags. The temporary tags in TCL are slightly different from those in ADP. If the first character in the temporary tag is an underscore (_), then the message keys will be auto-generated from the original message text. Here is an unmodified tcl file: + Replace human-readable text in Tcl files with temporary tags + Examine all of the tcl files in the packages for human-readable text and replace it with temporary tags. The temporary tags in Tcl are slightly different from those in ADP. If the first character in the temporary tag is an underscore (_), then the message keys will be auto-generated from the original message text. Here is an unmodified tcl file: set title "Messages for $a(name) in $b(label)" @@ -537,8 +537,8 @@ - Replace the temporary message tags in TCL files - Repeat step 2 for tcl files. Here is the example TCL file after conversion: + Replace the temporary message tags in Tcl files + Repeat step 2 for tcl files. Here is the example Tcl file after conversion: set title [_ simulation.admin_title] @@ -551,7 +551,7 @@ Internationalize SQL Code - If there is any user-visible TCL code in the .sql or .xql files, internationalize that the same way as for the TCL files. + If there is any user-visible Tcl code in the .sql or .xql files, internationalize that the same way as for the Tcl files. @@ -582,7 +582,7 @@ - In TCL files where the date fields are used, convert the datetime from local server timezone, which is how it's stored in the database, to the user's timezone for display. Do this with the localizing function lc_time_system_to_conn: + In Tcl files where the date fields are used, convert the datetime from local server timezone, which is how it's stored in the database, to the user's timezone for display. Do this with the localizing function lc_time_system_to_conn: set foo_date_ansi [lc_time_system_to_conn $foo_date_ansi] When a datetime will be written to the database, first convert it from the user's local time to the server's timezone with lc_time_conn_to_system. @@ -894,7 +894,7 @@ Be careful with curly brackets - Code within curly brackets isn't evaluated. TCL uses curly brackets as an alternative way to build lists. But TCL also uses curly brackets as an alternative to quotation marks for quoting text. So this original code + Code within curly brackets isn't evaluated. Tcl uses curly brackets as an alternative way to build lists. But Tcl also uses curly brackets as an alternative to quotation marks for quoting text. So this original code array set names { key "Pretty" ...} ... if converted to @@ -918,7 +918,7 @@ Use system locale (an APM parameter for acs_lang) default to en_US - For ADP pages, message key lookup occurs in the templating engine. For TCL pages, message key lookup happens with the _ function. In both cases, if the requested locale is not found but a locale which is the default for the language which matches your locale's language is + For ADP pages, message key lookup occurs in the templating engine. For Tcl pages, message key lookup happens with the _ function. In both cases, if the requested locale is not found but a locale which is the default for the language which matches your locale's language is found, then that locale is offered instead. Index: openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml,v diff -u -r1.50.2.4 -r1.50.2.5 --- openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml 17 Oct 2013 09:08:35 -0000 1.50.2.4 +++ openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml 9 Sep 2014 08:31:57 -0000 1.50.2.5 @@ -1590,7 +1590,7 @@ Connect to a second database - It is possible to use the OpenACS TCL database API with + It is possible to use the OpenACS Tcl database API with other databases. In this example, the OpenACS site uses a PostGre database, and accesses another PostGre database called legacy. Index: openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-pages.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-pages.xml,v diff -u -r1.19 -r1.19.4.1 --- openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-pages.xml 11 Dec 2010 23:36:32 -0000 1.19 +++ openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-pages.xml 9 Sep 2014 08:31:57 -0000 1.19.4.1 @@ -34,7 +34,7 @@ Build the "Index" page Each user-visible page in your package has, typically, three parts. The tcl file - holds the procedural logic for the page, including TCL and + holds the procedural logic for the page, including Tcl and database-independent SQL code, and does things like check permissions, invoke the database queries, and modify variables, and the adp page Index: openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial.xml,v diff -u -r1.20 -r1.20.4.1 --- openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial.xml 11 Dec 2010 23:36:32 -0000 1.20 +++ openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial.xml 9 Sep 2014 08:31:57 -0000 1.20.4.1 @@ -38,7 +38,7 @@ This tutorial uses the content repository package. This radically simplifies the database work, but forces us to work around the content repository's limitations, including an - incomplete TCL API. So the tutorial is messier than we'd like + incomplete Tcl API. So the tutorial is messier than we'd like right now. Code that is temporary hackage is clearly marked. Index: openacs-4/packages/acs-core-docs/www/xml/for-everyone/release-notes.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/for-everyone/release-notes.xml,v diff -u -r1.29.2.1 -r1.29.2.2 --- openacs-4/packages/acs-core-docs/www/xml/for-everyone/release-notes.xml 15 Jan 2014 09:02:35 -0000 1.29.2.1 +++ openacs-4/packages/acs-core-docs/www/xml/for-everyone/release-notes.xml 9 Sep 2014 08:31:58 -0000 1.29.2.2 @@ -270,7 +270,7 @@ Bug fixes. - The missing CR TCL API has been filled in, thanks to Rocael and + The missing CR Tcl API has been filled in, thanks to Rocael and his team and Dave Bauer. This release does not include new translations. Index: openacs-4/packages/acs-core-docs/www/xml/install-guide/aolserver4.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/install-guide/aolserver4.xml,v diff -u -r1.30 -r1.30.12.1 --- openacs-4/packages/acs-core-docs/www/xml/install-guide/aolserver4.xml 17 Jul 2006 05:38:37 -0000 1.30 +++ openacs-4/packages/acs-core-docs/www/xml/install-guide/aolserver4.xml 9 Sep 2014 08:31:58 -0000 1.30.12.1 @@ -33,8 +33,8 @@ tcl from source is optional. - Retrieve TCL 8.4 (or higher) - Download and install TCL 8.4 from source + Retrieve Tcl 8.4 (or higher) + Download and install Tcl 8.4 from source Note for Debian users: you can apt-get install tcl8.4-dev if you have the right version (stable users will need @@ -43,7 +43,7 @@ have to use /usr/lib/tcl8.4/ instead of /usr/local/lib when you try to find the tcl libraries, however. - If you have not installed TCL already, download the latest TCL version from Sourceforge + If you have not installed Tcl already, download the latest Tcl version from Sourceforge Debian: apt-get install tcl8.4 tcl8.4-dev and proceed to Index: openacs-4/packages/acs-core-docs/www/xml/install-guide/configuring.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/install-guide/configuring.xml,v diff -u -r1.12 -r1.12.4.1 --- openacs-4/packages/acs-core-docs/www/xml/install-guide/configuring.xml 11 Dec 2010 23:36:32 -0000 1.12 +++ openacs-4/packages/acs-core-docs/www/xml/install-guide/configuring.xml 9 Sep 2014 08:31:58 -0000 1.12.4.1 @@ -206,7 +206,7 @@ - A templated page uses an ADP/TCL pair. The first line in the ADP file is usually: + A templated page uses an ADP/Tcl pair. The first line in the ADP file is usually: <master> If it appears exactly like this, without any arguments, the template processer uses default-master for that subsite. For pages in /var/lib/aolserver/$OPENACS_SERVICE_NAME/www, this is /var/lib/aolserver/$OPENACS_SERVICE_NAME/www/default-master.adp and the associated .tcl file. Index: openacs-4/packages/acs-core-docs/www/xml/install-guide/overview.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/install-guide/overview.xml,v diff -u -r1.28.12.1 -r1.28.12.2 --- openacs-4/packages/acs-core-docs/www/xml/install-guide/overview.xml 13 Oct 2013 10:33:55 -0000 1.28.12.1 +++ openacs-4/packages/acs-core-docs/www/xml/install-guide/overview.xml 9 Sep 2014 08:31:58 -0000 1.28.12.2 @@ -281,7 +281,7 @@ you've done a search first. When you do post, be sure to include your setup information (OS, etc) as well as the exact commands that are failing with the accompanying error. If - there's a SQL error in the TCL error or in the log, + there's a SQL error in the Tcl error or in the log, post that too. Index: openacs-4/packages/acs-core-docs/www/xml/install-guide/software.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/install-guide/software.xml,v diff -u -r1.25 -r1.25.6.1 --- openacs-4/packages/acs-core-docs/www/xml/install-guide/software.xml 13 Sep 2009 23:54:41 -0000 1.25 +++ openacs-4/packages/acs-core-docs/www/xml/install-guide/software.xml 9 Sep 2014 08:31:58 -0000 1.25.6.1 @@ -183,7 +183,7 @@ The OpenACS installation instructions assume the operating system and build environment are installed. - The instructions explain installation of TCL, Tcllib, tDOM, tclwebtest, a Web Server, a Database, a Process Controller, and + The instructions explain installation of Tcl, Tcllib, tDOM, tclwebtest, a Web Server, a Database, a Process Controller, and Source Control software. The following external links are for reference only. @@ -274,25 +274,25 @@ - <ulink url="http://www.tcl.tk/">TCL</ulink> 8.4.x + <ulink url="http://www.tcl.tk/">Tcl</ulink> 8.5.x - <ulink url="http://www.tcl.tk/">TCL</ulink> 8.4.x, REQUIRED - OpenACS is written in TCL, an interpreted - language. A threaded version of the TCL interpreter must be installed for - OpenACS to work. The TCL interpreter that is included in most standard + <ulink url="http://www.tcl.tk/">Tcl</ulink> 8.5.x, REQUIRED + OpenACS is written in Tcl, an interpreted + language. A threaded version of the Tcl interpreter must be installed for + OpenACS to work. The Tcl interpreter that is included in most standard distributions may not be thread safe. - <ulink url="http://www.tcl.tk/">TCL</ulink> 8.4.x development headers and libraries, OPTIONAL + <ulink url="http://www.tcl.tk/">Tcl</ulink> 8.5.x development headers and libraries, OPTIONAL The site-wide-search service, OpenFTS, requires these to compile. (Debian users: apt-get install - tcl8.4-dev). You need this + tcl8.5-dev). You need this to install OpenFTS. @@ -321,15 +321,15 @@ <ulink url="http://sourceforge.net/project/showfiles.php?group_id=31075">tclwebtest</ulink>, OPTIONAL - tclwebtest is a tool for testing web interfaces via tcl scripts. + tclwebtest is a tool for testing web interfaces via Tcl scripts. Web Server The web server handles incoming HTTP requests, provides - a runtime environment for OpenACS's tcl code, connects to the + a runtime environment for OpenACS's Tcl code, connects to the database, sends out HTTP responses, and logs requests and errors. OpenACS uses AOLserver; some people have had success running Apache with mod_nsd. @@ -444,7 +444,7 @@ <ulink url="http://unc.dl.sourceforge.net/sourceforge/openfts/Search-OpenFTS-tcl-0.3.2.tar.gz">OpenFTS - TCL 0.3.2</ulink>, OPTIONAL Adds + Tcl 0.3.2, OPTIONAL Adds full-text-search to PostgreSQL and includes a driver for AOLserver. You need this if you want users to be able to search for any text on your site. For postgres 7.4.x and Index: openacs-4/packages/acs-core-docs/www/xml/kernel/groups-design.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/kernel/groups-design.xml,v diff -u -r1.7 -r1.7.12.1 --- openacs-4/packages/acs-core-docs/www/xml/kernel/groups-design.xml 17 Jul 2006 05:38:38 -0000 1.7 +++ openacs-4/packages/acs-core-docs/www/xml/kernel/groups-design.xml 9 Sep 2014 08:31:59 -0000 1.7.12.1 @@ -23,7 +23,7 @@ Subsite administrator directory -TCL script directory +Tcl script directory Index: openacs-4/packages/acs-core-docs/www/xml/kernel/i18n-requirements.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/kernel/i18n-requirements.xml,v diff -u -r1.6 -r1.6.6.1 --- openacs-4/packages/acs-core-docs/www/xml/kernel/i18n-requirements.xml 12 Jul 2009 01:08:30 -0000 1.6 +++ openacs-4/packages/acs-core-docs/www/xml/kernel/i18n-requirements.xml 9 Sep 2014 08:31:59 -0000 1.6.6.1 @@ -1,803 +1,803 @@ - - -%myvars; -]> - - OpenACS Internationalization Requirements - - - by Henry Minsky, - Yon Feldman, - Lars Pind, - Peter Marklund, - Christian Hvid, - and others. - - - - Introduction - - - This document describes the requirements for functionality in - the OpenACS platform to support globalization of the core and optional - modules. The goal is to make it possible to support delivery of - applications which work properly in multiple locales with the - lowest development and maintenance cost. - - - - - Definitions - - - - internationalization (i18n) - - - The provision within a computer program of the - capability of making itself adaptable to the requirements of different - native languages, local customs and coded character sets. - - - - - - locale - - - The definition of the subset of a user's environment that depends on - language and cultural conventions. - - - - - - localization (L10n) - - - The process of establishing information within a computer system - specific to the operation of particular native languages, local - customs and coded character sets. - - - - - - globalization - - - A product development approach which ensures that software products - are usable in the worldwide markets through a combination of - internationalization and localization. - - - - - - - - - - Vision Statement - -The Mozilla project suggests keeping two catchy phrases in -mind when thinking about globalization: - - - -One code base for the world - - - -English is just another language - - - -Building an application often involves making a number of -assumptions on the part of the developers which depend on their own -culture. These include constant strings in the user interface and -system error messages, names of countries, cities, order of given -and family names for people, syntax of numeric and date strings and -collation order of strings. - -The OpenACS should be able to operate in languages and regions -beyond US English. The goal of OpenACS Globalization is to provide a -clean and efficient way to factor out the locale dependent -functionality from our applications, in order to be able to easily -swap in alternate localizations. - -This in turn will reduce redundant, costly, and error prone -rework when targeting the toolkit or applications built with the -toolkit to another locale. - -The cost of porting the OpenACS to another locale without some -kind of globalization support would be large and ongoing, since -without a mechanism to incorporate the locale-specific changes -cleanly back into the code base, it would require making a new fork -of the source code for each locale. - - - - - -System/Application Overview - -A globalized application will perform some or all of the -following steps to handle a page request for a specific -locale: - - - -Decide what the target locale is for an incoming page -request - - - -Decide which character set encoding the output should be -delivered in - - - -If a script file to handle the request needs to be loaded -from disk, determine if a character set conversion needs to be -performed when loading the script - - - -If needed, locale-specific resources are fetched. These can -include text, graphics, or other resources that would vary with the -target locale. - - - -If content data is fetched from the database, check for -locale-specific versions of the data (e.g. country names). - - - -Source code should use a message catalog API to translate -constant strings in the code to the target locale - - - -Perform locale-specific linguistic sorting on data if -needed - - - -If the user submitted form input data, decide what character -set encoding conversion if any is needed. Parse locale-specific -quantities if needed (number formats, date formats). - - - -If templating is being used, select correct locale-specific -template to merge with content - - - -Format output data quantities in locale-specific manner -(date, time, numeric, currency). If templating is being used, this -may be done either before and/or after merging the data with a -template. - - - -Since the internationalization APIs may potentially be used -on every page in an application, the overhead for adding -internationalization to a module or application must not cause a -significant time delay in handling page requests. - -In many cases there are facilities in Oracle to perform -various localization functions, and also there are facilities in -Java which we will want to move to. So the design to meet the -requirements will tend to rely on these capabilities, or close -approximations to them where possible, in order to make it easier -to maintain Tcl and Java OpenACS versions. - -Use-cases and User-scenarios - -Here are the cases that we need to be able to handle -efficiently: - - - -A developer needs to author a web site/application in a -language besides English, and possibly a character set besides -ISO-8859-1. This includes the operation of the OpenACS itself, i.e., -navigation, admin pages for modules, error messages, as well as -additional modules or content supplied by the web site -developer. - -What do they need to modify to make this work? Can their -localization work be easily folded in to future releases of -OpenACS? - - - -A developer needs to author a web site which operates in -multiple languages simultaneously. For example, www.un.org with -content and navigation in multiple languages. - -The site would have an end-user visible UI to support these -languages, and the content management system must allow articles to -be posted in these languages. In some cases it may be necessary to -make the modules' admin UI's operate in more than one -supported language, while in other cases the backend admin -interface can operate in a single language. - - - -A developer is writing a new module, and wants to make it -easy for someone to localize it. There should be a clear path to -author the module so that future developers can easily add support -for other locales. This would include support for creating -resources such as message catalogs, non-text assets such as -graphics, and use of templates which help to separate application -logic from presentation. - - - -Competitive -Analysis - -Other application servers: ATG Dyanmo, Broadvision, Vignette, -... ? Anyone know how they deal with i18n ? - -Related -Links - - - -System/Package "coversheet" - where all -documentation for this software is linked off of - - - - Design document - - - - Developer's guide - - - - User's guide - - - - Other-cool-system-related-to-this-one -document -LI18NUX -2000 Globalization Specification: -http://www.li18nux.net/ - -Mozilla -i18N Guidelines: -http://www.mozilla.org/docs/refList/i18n/l12yGuidelines.html - -ISO -639:1988 Code for the representation of names of languages -http://sunsite.berkeley.edu/amher/iso_639.html - -ISO 3166-1:1997 -Codes for the representation of names of countries and their -subdivisions Part 1: Country codes -http://www.niso.org/3166.html - -IANA -Registry of Character Sets - - - -Test plan - - - -Competitive system(s) - - - -Requirements - -Because the requirements for globalization affect many areas -of the system, we will break up the requirements into phases, with -a base required set of features, and then stages of increasing -functionality. - -Locales - -10.0 -A standard representation of locale will be used throughout -the system. A locale refers to a language and territory, and is -uniquely identified by a combination of ISO language and ISO -country abbreviations. - -

        -See -Content -Repository Requirement 100.20 - -10.10 Provide a consistent -representation and API for creating and referencing a locale - -10.20 There will be a Tcl library of -locale-aware formatting and parsing functions for numbers, dates -and times. Note that Java has builtin support for these -already. - -10.30 For each locale there will be -default date, number and currency formats. Currency i18n is -NOT IMPLEMENTED for 5.0.0. - - 10.40Administrators can upgrade their -servers to use new locales via the APM. NOT IMPLEMENTED in -5.0.0; current workaround is to get an xml file and load it -manually. - - -
        - -Associating a Locale with a Request - -20.0 -The request processor must have a mechanism for associating a -locale with each request. This locale is then used to select the -appropriate template for a request, and will also be passed as the -locale argument to the message catalog or locale-specific -formatting functions. - -
        -20.10 The locale for a request should be -computed by the following method, in descending order of -priority: - - - -get locale associated with subsite or package id - - - -get locale from user preference - - - -get locale from site wide default - -20.20 An API will be provided for -getting the current request locale from the -ad_conn structure. - - -
        - -
        - -Resource Bundles / Content Repository - -30.0 -A mechanism must be provided for a developer to group a set -of arbitrary content resources together, keyed by a unique -identifier and a locale. - -For example, what approaches could be used to implement a -localizable nav-bar mechanism for a site? A navigation bar might be -made up of a set of text strings and graphics, where the graphics -themselves are locale-specific, such as images of English or -Japanese text (as on www.un.org). It should be easy to -specify alternate configurations of text and graphics to lay out -the page for different locales. - -Design note: Alternative mechanisms to implement this -functionality might include using templates, Java ResourceBundles, -content-item containers in the Content Repository, or some -convention assigning a common prefix to key strings in the message -catalog. - -Message Catalog for String Translation - -40.0 -A message catalog facility will provide a database of -translations for constant strings for multilingual applications. It -must support the following: - -
        -40.10 Each message will referenced via -unique a key. - -40.20 The key for a message will have -some hierarchical structure to it, so that sets of messages can be -grouped with respect to a module name or package path. - -40.30 The API for lookup of a message -will take a locale and message key as arguments, and return the -appropriate translation of that message for the specifed -locale. - -40.40 The API for lookup of a message -will accept an optional default string which can be used if the -message key is not found in the catalog. This lets the developer -get code working and tested in a single language before having to -initialize or update a message catalog. - -40.50 For use within templates, custom -tags which invoke the message lookup API will be provided. - -40.60 Provide a method for importing and -exporting a flat file of translation strings, in order to make it -as easy as possible to create and modify message translations in -bulk without having to use a web interface. - -40.70 Since translations may be in -different character sets, there must be provision for writing and -reading catalog files in different character sets. A mechanism must -exist for identifying the character set of a catalog file before -reading it. - -40.80 There should be a mechanism for -tracking dependencies in the message catalog, so that if a string -is modified, the other translations of that string can be flagged -as needing update. - -40.90 The message lookup must be as -efficient as possible so as not to slow down the delivery of -pages. - -
        - -
        Character Set Encoding - -Character Sets -50.0 A locale will have a primary -associated character set which is used to encode text in the -language. When given a locale, we can query the system for the -associated character set to use. - -The assumption is that we are going to use Unicode in our -database to hold all text data. Our current programming -environments (Tcl/Oracle or Java/Oracle) operate on Unicode data -internally. However, since Unicode is not yet commonly used in -browsers and authoring tools, the system must be able to read and -write other character sets. In particular, conversions to and from -Unicode will need to be explicitly performed at the following -times: - - - -Loading source files (.tcl or .adp) or content files from the -filesystem - - - -Accepting form input data from users - - - -Delivering text output to a browser - - - -Composing an email message - - - -Writing data to the filesystem - - -Acs-templating does the following. - - - When the acs-templating package opens an an ADP or TCL file, it assumes the file is iso-8859-1. If the output charset (OutputCharset) in the AOLserver config file is set, then acs-templating assumes it's that charset. -Writing Files - - - When the acs-templating package writes an an ADP or - TCL file, it assumes the file is iso-8859-1. If the output - charset (OutputCharset) in the AOLserver config file is set, - then acs-templating assumes it's that charset. - - - - - Tcl Source File Character Set -
        - - There are two classes of Tcl files loaded by the system; - library files loaded at server startup, and page script files, - which are run on each page request. - - Should we require all Tcl files be stored as UTF8? - That seems too much of a burden on developers. - - 50.10 Tcl library files can be authored - in any character set. The system must have a way to determine the - character set before loading the files, probably from the - filename. - - 50.20 Tcl page script files can be - authored in any character set. The system must have a way to - determine the character set before loading the files, probably from - the filename. -
        -
        - - - Submitted Form Data Character Set - - 50.30 Data which is submitted with a - HTTP request using a GET or POST method may be in any character - set. The system must be able to determine the encoding of the form - data and convert it to Unicode on demand. - - 50.35 The developer must be able to - override the default system choice of character set when parsing - and validating user form data. INCOMPLETE - form - widgets in acs-templating/tcl/date-procs.tcl are not - internationalized. Also, acs-templating's UI needs to be - internationalized by replacing all user-visible strings with - message keys. - - - 50.30.10In Japan and some - other Asian languages where there are multiple character set - encodings in common use, the server may need to attempt to do an - auto-detection of the character set, because buggy browsers may - submit form data in an unexpected alternate encoding. - - - - Output Character Set - -
        - 50.40 The output character set for a - page request will be determined by default by the locale associated - with the request (see requirement 20.0). - - 50.50 It must be possible for a - developer to manually override the output character set encoding - for a request using an API function. - - -
        - -
        -
        - -ACS Kernel Issues - -
        -60.10 All OpenACS error messages must use -the message catalog and the request locale to generate error -message for the appropriate locale.NOT IMPLEMENTED for 5.0.0. - -60.20 Web server error messages such as -404, 500, etc must also be delivered in the appropriate -locale. - -60.30 Where files are written or read -from disk, their filenames must use a character set and character -values which are safe for the underlying operating system. -
        - -
        Templates - -
        -70.0 For a given abstract URL, the -designer may create multiple locale-specific template files may be -created (one per locale or language) - -70.10 For a given page request, the -system must be able to select an approprate locale-specific -template file to use. The request locale is computed as per (see -requirement 20.0). - -70.20A template file may be created for -a partial locale (language only, without a territory), and the -request processor should be able to find the closest match for the -current request locale. - -70.30 A template file may be created in -any character set. The system must have a way to know which -character set a template file contains, so it can properly process -it. -
        -Formatting -Datasource Output in Templates - -70.50 The properties of a datasource -column may include a datatype so that the templating system can -format the output for the current locale. The datatype is defined -by a standard OpenACS datatype plus a format token or format string, -for example: a date column might be specified as -'current_date:date LONG,' or 'current_date:date -"YYYY-Mon-DD"' - -Forms - -
        -70.60 The forms API must support -construction of locale-specific HTML form widgets, such as date -entry widgets, and form validation of user input data for -locale-specific data, such as dates or numbers. NOT -IMPLEMENTED in 5.0.0. - -70.70 For forms which allow users to -upload files, a standard method for a user to indicate the charset -of a text file being uploaded must be provided. - -Design note: this presumably applies to uploading -data to the content repository as well -
        - -
        Sorting and Searching - -
        -80.10 Support API for correct collation -(sorting order) on lists of strings in locale-dependent way. - -80.20 For the Tcl API, we will say that -locale-dependent sorting will use Oracle SQL operations (i.e., we -won't provide a Tcl API for this). We require a Tcl API -function to return the correct incantation of NLS_SORT to use for a -given locale with ORDER BY clauses in -queries. - -80.40 The system must handle full-text -search in any supported language. -
        - -
        Time Zones - -
        -90.10 Provide API support for specifying -a time zone - -90.20 Provide an API for computing time -and date operations which are aware of timezones. So for example a -calendar module can properly synchronize items inserted into a -calendar from users in different time zones using their own local -times. - -90.30 Store all dates and times in -universal time zone, UTC. - -90.40 For a registered users, a time -zone preference should be stored. - -90.50 For a non-registered user a time -zone preference should be attached via a session or else UTC should -be used to display every date and time. - -90.60 The default if we can't -determine a time zone is to display all dates and times in some -universal time zone such as GMT. -
        - -
        Database - -
        -100.10 Since UTF8 strings can use up to -three (UCS2) or six (UCS4) bytes per character, make sure that -column size declarations in the schema are large enough to -accomodate required data (such as email addresses in -Japanese). Since 5.0.0, this is covered in the database -install instructions for both PostgreSQL and Oracle. -
        - -
        - - - - Email and Messaging - - When sending an email message, just as when delivering the - content in web page over an HTTP connection, it is necessary to be - able to specify what character set encoding to use, defaulting to UTF-8. - -
        - 110.10 The email message sending API - will allow for a character set encoding to be specified. - - 110.20 The email accepting API - allows for character set to be parsed correctly (the message has a MIME - character set content type header) -
        - - Mail is not internationalized. The following issues must be addressed. - - - - Many functions still call ns_sendmail. This - means that there are different end points for sending - mail. This should be changed to use the acs-mail-lite API instead. - - - - - Consumers of email services must do - the following: Determine the appropriate language or - languages to use for the message subject and message body - and localize them (as in notifications). - - - - Extreme Use case: Web site has a default language of Danish. A forum is set up for Swedes, so the forum has a package_id and a language setting of Swedish. A poster posts to the forum in Russian (is this possible?). A user is subscribed to the forum and has a language preference of Chinese. What should be in the message body and message subject? - - Incoming mail should be localized. - - - - - - -
        - - Implementation Notes - - Because globalization touches many different parts of the system, - we want to reduce the implementation risk by breaking the - implementation into phases. - - - - - Revision History - - - - - - Document Revision # - Action Taken, Notes - When? - By Whom? - - - - 1 - Updated with results of MIT-sponsored i18n work at Collaboraid. - 14 Aug 2003 - Joel Aufrecht - - - - 0.4 - converting from HTML to DocBook and importing the document to the OpenACS - kernel documents. This was done as a part of the internationalization of - OpenACS and .LRN for the Heidelberg University in Germany - 12 September 2002 - Peter Marklund - - - - 0.3 - comments from Christian - 1/14/2000 - Henry Minsky - - - - 0.2 - Minor typos fixed, clarifications to wording - 11/14/2000 - Henry Minsky - - - - 0.1 - Creation - 11/08/2000 - Henry Minsky - - - - - - - - - - - + + +%myvars; +]> + + OpenACS Internationalization Requirements + + + by Henry Minsky, + Yon Feldman, + Lars Pind, + Peter Marklund, + Christian Hvid, + and others. + + + + Introduction + + + This document describes the requirements for functionality in + the OpenACS platform to support globalization of the core and optional + modules. The goal is to make it possible to support delivery of + applications which work properly in multiple locales with the + lowest development and maintenance cost. + + + + + Definitions + + + + internationalization (i18n) + + + The provision within a computer program of the + capability of making itself adaptable to the requirements of different + native languages, local customs and coded character sets. + + + + + + locale + + + The definition of the subset of a user's environment that depends on + language and cultural conventions. + + + + + + localization (L10n) + + + The process of establishing information within a computer system + specific to the operation of particular native languages, local + customs and coded character sets. + + + + + + globalization + + + A product development approach which ensures that software products + are usable in the worldwide markets through a combination of + internationalization and localization. + + + + + + + + + + Vision Statement + +The Mozilla project suggests keeping two catchy phrases in +mind when thinking about globalization: + + + +One code base for the world + + + +English is just another language + + + +Building an application often involves making a number of +assumptions on the part of the developers which depend on their own +culture. These include constant strings in the user interface and +system error messages, names of countries, cities, order of given +and family names for people, syntax of numeric and date strings and +collation order of strings. + +The OpenACS should be able to operate in languages and regions +beyond US English. The goal of OpenACS Globalization is to provide a +clean and efficient way to factor out the locale dependent +functionality from our applications, in order to be able to easily +swap in alternate localizations. + +This in turn will reduce redundant, costly, and error prone +rework when targeting the toolkit or applications built with the +toolkit to another locale. + +The cost of porting the OpenACS to another locale without some +kind of globalization support would be large and ongoing, since +without a mechanism to incorporate the locale-specific changes +cleanly back into the code base, it would require making a new fork +of the source code for each locale. + + + + + +System/Application Overview + +A globalized application will perform some or all of the +following steps to handle a page request for a specific +locale: + + + +Decide what the target locale is for an incoming page +request + + + +Decide which character set encoding the output should be +delivered in + + + +If a script file to handle the request needs to be loaded +from disk, determine if a character set conversion needs to be +performed when loading the script + + + +If needed, locale-specific resources are fetched. These can +include text, graphics, or other resources that would vary with the +target locale. + + + +If content data is fetched from the database, check for +locale-specific versions of the data (e.g. country names). + + + +Source code should use a message catalog API to translate +constant strings in the code to the target locale + + + +Perform locale-specific linguistic sorting on data if +needed + + + +If the user submitted form input data, decide what character +set encoding conversion if any is needed. Parse locale-specific +quantities if needed (number formats, date formats). + + + +If templating is being used, select correct locale-specific +template to merge with content + + + +Format output data quantities in locale-specific manner +(date, time, numeric, currency). If templating is being used, this +may be done either before and/or after merging the data with a +template. + + + +Since the internationalization APIs may potentially be used +on every page in an application, the overhead for adding +internationalization to a module or application must not cause a +significant time delay in handling page requests. + +In many cases there are facilities in Oracle to perform +various localization functions, and also there are facilities in +Java which we will want to move to. So the design to meet the +requirements will tend to rely on these capabilities, or close +approximations to them where possible, in order to make it easier +to maintain Tcl and Java OpenACS versions. + +Use-cases and User-scenarios + +Here are the cases that we need to be able to handle +efficiently: + + + +A developer needs to author a web site/application in a +language besides English, and possibly a character set besides +ISO-8859-1. This includes the operation of the OpenACS itself, i.e., +navigation, admin pages for modules, error messages, as well as +additional modules or content supplied by the web site +developer. + +What do they need to modify to make this work? Can their +localization work be easily folded in to future releases of +OpenACS? + + + +A developer needs to author a web site which operates in +multiple languages simultaneously. For example, www.un.org with +content and navigation in multiple languages. + +The site would have an end-user visible UI to support these +languages, and the content management system must allow articles to +be posted in these languages. In some cases it may be necessary to +make the modules' admin UI's operate in more than one +supported language, while in other cases the backend admin +interface can operate in a single language. + + + +A developer is writing a new module, and wants to make it +easy for someone to localize it. There should be a clear path to +author the module so that future developers can easily add support +for other locales. This would include support for creating +resources such as message catalogs, non-text assets such as +graphics, and use of templates which help to separate application +logic from presentation. + + + +Competitive +Analysis + +Other application servers: ATG Dyanmo, Broadvision, Vignette, +... ? Anyone know how they deal with i18n ? + +Related +Links + + + +System/Package "coversheet" - where all +documentation for this software is linked off of + + + + Design document + + + + Developer's guide + + + + User's guide + + + + Other-cool-system-related-to-this-one +document +LI18NUX +2000 Globalization Specification: +http://www.li18nux.net/ + +Mozilla +i18N Guidelines: +http://www.mozilla.org/docs/refList/i18n/l12yGuidelines.html + +ISO +639:1988 Code for the representation of names of languages +http://sunsite.berkeley.edu/amher/iso_639.html + +ISO 3166-1:1997 +Codes for the representation of names of countries and their +subdivisions Part 1: Country codes +http://www.niso.org/3166.html + +IANA +Registry of Character Sets + + + +Test plan + + + +Competitive system(s) + + + +Requirements + +Because the requirements for globalization affect many areas +of the system, we will break up the requirements into phases, with +a base required set of features, and then stages of increasing +functionality. + +Locales + +10.0 +A standard representation of locale will be used throughout +the system. A locale refers to a language and territory, and is +uniquely identified by a combination of ISO language and ISO +country abbreviations. + +
        +See +Content +Repository Requirement 100.20 + +10.10 Provide a consistent +representation and API for creating and referencing a locale + +10.20 There will be a Tcl library of +locale-aware formatting and parsing functions for numbers, dates +and times. Note that Java has builtin support for these +already. + +10.30 For each locale there will be +default date, number and currency formats. Currency i18n is +NOT IMPLEMENTED for 5.0.0. + + 10.40Administrators can upgrade their +servers to use new locales via the APM. NOT IMPLEMENTED in +5.0.0; current workaround is to get an xml file and load it +manually. + + +
        + +
        Associating a Locale with a Request + +20.0 +The request processor must have a mechanism for associating a +locale with each request. This locale is then used to select the +appropriate template for a request, and will also be passed as the +locale argument to the message catalog or locale-specific +formatting functions. + +
        +20.10 The locale for a request should be +computed by the following method, in descending order of +priority: + + + +get locale associated with subsite or package id + + + +get locale from user preference + + + +get locale from site wide default + +20.20 An API will be provided for +getting the current request locale from the +ad_conn structure. + + +
        + +
        + +Resource Bundles / Content Repository + +30.0 +A mechanism must be provided for a developer to group a set +of arbitrary content resources together, keyed by a unique +identifier and a locale. + +For example, what approaches could be used to implement a +localizable nav-bar mechanism for a site? A navigation bar might be +made up of a set of text strings and graphics, where the graphics +themselves are locale-specific, such as images of English or +Japanese text (as on www.un.org). It should be easy to +specify alternate configurations of text and graphics to lay out +the page for different locales. + +Design note: Alternative mechanisms to implement this +functionality might include using templates, Java ResourceBundles, +content-item containers in the Content Repository, or some +convention assigning a common prefix to key strings in the message +catalog. + +Message Catalog for String Translation + +40.0 +A message catalog facility will provide a database of +translations for constant strings for multilingual applications. It +must support the following: + +
        +40.10 Each message will referenced via +unique a key. + +40.20 The key for a message will have +some hierarchical structure to it, so that sets of messages can be +grouped with respect to a module name or package path. + +40.30 The API for lookup of a message +will take a locale and message key as arguments, and return the +appropriate translation of that message for the specifed +locale. + +40.40 The API for lookup of a message +will accept an optional default string which can be used if the +message key is not found in the catalog. This lets the developer +get code working and tested in a single language before having to +initialize or update a message catalog. + +40.50 For use within templates, custom +tags which invoke the message lookup API will be provided. + +40.60 Provide a method for importing and +exporting a flat file of translation strings, in order to make it +as easy as possible to create and modify message translations in +bulk without having to use a web interface. + +40.70 Since translations may be in +different character sets, there must be provision for writing and +reading catalog files in different character sets. A mechanism must +exist for identifying the character set of a catalog file before +reading it. + +40.80 There should be a mechanism for +tracking dependencies in the message catalog, so that if a string +is modified, the other translations of that string can be flagged +as needing update. + +40.90 The message lookup must be as +efficient as possible so as not to slow down the delivery of +pages. + +
        + +
        Character Set Encoding + +Character Sets +50.0 A locale will have a primary +associated character set which is used to encode text in the +language. When given a locale, we can query the system for the +associated character set to use. + +The assumption is that we are going to use Unicode in our +database to hold all text data. Our current programming +environments (Tcl/Oracle or Java/Oracle) operate on Unicode data +internally. However, since Unicode is not yet commonly used in +browsers and authoring tools, the system must be able to read and +write other character sets. In particular, conversions to and from +Unicode will need to be explicitly performed at the following +times: + + + +Loading source files (.tcl or .adp) or content files from the +filesystem + + + +Accepting form input data from users + + + +Delivering text output to a browser + + + +Composing an email message + + + +Writing data to the filesystem + + +Acs-templating does the following. + + + When the acs-templating package opens an an ADP or Tcl file, it assumes the file is iso-8859-1. If the output charset (OutputCharset) in the AOLserver config file is set, then acs-templating assumes it's that charset. +Writing Files + + + When the acs-templating package writes an an ADP or + Tcl file, it assumes the file is iso-8859-1. If the output + charset (OutputCharset) in the AOLserver config file is set, + then acs-templating assumes it's that charset. + + + + + Tcl Source File Character Set +
        + + There are two classes of Tcl files loaded by the system; + library files loaded at server startup, and page script files, + which are run on each page request. + + Should we require all Tcl files be stored as UTF8? + That seems too much of a burden on developers. + + 50.10 Tcl library files can be authored + in any character set. The system must have a way to determine the + character set before loading the files, probably from the + filename. + + 50.20 Tcl page script files can be + authored in any character set. The system must have a way to + determine the character set before loading the files, probably from + the filename. +
        +
        + + + Submitted Form Data Character Set + + 50.30 Data which is submitted with a + HTTP request using a GET or POST method may be in any character + set. The system must be able to determine the encoding of the form + data and convert it to Unicode on demand. + + 50.35 The developer must be able to + override the default system choice of character set when parsing + and validating user form data. INCOMPLETE - form + widgets in acs-templating/tcl/date-procs.tcl are not + internationalized. Also, acs-templating's UI needs to be + internationalized by replacing all user-visible strings with + message keys. + + + 50.30.10In Japan and some + other Asian languages where there are multiple character set + encodings in common use, the server may need to attempt to do an + auto-detection of the character set, because buggy browsers may + submit form data in an unexpected alternate encoding. + + + + Output Character Set + +
        + 50.40 The output character set for a + page request will be determined by default by the locale associated + with the request (see requirement 20.0). + + 50.50 It must be possible for a + developer to manually override the output character set encoding + for a request using an API function. + + +
        + +
        +
        + +ACS Kernel Issues + +
        +60.10 All OpenACS error messages must use +the message catalog and the request locale to generate error +message for the appropriate locale.NOT IMPLEMENTED for 5.0.0. + +60.20 Web server error messages such as +404, 500, etc must also be delivered in the appropriate +locale. + +60.30 Where files are written or read +from disk, their filenames must use a character set and character +values which are safe for the underlying operating system. +
        + +
        Templates + +
        +70.0 For a given abstract URL, the +designer may create multiple locale-specific template files may be +created (one per locale or language) + +70.10 For a given page request, the +system must be able to select an approprate locale-specific +template file to use. The request locale is computed as per (see +requirement 20.0). + +70.20A template file may be created for +a partial locale (language only, without a territory), and the +request processor should be able to find the closest match for the +current request locale. + +70.30 A template file may be created in +any character set. The system must have a way to know which +character set a template file contains, so it can properly process +it. +
        +Formatting +Datasource Output in Templates + +70.50 The properties of a datasource +column may include a datatype so that the templating system can +format the output for the current locale. The datatype is defined +by a standard OpenACS datatype plus a format token or format string, +for example: a date column might be specified as +'current_date:date LONG,' or 'current_date:date +"YYYY-Mon-DD"' + +Forms + +
        +70.60 The forms API must support +construction of locale-specific HTML form widgets, such as date +entry widgets, and form validation of user input data for +locale-specific data, such as dates or numbers. NOT +IMPLEMENTED in 5.0.0. + +70.70 For forms which allow users to +upload files, a standard method for a user to indicate the charset +of a text file being uploaded must be provided. + +Design note: this presumably applies to uploading +data to the content repository as well +
        + +
        Sorting and Searching + +
        +80.10 Support API for correct collation +(sorting order) on lists of strings in locale-dependent way. + +80.20 For the Tcl API, we will say that +locale-dependent sorting will use Oracle SQL operations (i.e., we +won't provide a Tcl API for this). We require a Tcl API +function to return the correct incantation of NLS_SORT to use for a +given locale with ORDER BY clauses in +queries. + +80.40 The system must handle full-text +search in any supported language. +
        + +
        Time Zones + +
        +90.10 Provide API support for specifying +a time zone + +90.20 Provide an API for computing time +and date operations which are aware of timezones. So for example a +calendar module can properly synchronize items inserted into a +calendar from users in different time zones using their own local +times. + +90.30 Store all dates and times in +universal time zone, UTC. + +90.40 For a registered users, a time +zone preference should be stored. + +90.50 For a non-registered user a time +zone preference should be attached via a session or else UTC should +be used to display every date and time. + +90.60 The default if we can't +determine a time zone is to display all dates and times in some +universal time zone such as GMT. +
        + +
        Database + +
        +100.10 Since UTF8 strings can use up to +three (UCS2) or six (UCS4) bytes per character, make sure that +column size declarations in the schema are large enough to +accomodate required data (such as email addresses in +Japanese). Since 5.0.0, this is covered in the database +install instructions for both PostgreSQL and Oracle. +
        + +
        + + + + Email and Messaging + + When sending an email message, just as when delivering the + content in web page over an HTTP connection, it is necessary to be + able to specify what character set encoding to use, defaulting to UTF-8. + +
        + 110.10 The email message sending API + will allow for a character set encoding to be specified. + + 110.20 The email accepting API + allows for character set to be parsed correctly (the message has a MIME + character set content type header) +
        + + Mail is not internationalized. The following issues must be addressed. + + + + Many functions still call ns_sendmail. This + means that there are different end points for sending + mail. This should be changed to use the acs-mail-lite API instead. + + + + + Consumers of email services must do + the following: Determine the appropriate language or + languages to use for the message subject and message body + and localize them (as in notifications). + + + + Extreme Use case: Web site has a default language of Danish. A forum is set up for Swedes, so the forum has a package_id and a language setting of Swedish. A poster posts to the forum in Russian (is this possible?). A user is subscribed to the forum and has a language preference of Chinese. What should be in the message body and message subject? + + Incoming mail should be localized. + + + + + + +
        + + Implementation Notes + + Because globalization touches many different parts of the system, + we want to reduce the implementation risk by breaking the + implementation into phases. + + + + + Revision History + + + + + + Document Revision # + Action Taken, Notes + When? + By Whom? + + + + 1 + Updated with results of MIT-sponsored i18n work at Collaboraid. + 14 Aug 2003 + Joel Aufrecht + + + + 0.4 + converting from HTML to DocBook and importing the document to the OpenACS + kernel documents. This was done as a part of the internationalization of + OpenACS and .LRN for the Heidelberg University in Germany + 12 September 2002 + Peter Marklund + + + + 0.3 + comments from Christian + 1/14/2000 + Henry Minsky + + + + 0.2 + Minor typos fixed, clarifications to wording + 11/14/2000 + Henry Minsky + + + + 0.1 + Creation + 11/08/2000 + Henry Minsky + + + + + + + + +
        + + Index: openacs-4/packages/acs-datetime/tcl/acs-datetime-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-datetime/tcl/acs-datetime-procs.tcl,v diff -u -r1.12.14.5 -r1.12.14.6 --- openacs-4/packages/acs-datetime/tcl/acs-datetime-procs.tcl 6 Sep 2014 19:24:39 -0000 1.12.14.5 +++ openacs-4/packages/acs-datetime/tcl/acs-datetime-procs.tcl 9 Sep 2014 08:31:59 -0000 1.12.14.6 @@ -548,7 +548,7 @@ string } { Returns a string w/ leading zeros trimmed. - Used to get around TCL interpreter problems w/ thinking leading + Used to get around Tcl interpreter problems w/ thinking leading zeros are octal. We could just use validate_integer, but it runs one extra regexp that we don't need to run. } { Index: openacs-4/packages/acs-lang/tcl/lang-util-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-lang/tcl/lang-util-procs.tcl,v diff -u -r1.47.2.4 -r1.47.2.5 --- openacs-4/packages/acs-lang/tcl/lang-util-procs.tcl 13 Aug 2014 08:03:34 -0000 1.47.2.4 +++ openacs-4/packages/acs-lang/tcl/lang-util-procs.tcl 9 Sep 2014 08:31:59 -0000 1.47.2.5 @@ -67,7 +67,7 @@ ad_proc lang::util::message_tag_regexp {} { The regexp expression used by proc get_temporary_tags_indices and elsewhere - to extract temporary message catalog tags (<#...#>) from adp and tcl files. + to extract temporary message catalog tags (<#...#>) from ADP and Tcl files. The first sub match of the expression is the whole tag, the second sub match is the message key, and the third sub match is the message text in en_US locale. @@ -91,7 +91,7 @@ Returns a list of two element lists containing the start and end indices of what is captured by the first parenthesis in the given regexp pattern in the multilingual string. The - regexp pattern must follow the syntax of the expression argument to the TCL regexp command. + regexp pattern must follow the syntax of the expression argument to the Tcl regexp command. It must also contain exactly one capturing parenthesis for the pieces of text that indices are to be returned for. Index: openacs-4/packages/acs-subsite/tcl/group-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/tcl/group-procs.tcl,v diff -u -r1.38.2.3 -r1.38.2.4 --- openacs-4/packages/acs-subsite/tcl/group-procs.tcl 23 Jul 2014 21:27:53 -0000 1.38.2.3 +++ openacs-4/packages/acs-subsite/tcl/group-procs.tcl 9 Sep 2014 08:31:59 -0000 1.38.2.4 @@ -30,21 +30,21 @@

        There are now several ways to create a group of a given - type. You can use this TCL API with or without a form from the form + type. You can use this Tcl API with or without a form from the form system, or you can directly use the PL/SQL API for the group type.

        Examples:

         
        -    # OPTION 1: Create the group using the TCL Procedure. Useful if the
        +    # OPTION 1: Create the group using the Tcl Procedure. Useful if the
             # only attribute you need to specify is the group name
             
             db_transaction {
                 set group_id [group::new -group_name "Author" $group_type]
             }
             
             
        -    # OPTION 2: Create the group using the TCL API with a templating
        +    # OPTION 2: Create the group using the Tcl API with a templating
             # form. Useful when there are multiple attributes to specify for the
             # group
             
        Index: openacs-4/packages/acs-subsite/tcl/party-procs.tcl
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/tcl/Attic/party-procs.tcl,v
        diff -u -r1.8.4.1 -r1.8.4.2
        --- openacs-4/packages/acs-subsite/tcl/party-procs.tcl	6 Sep 2013 12:06:49 -0000	1.8.4.1
        +++ openacs-4/packages/acs-subsite/tcl/party-procs.tcl	9 Sep 2014 08:31:59 -0000	1.8.4.2
        @@ -45,21 +45,21 @@
         	
         	

        There are now several ways to create a party of a given - type. You can use this TCL API with or without a form from the form + type. You can use this Tcl API with or without a form from the form system, or you can directly use the PL/SQL API for the party type.

        Examples:

         
        -	# OPTION 1: Create the party using the TCL Procedure. Useful if the
        +	# OPTION 1: Create the party using the Tcl Procedure. Useful if the
         	# only attribute you need to specify is the party name
         	
         	db_transaction {
         	    set party_id [party::new -email "joe@foo.com" $party_type]
         	}
         	
         	
        -	# OPTION 2: Create the party using the TCL API with a templating
        +	# OPTION 2: Create the party using the Tcl API with a templating
         	# form. Useful when there are multiple attributes to specify for the
         	# party
         	
        Index: openacs-4/packages/acs-subsite/tcl/subsite-procs.tcl
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/tcl/subsite-procs.tcl,v
        diff -u -r1.43.8.3 -r1.43.8.4
        --- openacs-4/packages/acs-subsite/tcl/subsite-procs.tcl	8 Sep 2014 07:14:22 -0000	1.43.8.3
        +++ openacs-4/packages/acs-subsite/tcl/subsite-procs.tcl	9 Sep 2014 08:31:59 -0000	1.43.8.4
        @@ -19,7 +19,7 @@
             {-package_id:required}
             {-node_id:required}
         } {
        -    This is the TCL proc that is called automatically by the APM
        +    This is the Tcl proc that is called automatically by the APM
             whenever a new instance of the subsites application is mounted.
         
             @author Don Baccus (dhogaza@pacifier.com)
        Index: openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.html
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.html,v
        diff -u -r1.2 -r1.2.28.1
        --- openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.html	11 Aug 2001 21:31:03 -0000	1.2
        +++ openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.html	9 Sep 2014 08:32:00 -0000	1.2.28.1
        @@ -106,7 +106,7 @@
         
         To allow administrators to create dynamic object types (e.g. subtypes
         of the object types group, membership_rel,
        -and composition_rel), we provide a TCL library of
        +and composition_rel), we provide a Tcl library of
         procedure that generate PL/SQL packages. For each dynamically created
         object type, we:
         
        Index: openacs-4/packages/acs-tcl/tcl/apm-procs.tcl
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/apm-procs.tcl,v
        diff -u -r1.94.2.23 -r1.94.2.24
        --- openacs-4/packages/acs-tcl/tcl/apm-procs.tcl	6 Sep 2014 19:17:05 -0000	1.94.2.23
        +++ openacs-4/packages/acs-tcl/tcl/apm-procs.tcl	9 Sep 2014 08:32:00 -0000	1.94.2.24
        @@ -409,7 +409,7 @@
             Examines all tcl_procs files in package version $version_id; if any have
             changed since they were loaded, marks (in the apm_reload array) that
             they must be reloaded by each Tcl interpreter (using the
        -                                                   apm_load_any_changed_libraries procedure).
        +    apm_load_any_changed_libraries procedure).
             
             

        Saves a list of files that have changed (and thus marked to be reloaded) in the variable named $file_info_var, if provided. Each element @@ -1383,17 +1383,17 @@ ad_proc -private apm_post_instantiation_tcl_proc_from_key { package_key } { - Generates the name of the TCL procedure we execute for + Generates the name of the Tcl procedure we execute for post-instantiation. @author Michael Bryzek (mbryzek@arsdigita.com) @creation-date 2001-03-05 - @return The name of a tcl procedure, if it exists, or empty string - if no such tcl procedure was found. + @return The name of a Tcl procedure, if it exists, or empty string + if no such Tcl procedure was found. } { set procedure_name [string tolower "[string trim $package_key]_post_instantiation"] - # Change all "-" to "_" to mimic our tcl standards + # Change all "-" to "_" to mimic our Tcl standards regsub -all {\-} $procedure_name "_" procedure_name if { [info commands ::$procedure_name] eq "" } { # No such procedure exists... @@ -1945,7 +1945,7 @@

      2. data_model_ora - Oracle datamodel files
      3. include_page - ADP files in package_key/lib
      4. content_page - ADP files in package_key/www
      5. -
      6. tcl_procs - TCL procs in package_key/tcl
      7. +
      8. tcl_procs - Tcl procs in package_key/tcl
      9. test_procs - automated tests in package_key/tcl/test
      10. documentation - docs in package_key/www/doc
    Index: openacs-4/packages/acs-tcl/tcl/request-processor-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/request-processor-procs.tcl,v diff -u -r1.113.2.28 -r1.113.2.29 --- openacs-4/packages/acs-tcl/tcl/request-processor-procs.tcl 25 Aug 2014 09:29:03 -0000 1.113.2.28 +++ openacs-4/packages/acs-tcl/tcl/request-processor-procs.tcl 9 Sep 2014 08:32:00 -0000 1.113.2.29 @@ -145,7 +145,7 @@ } # -# GN: maybe this function was useful for ancient versions of tcl, but +# GN: maybe this function was useful for ancient versions of Tcl, but # unless i oversee something, it does not make any sense. The comment # argues, that "return -code ..." ignores the error code, but then the # function uses "return -code ..." to fix this... Index: openacs-4/packages/acs-tcl/tcl/security-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/security-procs.tcl,v diff -u -r1.74.2.19 -r1.74.2.20 --- openacs-4/packages/acs-tcl/tcl/security-procs.tcl 26 Aug 2014 13:25:47 -0000 1.74.2.19 +++ openacs-4/packages/acs-tcl/tcl/security-procs.tcl 9 Sep 2014 08:32:00 -0000 1.74.2.20 @@ -1096,14 +1096,14 @@ } { Returns the token corresponding to the token_id. This first checks - the thread-persistent TCL cache, then checks the server + the thread-persistent Tcl cache, then checks the server size-limited cache before finally hitting the db in the worst case if the secret_token value is not in either cache. The procedure also updates the caches. Cache eviction is handled by the ns_cache API for the size-limited cache and is handled by AOLserver (via thread termination) for the - thread-persistent TCL cache. + thread-persistent Tcl cache. } { Index: openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl,v diff -u -r1.133.2.46 -r1.133.2.47 --- openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl 4 Aug 2014 10:18:25 -0000 1.133.2.46 +++ openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl 9 Sep 2014 08:32:01 -0000 1.133.2.47 @@ -54,7 +54,7 @@ $foo and $bar set to whatever the user typed in the form this uses the initially nauseating but ultimately delicious - tcl system function "uplevel" that lets a subroutine bash + Tcl system function "uplevel" that lets a subroutine bash the environment and local vars of its caller. It ain't Common Lisp... This is an ad-hoc check to make sure users aren't trying to pass in @@ -81,7 +81,7 @@ # out because it will cause an unstable release. To add this security # feature, we will need to go through all the code in the ACS and make # sure that the code doesn't try to overwrite intentionally and also - # check to make sure that when tcl files are sourced from another proc, + # check to make sure that when Tcl files are sourced from another proc, # the appropriate variables are unset. If you want to install this # security feature, then you can look in the release notes for more info. # @@ -2476,7 +2476,7 @@ -put:boolean vars_list } { - Takes a TCL list of variable names and ns_set updates values in an ns_set + Takes a Tcl list of variable names and ns_set updates values in an ns_set correspondingly: key is the name of the var, value is the value of the var. The caller is (obviously) responsible for freeing the set if need be. @@ -2486,7 +2486,7 @@ @param put If this boolean switch is specified, it'll use ns_set put instead of ns_set update (update is default) - @param args A TCL list of variable names that will be transported into the ns_set. + @param args A Tcl list of variable names that will be transported into the ns_set. @author Lars Pind (lars@pinds.com) Index: openacs-4/packages/acs-templating/tcl/data-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/tcl/data-procs.tcl,v diff -u -r1.17.2.3 -r1.17.2.4 --- openacs-4/packages/acs-templating/tcl/data-procs.tcl 29 Jul 2014 10:56:36 -0000 1.17.2.3 +++ openacs-4/packages/acs-templating/tcl/data-procs.tcl 9 Sep 2014 08:32:01 -0000 1.17.2.4 @@ -69,7 +69,7 @@ } { Validates natural numbers data types. - Will trim leading 0 in order to avoid TCL interpreting it as octal (code borrowed + Will trim leading 0 in order to avoid Tcl interpreting it as octal (code borrowed from ad_page_contract_filter_proc_naturalnum) @author Rocael Hernandez Index: openacs-4/packages/acs-templating/tcl/date-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/tcl/date-procs.tcl,v diff -u -r1.48.4.6 -r1.48.4.7 --- openacs-4/packages/acs-templating/tcl/date-procs.tcl 26 Oct 2013 09:16:22 -0000 1.48.4.6 +++ openacs-4/packages/acs-templating/tcl/date-procs.tcl 9 Sep 2014 08:32:01 -0000 1.48.4.7 @@ -119,7 +119,7 @@ } { Create a new Date object I chose to implement the date objects as lists instead of - arrays, because arrays are not first-class in TCL + arrays, because arrays are not first-class in Tcl } { return [list $year $month $day $hours $minutes $seconds $format] } @@ -1179,7 +1179,7 @@ Collect a textdate from the form, it automatically reformats it from the users locale to the iso standard YYYY-MM-DD this is useful because it doesn't need - reformatting in tcl code + reformatting in Tcl code } { upvar $element_ref element Index: openacs-4/packages/acs-templating/tcl/parse-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/tcl/parse-procs.tcl,v diff -u -r1.48.2.9 -r1.48.2.10 --- openacs-4/packages/acs-templating/tcl/parse-procs.tcl 30 Jul 2014 11:55:01 -0000 1.48.2.9 +++ openacs-4/packages/acs-templating/tcl/parse-procs.tcl 9 Sep 2014 08:32:01 -0000 1.48.2.10 @@ -21,7 +21,7 @@ src varlist } { - return a the output of a tcl/adp pair as a string. adp_level is + return a the output of a Tcl/ADP pair as a string. adp_level is set to the calling procedure so that pass by reference works. and example of using this is in the search indexer for various content types: @@ -36,12 +36,12 @@ @param uplevel how far up the stack should the adp_level be set to (default is the calling procedures level) - @param src should be the path to the tcl/adp pair relative to the server root, as + @param src should be the path to the Tcl/ADP pair relative to the server root, as with the src attribute to the include tag. @param varlist a list of {key value key value ... } varlist can also be &var foo for things passed by reference (arrays and multirows) - @return the string generated by the tcl/adp pair. + @return the string generated by the Tcl/ADP pair. @author Jeff Davis davis@xarg.net @creation-date 2004-06-02 @@ -359,14 +359,14 @@ } ad_proc -private template::adp_init { type file_stub } { - Ensures that both data source tcl files and compiled adp templates + Ensures that both data source Tcl files and compiled ADP templates are wrapped in procedures in the current interpreter. Procedures are cached in byte code form in the interpreter, so this is more - efficient than sourcing a tcl file or parsing the template every + efficient than sourcing a Tcl file or parsing the template every time. Also checks the modification time on the source file to ensure that the procedure is up-to-date. - @param type Either adp (template) or tcl (code) + @param type Either ADP (template) or Tcl (code) @param file_stub The root (sans file extension) of the absolute path to the .adp or .tcl file to source. } { @@ -449,14 +449,14 @@ set quote_p 0 } - # Convert syntax to TCL syntax: - # It's either an array variable or a tcl variable + # Convert syntax to Tcl syntax: + # It's either an array variable or a Tcl variable # array variables # TODO: ad_quotehtml # TODO: lang::util::localize regsub -all {[\]\[\{\}\"]\\$} $substitution {\\&} substitution if { [regexp {^%([a-zA-Z0-9_]+)\.([a-zA-Z0-9_]+)%$} $substitution match arr key] } { - # the array key name is substitured by the tcl parser s + # the array key name is substitured by the Tcl parser s regsub -all {[\]\[\{\}\"]\\$} $key {\\&} key set command "set ${arr}(${key})" set substitution [uplevel $command] @@ -504,7 +504,7 @@ regsub -all {([^0-9])%>} $chunk {\1} chunk # warn about the first ambiguity in the source if [regexp {[0-9]+%>} $chunk match] { - ns_log warning "ambiguous '$match'; write tcl escapes with a space like\ + ns_log warning "ambiguous '$match'; write Tcl escapes with a space like\ <% set x 50 %> and HTML tags with proper quoting, like
    \ when compiling ADP source: template::adp_compile $source_type {$source}" } Index: openacs-4/packages/acs-templating/tcl/util-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/tcl/util-procs.tcl,v diff -u -r1.26.2.8 -r1.26.2.9 --- openacs-4/packages/acs-templating/tcl/util-procs.tcl 25 Nov 2013 09:36:38 -0000 1.26.2.8 +++ openacs-4/packages/acs-templating/tcl/util-procs.tcl 9 Sep 2014 08:32:01 -0000 1.26.2.9 @@ -450,7 +450,7 @@ ad_proc -public template::util::set_file_encoding { file_channel_id } { Set encoding of the given file channel based on the OutputCharset - parameter of AOLserver. All adp, tcl, and txt files are assumed + parameter of AOLserver. All ADP, Tcl, and txt files are assumed to be in the same charset. @param file_channel_id The id of the file to set encoding for. @@ -736,7 +736,7 @@ } ad_proc -public template::util::tcl_to_sql_list { lst } { - Convert a TCL list to a SQL list, for use with the "in" statement. + Convert a Tcl list to a SQL list, for use with the "in" statement. Uses DoubleApos (similar to ns_dbquotevalue) functionality to escape single quotes } { Index: openacs-4/packages/acs-templating/www/doc/design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/design.html,v diff -u -r1.2 -r1.2.26.1 --- openacs-4/packages/acs-templating/www/doc/design.html 13 Sep 2002 16:46:30 -0000 1.2 +++ openacs-4/packages/acs-templating/www/doc/design.html 9 Sep 2014 08:32:01 -0000 1.2.26.1 @@ -339,7 +339,7 @@ Less simple cases involve dependent templated pages. They are requested with the <include> and <master> tags. In these cases, - TCL and/or ADP parsing happens recursively. + Tcl and/or ADP parsing happens recursively.

    Tcl Call Stack

    Index: openacs-4/packages/acs-templating/www/doc/index.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/index.html,v diff -u -r1.4 -r1.4.20.1 --- openacs-4/packages/acs-templating/www/doc/index.html 10 Feb 2004 12:16:40 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/index.html 9 Sep 2014 08:32:02 -0000 1.4.20.1 @@ -47,7 +47,7 @@ Developer Guide   - API for programming the TCL part of a page + API for programming the Tcl part of a page @@ -60,7 +60,7 @@ Demonstration - Samples of the various mechanisms, with both TCL and ADP + Samples of the various mechanisms, with both Tcl and ADP parts. Index: openacs-4/packages/acs-templating/www/doc/migration.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/migration.html,v diff -u -r1.2.22.1 -r1.2.22.2 --- openacs-4/packages/acs-templating/www/doc/migration.html 24 Sep 2013 20:07:35 -0000 1.2.22.1 +++ openacs-4/packages/acs-templating/www/doc/migration.html 9 Sep 2014 08:32:02 -0000 1.2.22.2 @@ -16,15 +16,15 @@ separate code and graphical presentation. The latter goes into an ADP file; it contains essentially HTML, augmented by a few special tags and the @variable@ construct. - The code goes into a TCL script. In other words, a templated page - consists of two files, a TCL part that puts its results in data + The code goes into a Tcl script. In other words, a templated page + consists of two files, a Tcl part that puts its results in data sources, and an ADP page (the template), into which these data sources will be interpolated to yield a complete HTML page.

    General

    - As usual, the TCL page should start with a call to + As usual, the Tcl page should start with a call to ad_page_contract. In its -properties block you promise the data sources that your script will provide; they were earlier called page properties, hence the @@ -34,7 +34,7 @@ see below.

    - At the end of the TCL script, you should call + At the end of the Tcl script, you should call ad_return_template. The template runs after the tcl script, and can use these data sources. Index: openacs-4/packages/acs-templating/www/doc/requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/requirements.html,v diff -u -r1.1.1.1 -r1.1.1.1.28.1 --- openacs-4/packages/acs-templating/www/doc/requirements.html 13 Mar 2001 22:59:27 -0000 1.1.1.1 +++ openacs-4/packages/acs-templating/www/doc/requirements.html 9 Sep 2014 08:32:02 -0000 1.1.1.1.28.1 @@ -374,7 +374,7 @@

    The Templating System must not cause any performance problems to a site. It must be fast and efficient, and it must not slow down - page load speed by more than 10% versus a TCL page with inline + page load speed by more than 10% versus a Tcl page with inline HTML.

    @@ -403,7 +403,7 @@ 0.2 Merge with previous docs 8/25/2000 - Christian Brechb�hler + Christian Brechbühler Index: openacs-4/packages/acs-templating/www/doc/timing-1.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/timing-1.html,v diff -u -r1.1.1.1 -r1.1.1.1.28.1 --- openacs-4/packages/acs-templating/www/doc/timing-1.html 13 Mar 2001 22:59:27 -0000 1.1.1.1 +++ openacs-4/packages/acs-templating/www/doc/timing-1.html 9 Sep 2014 08:32:02 -0000 1.1.1.1.28.1 @@ -37,7 +37,7 @@

    - For some reason, this seems to take much longer on the TCL only + For some reason, this seems to take much longer on the Tcl-only page. Maybe because it's the first in a triple of pages that e-Tester requests? There may be a little longer time gap between chain-frac-2 and the next request of chain-frac-0 @@ -60,7 +60,7 @@

    Serving /webroot/web/brech/acs/packages/acs-templating/www/admin/test/chain-frac-0.tcl with rp_handle_tcl_request

    - Here the actual work supposedly happens. The TCL only page is + Here the actual work supposedly happens. The Tcl-only page is clearly fastest. Always reparsing pages expectedly affects the templated page, and -2, which compiles two ADP pages, is affected more than -1. The benefit of -2, wrapping -1 in another include, @@ -72,7 +72,7 @@

    Invoking trace filter ad_issue_deferred_dml

    - For some reason, the TCL-only page takes significantly longer. + For some reason, the Tcl-only page takes significantly longer.

    Done invoking trace filter ad_issue_deferred_dml (returning filter_ok)

    @@ -88,7 +88,7 @@ Overall, the templated pages are delivered faster. Forcing the template system to always reread all files and to recompile the ADP part slows them down, as expected, but overall they are - still faster than the TCL only page. + still faster than the Tcl-only page.
    Christian Brechbuehler
    Index: openacs-4/packages/acs-templating/www/doc/timing-2.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/timing-2.html,v diff -u -r1.1.1.1 -r1.1.1.1.28.1 --- openacs-4/packages/acs-templating/www/doc/timing-2.html 13 Mar 2001 22:59:27 -0000 1.1.1.1 +++ openacs-4/packages/acs-templating/www/doc/timing-2.html 9 Sep 2014 08:32:02 -0000 1.1.1.1.28.1 @@ -45,7 +45,7 @@ slower, by about 65ms. Forcing the template system to always reread all files and to recompile the ADP part slows them down, as expected, but overall - they are still faster than the TCL only page. + they are still faster than the Tcl-only page.


    Christian Brechbuehler
    Index: openacs-4/packages/acs-templating/www/doc/timing-3.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/timing-3.html,v diff -u -r1.1.1.1 -r1.1.1.1.28.1 --- openacs-4/packages/acs-templating/www/doc/timing-3.html 13 Mar 2001 22:59:27 -0000 1.1.1.1 +++ openacs-4/packages/acs-templating/www/doc/timing-3.html 9 Sep 2014 08:32:02 -0000 1.1.1.1.28.1 @@ -15,7 +15,7 @@ syntax.

    - We have graphs for 9 stages only. While TCL pages generate + We have graphs for 9 stages only. While Tcl pages generate four more entries, these lack from templated pages, and hence I suppressed them. The log message that marks the beginning of each phase is written in the lower right of the @@ -46,7 +46,7 @@

    - In ACS 3.4.6, TCL only pages are sereved faster than in + In ACS 3.4.6, Tcl-only pages are sereved faster than in 4.0 beta-2. The templated pages are delivered much slower. The first time the template system reads a templated page, it takes about 3 seconds! The result is cached, mitigating the Index: openacs-4/packages/acs-templating/www/doc/timing.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/timing.html,v diff -u -r1.1.1.1 -r1.1.1.1.28.1 --- openacs-4/packages/acs-templating/www/doc/timing.html 13 Mar 2001 22:59:27 -0000 1.1.1.1 +++ openacs-4/packages/acs-templating/www/doc/timing.html 9 Sep 2014 08:32:02 -0000 1.1.1.1.28.1 @@ -24,7 +24,7 @@

    The Templating System must not cause any performance problems to a site. It must be fast and efficient, and it must not slow down - page load speed by more than 10% versus a TCL page with inline + page load speed by more than 10% versus a Tcl page with inline HTML.

    @@ -40,10 +40,10 @@