From 93b623b7e5b7dac864e19162c02922c3a89f52a0 Mon Sep 17 00:00:00 2001 From: Bernardo Gonzalez Kriegel Date: Sat, 29 Mar 2014 22:26:28 -0300 Subject: [PATCH] Bug 12017 - Move language description out of database This patch moves language descriptions from database into template files, to ease the translation process. As pointed out on comment #5 of Bug 9056 [1], present implementation needs many queries to database, and more important, it's very difficult to scale so that every language could properly name any other language. So, at the cost of loose some native descriptions, that can be added or replace english ones, I propose to use only the rfc4646 subtag (it's in the name of translation files or translated directories) to find the proper name for language/region/script using blocks of template files It's more work for translators To test: 1) Do some fake translations, for example all langs for l in $(cd misc/translator/po; ls *-pref.po | sed 's/-pref.po//'); do mkdir koha-tmpl/intranet-tmpl/prog/$l; mkdir koha-tmpl/opac-tmpl/bootstrap/$l; mkdir koha-tmpl/opac-tmpl/prog/$l; mkdir koha-tmpl/opac-tmpl/ccsr/$l; done 2) Go to Administration > System preferences > I18N/L10N Preety mess! 3) Enable some random languages, some in groups (fr|en) on staff/opac. Enable OPAC changelanguage 4) Reload page, look at the bottom for language changer Also open a OPAC view, look for language changer Do NOT change languages 5) Apply the patch 6) Reload STAFF page, some cosmetic changes on lang display and language changer 7) Reload OPAC page, similar view of language changer 8) Change OPAC theme (prog|ccsr) and check again On prog and ccsr the result is not preety, but works 9) Now to business: Translations. Update language files for one of the active languages, say de-DE (cd misc/translator; perl translate update de-DE; perl translate update de-DE; perl translate install de-DE) 10) Change language to German (DE), reload STAFF page, some of the strings are already translated!!! 11) Check that there are many references to 'language.inc' files on PO files egrep "language.inc" misc/translator/po/de-DE-*po 12) Sign! Note: I'm imposing a sort order on results, by subtag, that could slow things a little (almos nothing if there are few languages). Could be removed. Note2: I put every string between it's own In that way each string is taken individually to translate instead of a solitary line filled with '%s' Note3: Of course if this pass it needs a lot of followups to eventually remove language tables, but that needs more analysis, there are more funcions on C4/Languages.pm that use the tables. But it's a first step. Also more followups are needed to update or complete languages/regions/scripts [1] http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=9056#c5 --- C4/Languages.pm | 5 - .../prog/en/includes/doc-head-close.inc | 2 + .../prog/en/includes/intranet-bottom.inc | 24 ++--- .../intranet-tmpl/prog/en/includes/language.inc | 114 ++++++++++++++++++++ .../prog/en/modules/admin/preferences.tt | 10 +- .../bootstrap/en/includes/doc-head-close.inc | 2 + .../opac-tmpl/bootstrap/en/includes/language.inc | 114 ++++++++++++++++++++ .../bootstrap/en/includes/opac-bottom.inc | 18 ++-- .../opac-tmpl/ccsr/en/includes/doc-head-close.inc | 2 + .../opac-tmpl/ccsr/en/includes/opac-bottom.inc | 12 +-- .../opac-tmpl/prog/en/includes/doc-head-close.inc | 3 + koha-tmpl/opac-tmpl/prog/en/includes/language.inc | 114 ++++++++++++++++++++ .../opac-tmpl/prog/en/includes/opac-bottom.inc | 12 +-- 13 files changed, 388 insertions(+), 44 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/language.inc create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/includes/language.inc create mode 100644 koha-tmpl/opac-tmpl/prog/en/includes/language.inc diff --git a/C4/Languages.pm b/C4/Languages.pm index 2a74b92..df7efd8 100644 --- a/C4/Languages.pm +++ b/C4/Languages.pm @@ -316,10 +316,6 @@ sub _build_languages_arrayref { # group this language, key by langtag $language_subtags_hashref->{'sublanguage_current'} = 1 if $translated_language eq $current_language; $language_subtags_hashref->{'rfc4646_subtag'} = $translated_language; - $language_subtags_hashref->{'native_description'} = language_get_description($language_subtags_hashref->{language},$language_subtags_hashref->{language},'language'); - $language_subtags_hashref->{'script_description'} = language_get_description($language_subtags_hashref->{script},$language_subtags_hashref->{'language'},'script'); - $language_subtags_hashref->{'region_description'} = language_get_description($language_subtags_hashref->{region},$language_subtags_hashref->{'language'},'region'); - $language_subtags_hashref->{'variant_description'} = language_get_description($language_subtags_hashref->{variant},$language_subtags_hashref->{'language'},'variant'); $track_language_groups->{$language_subtags_hashref->{'language'}}++; push ( @{ $language_groups->{$language_subtags_hashref->{language}} }, $language_subtags_hashref ); } @@ -335,7 +331,6 @@ sub _build_languages_arrayref { push @languages_loop, { # this is only use if there is one rfc4646_subtag => @$value[0]->{rfc4646_subtag}, - native_description => language_get_description($key,$key,'language'), language => $key, sublanguages_loop => $value, plural => $track_language_groups->{$key} >1 ? 1 : 0, diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc index 11f6f38..b6f0553 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc @@ -20,6 +20,8 @@ [% END %] +[% PROCESS 'language.inc' %] + [% INCLUDE 'validator-strings.inc' %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/intranet-bottom.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/intranet-bottom.inc index ed1298c..069abf3 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/intranet-bottom.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/intranet-bottom.inc @@ -5,18 +5,20 @@