From: miker Date: Mon, 3 Dec 2007 19:19:19 +0000 (+0000) Subject: patch suggested by Dan Scott to simplify the in-database translation logic X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=f4e1dfbee5aecdebad6b4f9f2bb853c2b39252f6;p=Evergreen.git patch suggested by Dan Scott to simplify the in-database translation logic git-svn-id: svn://svn.open-ils.org/ILS/trunk@8130 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/c-apps/oils_cstore.c b/Open-ILS/src/c-apps/oils_cstore.c index 11d2c91e1d..8c5dc65de5 100644 --- a/Open-ILS/src/c-apps/oils_cstore.c +++ b/Open-ILS/src/c-apps/oils_cstore.c @@ -1809,7 +1809,7 @@ static char* SELECT ( char* pkey = osrfHashGet(idlClass, "primarykey"); char* tname = osrfHashGet(idlClass, "tablename"); - buffer_fadd(select_buf, " COALESCE( oils_i18n_xlate('%s.%s', \"%s\".%s::TEXT, '%s'), \"%s\".%s ) AS %s", tname, __column, cname, pkey, locale, cname, __column, __column); + buffer_fadd(select_buf, " oils_i18n_xlate('%s.%s', \"%s\".%s::TEXT, '%s') AS \"%s\"", tname, __column, cname, pkey, locale, __column); } else { buffer_fadd(select_buf, " \"%s\".%s AS \"%s\"", cname, __column, __column); } @@ -1853,7 +1853,7 @@ static char* SELECT ( char* pkey = osrfHashGet(idlClass, "primarykey"); char* tname = osrfHashGet(idlClass, "tablename"); - buffer_fadd(select_buf, " COALESCE( oils_i18n_xlate('%s.%s', \"%s\".%s::TEXT, '%s'), \"%s\".%s ) AS \"%s\"", tname, fname, cname, pkey, locale, cname, fname, __alias); + buffer_fadd(select_buf, " oils_i18n_xlate('%s.%s', \"%s\".%s::TEXT, '%s') AS \"%s\"", tname, fname, cname, pkey, locale, __alias); } else { buffer_fadd(select_buf, " \"%s\".%s AS \"%s\"", cname, fname, __alias); } @@ -2214,7 +2214,7 @@ static char* buildSELECT ( jsonObject* search_hash, jsonObject* order_hash, osrf char* pkey = osrfHashGet(idlClass, "primarykey"); char* tname = osrfHashGet(idlClass, "tablename"); - buffer_fadd(select_buf, " COALESCE( oils_i18n_xlate('%s.%s', \"%s\".%s::TEXT, '%s'), \"%s\".%s ) AS %s", tname, fname, cname, pkey, locale, cname, fname, fname); + buffer_fadd(select_buf, " oils_i18n_xlate('%s.%s', \"%s\".%s::TEXT, '%s') AS \"%s\"", tname, fname, cname, pkey, locale, fname); } else { buffer_fadd(select_buf, " \"%s\".%s", cname, fname); } diff --git a/Open-ILS/src/sql/Pg/002.functions.config.sql b/Open-ILS/src/sql/Pg/002.functions.config.sql index 777f4832b6..95ad2ac56e 100644 --- a/Open-ILS/src/sql/Pg/002.functions.config.sql +++ b/Open-ILS/src/sql/Pg/002.functions.config.sql @@ -47,12 +47,14 @@ DECLARE result config.i18n_core%ROWTYPE; BEGIN + -- Try the full locale SELECT * INTO result FROM config.i18n_core WHERE fq_field = keyfield AND identity_value = keyvalue AND translation = locale; + -- Try just the language IF NOT FOUND THEN SELECT * INTO result FROM config.i18n_core @@ -61,10 +63,19 @@ BEGIN AND translation = language; END IF; + -- Fall back to the string we passed in in the first place + IF NOT FOUND THEN + RETURN keyvalue; + END IF; + RETURN result.string; END; $func$ LANGUAGE PLPGSQL; +-- Function for marking translatable strings in SQL statements +CREATE OR REPLACE FUNCTION oils_i18n_gettext( TEXT ) RETURNS TEXT AS $$ + SELECT $1; +$$ LANGUAGE SQL; COMMIT;