[OPEN-ILS-GENERAL] How to translate facet labels in Evergreen 2.1.1?
Dan Scott
dan at coffeecode.net
Sun Dec 4 12:25:16 EST 2011
Hi Linda:
2011/12/4 Linda Jansova <skolkova at chello.cz>:
> Dear all,
>
> This time we would like to ask a translation-related question. We would like
> to have expressions such as "Corporate Author" which are used as facet
> labels when displaying search results translated into Czech (the attached
> screenshot shows these facets). We have found out that these labels seem to
> reside in /openils/var/web/opac/common/js/cs-CZ# ls
> FacetDefs.js OrgTree.js. Any ideas how to translate these?
Yep, just went through that for fr-CA a few weeks back. These labels
are maintained in the database - so you need to provide translations
for the terms in the database, then run "autogen.sh" to regenerate the
JS files. Normally we would pull the latest translations from
translations.launchpad.net/evergreen before creating the Evergreen
release tarball and this should all just work (through the "psql -f
Open-ILS/src/sql/Pg/950.data.seed-values-cs-CZ.sql -d evergreen"
approach to populate the database -- you'll get ERROR messages on
attempts to insert entries that already exist but that's fine -- then
"autogen.sh").
But if you need to tweak individual entries or add missing ones,
here's a slightly deeper explanation:
So, let's start with the labels for metabib classes ("Keyword",
"Title", "Author", etc).
The config.metabib_class is defined in fm_IDL.xml with the class ID
"cmc", a primary field of "name", and a translatable field of "label"
(oils_persist:i18n="true").
Let's see what is in config.metabib_class currently:
SELECT * FROM config.metabib_class;
name | label
------------+------------
keyword | Keyword
title | Title
author | Author
subject | Subject
series | Series
identifier | Identifier
(6 rows)
And then let's see what we can find in the database translations for
config.metabib_class (doing the lookup by the class ID + primary
field):
SELECT * FROM config.i18n_core WHERE translation = 'fr-CA' AND
fq_field = 'cmc.name';
id | fq_field | identity_value | translation | string
------+----------+----------------+-------------+-------------
1758 | cmc.name | keyword | fr-CA | Mot-cle
1763 | cmc.name | identifier | fr-CA | Identifiant
1762 | cmc.name | series | fr-CA | Collection
1760 | cmc.name | author | fr-CA | Auteur
1761 | cmc.name | subject | fr-CA | Sujet
(6 rows)
In our case, we can update a field with a translation we don't like as follows:
UPDATE config.i18n_core SET string = 'Mot-clé' WHERE id = 1758;
Or add a field that currently has no translation (title is missing, in
our case):
INSERT INTO config.i18n_core (fq_field, identity_value, translation,
string) VALUES ('cmc.name', 'title', 'fr-CA', 'Titre');
So - those are the broad classes. The narrower ones are what you were
asking about specifically; those are defined in config.metabib_field,
with a class ID of "cmf" and a primary field of "id" this time:
SELECT * FROM config.i18n_core WHERE translation = 'fr-CA' AND
fq_field LIKE 'cmf.%';
id | fq_field | identity_value | translation |
string
------+-----------+----------------+-------------+------------------------------------
1825 | cmf.label | 27 | fr-CA | ID interne
1826 | cmf.label | 1 | fr-CA | Titre du périodique
1827 | cmf.label | 21 | fr-CA | ISMN
1828 | cmf.label | 2 | fr-CA | Abréviation du titre
The same process that we used for config.metabib_class values applies
for updates and inserts, adjusting for the different fq_field
identifier:
INSERT INTO config.i18n_core (fq_field, identity_value, translation,
string) VALUES ('cmf.label', '8', 'fr-CA', 'Auteur personnel');
Repeat for all of your translated terms, run "autogen.sh", and you
should be good to go (well -- assuming that your browser doesn't cache
the previous versions of JavaScript that it has downloaded).
> And actually one more question - is it possible to influence the order in
> which individual facets appear?
I'm going to sidestep this question :) Anyone else want to step up to that one?
More information about the Open-ils-general
mailing list