/* OFFSET */ jsonObject* offset,
/* flags */ int flags
) {
+ char* locale = osrf_message_get_last_locale();
+
// in case we don't get a select list
jsonObject* defaultselhash = NULL;
buffer_add(select_buf, ",");
}
- buffer_fadd(select_buf, " \"%s\".%s AS \"%s\"", cname, __column, __column);
+ if (locale) {
+ char* i18n = osrfHashGet(field, "i18n");
+
+ if ( i18n && !strncasecmp("true", i18n, 4)) {
+ 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, __column, __column);
+ } else {
+ buffer_fadd(select_buf, " \"%s\".%s AS \"%s\"", cname, __column, __column);
+ }
+ } else {
+ buffer_fadd(select_buf, " \"%s\".%s AS \"%s\"", cname, __column, __column);
+ }
// ... but it could be an object, in which case we check for a Field Transform
} else {
__column = searchFieldTransform(cname, field, selfield->item);
buffer_fadd(select_buf, " %s AS \"%s\"", __column, __alias);
} else {
- buffer_fadd(select_buf, " \"%s\".%s AS \"%s\"", cname, fname, __alias);
+ if (locale) {
+ char* i18n = osrfHashGet(field, "i18n");
+
+ if ( i18n && !strncasecmp("true", i18n, 4)) {
+ 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);
+ } else {
+ buffer_fadd(select_buf, " \"%s\".%s AS \"%s\"", cname, fname, __alias);
+ }
+ } else {
+ buffer_fadd(select_buf, " \"%s\".%s AS \"%s\"", cname, fname, __alias);
+ }
}
}
char* buildSELECT ( jsonObject* search_hash, jsonObject* order_hash, osrfHash* meta, osrfMethodContext* ctx ) {
+ char* locale = osrf_message_get_last_locale();
+
osrfHash* fields = osrfHashGet(meta, "fields");
char* core_class = osrfHashGet(meta, "classname");
while ( (node = jsonObjectIteratorNext( select_itr )) ) {
osrfHash* field = osrfHashGet( osrfHashGet( idlClass, "fields" ), jsonObjectToSimpleString(node->item) );
char* fname = osrfHashGet(field, "name");
- char* locale = osrf_message_get_last_locale();
if (!field) continue;