diff options
author | David Robillard <d@drobilla.net> | 2008-11-08 19:53:30 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-11-08 19:53:30 +0000 |
commit | 0ff919f9b56903952aa76cd0315ccb808a7bd59c (patch) | |
tree | dca34d4f06f74fdea189e36f256dec071c9e4d0d /src/plugin.c | |
parent | f6e5dcc1a59c4d4103718d3dbf3ee77096eeaa88 (diff) | |
download | lilv-0ff919f9b56903952aa76cd0315ccb808a7bd59c.tar.gz lilv-0ff919f9b56903952aa76cd0315ccb808a7bd59c.tar.bz2 lilv-0ff919f9b56903952aa76cd0315ccb808a7bd59c.zip |
Support i18n literals via LANG environment variable.
Apply patch from larsl (ticket #186).
git-svn-id: http://svn.drobilla.net/lad/trunk/slv2@1705 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/plugin.c')
-rw-r--r-- | src/plugin.c | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/src/plugin.c b/src/plugin.c index c539f77..42cb1c9 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -373,19 +373,21 @@ slv2_plugin_verify(SLV2Plugin plugin) SLV2Value slv2_plugin_get_name(SLV2Plugin plugin) { - SLV2Values results = slv2_plugin_get_value_by_qname(plugin, "doap:name"); + SLV2Values results = slv2_plugin_get_value_by_qname_i18n(plugin, "doap:name"); SLV2Value ret = NULL; - // FIXME: lang? - if (results) { SLV2Value val = slv2_values_get_at(results, 0); if (slv2_value_is_string(val)) ret = slv2_value_duplicate(val); - } - - if (results) slv2_values_free(results); + } else { + results = slv2_plugin_get_value_by_qname(plugin, "doap:name"); + SLV2Value val = slv2_values_get_at(results, 0); + if (slv2_value_is_string(val)) + ret = slv2_value_duplicate(val); + slv2_values_free(results); + } return ret; } @@ -429,11 +431,29 @@ SLV2Values slv2_plugin_get_value_by_qname(SLV2Plugin p, const char* predicate) { - char* query = NULL; + char* query = slv2_strjoin( + "SELECT DISTINCT ?value WHERE { \n" + "<> ", predicate, " ?value . \n" + "FILTER(lang(?value) = \"\") \n" + "}\n", NULL); + + SLV2Values result = slv2_plugin_query_variable(p, query, 0); - query = slv2_strjoin( + free(query); + + return result; +} + + +/* internal: get i18n value if possible */ +SLV2Values +slv2_plugin_get_value_by_qname_i18n(SLV2Plugin p, + const char* predicate) +{ + char* query = slv2_strjoin( "SELECT DISTINCT ?value WHERE { \n" - "<> ", predicate, " ?value \n" + "<> ", predicate, " ?value . \n" + "FILTER(lang(?value) = \"", slv2_get_lang(), "\") \n" "}\n", NULL); SLV2Values result = slv2_plugin_query_variable(p, query, 0); |