Improve label resolution in french for geonames.
authorymh <ymh.work@gmail.com>
Tue, 26 Sep 2017 21:41:49 +0200
changeset 550 fbd1bfc9f963
parent 549 d288cb259731
child 551 e70004b11b3b
Improve label resolution in french for geonames.
cms/package-lock.json
server/src/app/Services/GeonamesResolver.php
--- a/cms/package-lock.json	Fri Sep 15 14:54:19 2017 +0200
+++ b/cms/package-lock.json	Tue Sep 26 21:41:49 2017 +0200
@@ -1,6 +1,6 @@
 {
   "name": "corpus-cms",
-  "version": "0.0.22",
+  "version": "0.0.23",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
--- a/server/src/app/Services/GeonamesResolver.php	Fri Sep 15 14:54:19 2017 +0200
+++ b/server/src/app/Services/GeonamesResolver.php	Tue Sep 26 21:41:49 2017 +0200
@@ -60,13 +60,31 @@
             elseif (strpos($lang, 'fr') === 0 && !isset($labels['fr'])) {
                 $labels['fr'] = $labelLit->getvalue();
             }
+            elseif (strpos($lang, 'en') === 0 && !isset($labels['en'])) {
+                $labels['en'] = $labelLit->getvalue();
+            }
         }
 
-        $label = isset($labels['fr']) ? $labels['fr'] : ( isset($labels[''])? $labels['']: null) ;
+        $label = isset($labels['fr']) ? $labels['fr'] : null ;
 
         if(is_null($label)) {
-            $labelLit = $graph->getLiteral("<$url>", "<http://www.geonames.org/ontology#name>");
-            $label = (!is_null($labelLit)) ? $labelLit->getValue() : null;
+            foreach ($graph->allLiterals("<$url>", "<http://www.geonames.org/ontology#name>") as $labelLit) {
+                $lang = $labelLit->getLang();
+                if(!$lang && !isset($labels[''])) {
+                    $labels[''] = $labelLit->getvalue();
+                }
+                elseif (strpos($lang, 'fr') === 0 && !isset($labels['fr'])) {
+                    $labels['fr'] = $labelLit->getvalue();
+                }
+                elseif (strpos($lang, 'en') === 0 && !isset($labels['en'])) {
+                    $labels['en'] = $labelLit->getvalue();
+                }
+            }
+            $label = isset($labels['fr']) ? $labels['fr'] : (
+                isset($labels['en']) ? $labels['en'] : (
+                    isset($labels['']) ? $labels[''] : null
+                    )
+                ) ;
         }
 
         return $label;