diff options
Diffstat (limited to 'src/document.cpp')
| -rw-r--r-- | src/document.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/document.cpp b/src/document.cpp index 863266c05..ef04735ef 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -673,6 +673,35 @@ SPObject *SPDocument::getObjectByRepr(Inkscape::XML::Node *repr) { return (SPObject*)g_hash_table_lookup(priv->reprdef, repr); } +Glib::ustring SPDocument::getLanguage() { + gchar const *document_language = rdf_get_work_entity(this, rdf_find_entity("language")); + if (document_language) { + while (isspace(*document_language)) + document_language++; + } + if ( !document_language || 0 == *document_language) { + // retrieve system language + document_language = getenv("LC_ALL"); + if ( NULL == document_language || *document_language == 0 ) { + document_language = getenv ("LC_MESSAGES"); + } + if ( NULL == document_language || *document_language == 0 ) { + document_language = getenv ("LANG"); + } + + if ( NULL != document_language ) { + gchar *pos = strchr(document_language, '_'); + if ( NULL != pos ) { + return Glib::ustring(document_language, pos - document_language); + } + } + } + + if ( NULL == document_language ) + return Glib::ustring(); + return document_language; +} + /* Object modification root handler */ void |
