Skip to content

Commit 59b758a

Browse files
authored
Merge pull request #434 from AtlasOfLivingAustralia/433_i18n
#433 i18n fix
2 parents 7c82196 + 0b38131 commit 59b758a

File tree

10 files changed

+140
-7
lines changed

10 files changed

+140
-7
lines changed

grails-app/assets/javascripts/spApp/service/toolExportSampleService.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"input": [
2424
{
2525
"name": "area",
26-
"description": $i18n(382,"Select area."),
26+
"description": $i18n(420,"Select area."),
2727
"type": "area",
2828
"constraints": {
2929
"min": 1,

grails-app/assets/stylesheets/application.css

+1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@
2121
*= require commonui-bs3-2019/css/ala-styles.css
2222
*= require spatial-hub.css
2323
*= require commonui-bs3-2019.css
24+
*= require flag-icons-master/css/flag-icon.css
2425
*/

grails-app/assets/stylesheets/spatial-hub.css

+6
Original file line numberDiff line numberDiff line change
@@ -1116,3 +1116,9 @@ ul.errors {
11161116
padding-top: 20px;
11171117
font-style: italic;
11181118
}
1119+
1120+
#lang {
1121+
color: #FFFFFF;
1122+
background-color: #000000;
1123+
border-width: 0;
1124+
}

grails-app/conf/application.yml

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ grails:
2222
upload:
2323
maxFileSize: 10000000
2424
maxRequestSize: 10000000
25+
i18n:
26+
region: 'default'
2527

2628
layersService:
2729
url: 'https://spatial.ala.org.au/ws'

grails-app/controllers/au/org/ala/spatial/portal/PortalController.groovy

+6-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,12 @@ class PortalController {
151151
config.spApp.each { k, v ->
152152
spApp.put(k, v.class.newInstance(params.get(k, v)))
153153
}
154-
config.spApp = spApp
154+
if (params.get("lang")) {
155+
config.i18n?.currentRegion = params.get("lang")
156+
} else {
157+
config.i18n?.currentRegion = null;
158+
}
159+
155160

156161
render(view: 'index',
157162
model: [config : config,

grails-app/i18n/messages_de.properties

+89-1
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,10 @@ typeMismatch.java.math.BigInteger=Die Eigenschaft {0} muss eine gültige Zahl se
400400
354=Gebiet
401401
355=Die Befehl konnte nicht gefunden werden
402402
356=Wissenschaftliche Verbreitung
403+
357=JournalMap articles
404+
358=Checklist species distributions
405+
359=Checklist areas
406+
360=Gazetteer Points
403407
361=Sehenswürdigkeiten
404408
362=https\://www.ala.org.au/spatial-portal-help/note-area-sq-km/
405409
363=Info
@@ -432,7 +436,9 @@ typeMismatch.java.math.BigInteger=Die Eigenschaft {0} muss eine gültige Zahl se
432436
390=Oktober
433437
391=November
434438
392=Dezember
439+
393=expert distribution(s)
435440
394=Checkliste(n)
441+
395=track(s)
436442
396=gefunden
437443
397=Metadaten-URL
438444
398=Sammlung von Flächen aus Layer
@@ -461,6 +467,7 @@ typeMismatch.java.math.BigInteger=Die Eigenschaft {0} muss eine gültige Zahl se
461467
421=Dateityp.
462468
422=Flächen zum Exportieren auswählen.
463469
423=Dateityp auswählen.
470+
424=Number of groups and Shapefile generation
464471
425=Flächen exportieren.
465472
426=Eine Artenliste exportieren.
466473
427=Endemisch
@@ -470,4 +477,85 @@ typeMismatch.java.math.BigInteger=Die Eigenschaft {0} muss eine gültige Zahl se
470477
431=Datum
471478
432=Aktionstyp
472479
433=Daten
473-
434=Anzahl der Aktionen
480+
434=Anzahl der Aktionen
481+
435=Suche im ALA DOI-Dienst nach Datensätzen für Arten
482+
436=Nach Lizenz
483+
450=(ausgewählt)
484+
451=Slider help
485+
452=Use the slider to select facet classes. All facet classes falling in between the range selector are selected. Selections falling outside the range are cleared.
486+
453=Diagramme
487+
454=view in larger window
488+
455=Diagramm
489+
456=Tabelle
490+
457=Facet classes for
491+
458=Aktualisieren
492+
459=My workflow
493+
460=Workflow Saved
494+
461=Aus DOI hinzufügen
495+
462=Kein Datensatz ausgewählt
496+
463=Search returned with no results
497+
464=Metadaten anzeigen
498+
465=DOI
499+
466=Arten
500+
467=Datenanzahl
501+
468=Department
502+
469=Modeller
503+
470=Datum
504+
471=SDM available
505+
472=No data was able to be extracted from the selected DOI
506+
473=Select by clicking label or bar
507+
474=Nicht angegeben
508+
475=No occurrences mapped for this layer and applied filters.
509+
476=Die hochgeladene Datei ist zu groß. Maximale Dateigröße\:
510+
477=Upload fehlgeschlagen.
511+
478=Failed to register query. Try again later.
512+
479=Ungültiger WKT
513+
480=Display facet class in
514+
481=Auswahl löschen
515+
482=Search CSDM dataset by species, department or modeller
516+
483=Absenden
517+
484=Workflow Name
518+
485=ist privat
519+
486=Id
520+
487=Ist privat
521+
488=bearbeiten
522+
489=Anhand eines Zeitraums begrenzen
523+
490=Zeitraum
524+
491=TO
525+
492=Listentyp\:
526+
493=Radius (km) 
527+
494=Draw polyline with buffer
528+
495=Datenprovider\:
529+
496=Add occurrences to adhoc
530+
497=Artenmerkmale mit einschließen (falls verfügbar)
531+
498=Annotating your workflow will allow other users to assess the suitability of the dataset for their purposes and make it reusable.
532+
499=User
533+
500=Organsation
534+
501=General annotation of the dataset
535+
502=Workflow annotation
536+
503=Search facets...
537+
504=--- Aktive Filter ---
538+
505=Facet begins with (case sensitive)\:
539+
506=Available Workflows
540+
507=Laden
541+
508=Bearbeitung läuft...
542+
509=Speichern
543+
510=Ausführen
544+
511=Kartenprojektion
545+
512=Filter entfernen
546+
513=Räumlich-unbekannte Daten berücksichtigen
547+
514=Abwesenheiten (Absences) berücksichtigen
548+
515=Verlauf
549+
516=Actions
550+
517=Sessions
551+
518=Zoom to Localities
552+
519=Select Facet
553+
520=Filter löschen
554+
521=Aktiviert
555+
522=Kategorie
556+
523=facets selected
557+
524=Weiter
558+
525=Räumlich-undefinierte Daten berücksichtigen
559+
526=(kann Artenmerkmale enthalten)
560+
527=Keine weiteren Arten
561+
528=Lebensform

grails-app/services/au/org/ala/spatial/portal/PropertiesService.groovy

+12-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package au.org.ala.spatial.portal
1717

1818
import org.apache.commons.io.FileUtils
19+
import org.apache.logging.log4j.util.Strings
1920

2021
/**
2122
* Helper class for invoking other ALA web services.
@@ -25,10 +26,14 @@ class PropertiesService {
2526
def grailsApplication
2627

2728
def get(type) {
28-
def name = "messages" + (type == "default" ? "" : "_" + type)
29+
def name = "messages" + (type == "default" ? "" : "_" + type.toLowerCase())
2930
def defaultFile = "${name}.properties";
3031
def properties = new Properties()
3132

33+
//Load default English properties
34+
def defaultProperties = new Properties()
35+
defaultProperties.load(new StringReader(PortalController.classLoader.getResourceAsStream("messages.properties")?.text))
36+
3237
def text = PortalController.classLoader.getResourceAsStream("$defaultFile")?.text
3338
if (text) {
3439
properties.load(new StringReader(text))
@@ -54,6 +59,12 @@ class PropertiesService {
5459
if (file.exists()) {
5560
properties.load(new FileReader(file))
5661
}
62+
//Use default English properties if the required lang is not available
63+
defaultProperties.each{
64+
if (!properties.getProperty(it.key)){
65+
properties.setProperty(it.key, it.value)
66+
}
67+
}
5768

5869
if (properties.size() == 0 && type != 'messages') {
5970
get('messages')

grails-app/views/layouts/portal.gsp

+4-1
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@
311311
</li>
312312
</ul>
313313
</div>
314+
314315
<button class="search-trigger hidden-xs hidden-sm collapsed collapse-trigger-button"
315316
data-toggle="collapse"
316317
data-target="#autocompleteSearchALA" onclick="focusOnClickSearchButton()">
@@ -360,8 +361,11 @@
360361
</form>
361362
</div>
362363
</div>
364+
363365
</nav><!-- .site-navigation -->
364366

367+
368+
365369
</div>
366370
<script type="text/html" id="autoCompleteTemplate">
367371
<li class="autocomplete-item striped">
@@ -405,6 +409,5 @@
405409
</script>
406410
</g:if>
407411
<!-- End Google Analytics -->
408-
409412
</body>
410413
</html>

grails-app/views/portal/index.gsp

+18-1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@
7474
baseLayers: ${(config.startup.baselayers as grails.converters.JSON).toString().encodeAsRaw()},
7575
defaultBaseLayer: '${config.startup.baselayer.default}',
7676
77+
<g:if test="${config.i18n?.currentRegion}">
78+
i18n: '${config.i18n?.currentRegion}',
79+
</g:if>
80+
7781
<g:if test="${config.flickr.url}">
7882
flickrUrl: '${config.flickr.url}',
7983
flickrLicensesData: ${(config.flickr.licensesData as grails.converters.JSON).toString().encodeAsRaw()},
@@ -94,6 +98,8 @@
9498
presetWMSServers: ${(config.presetWMSServers as grails.converters.JSON).toString().encodeAsRaw()},
9599
getMapExamples: ${(config.getMapExamples as grails.converters.JSON).toString().encodeAsRaw()},
96100
101+
102+
97103
<g:if test="${config.doiService?.url}">
98104
doiServiceUrl: '${config.doiService.url}',
99105
</g:if>
@@ -144,7 +150,7 @@
144150
, '${config.doiService.url}/**'
145151
</g:if>
146152
],
147-
i18n: '${config.i18n?.region?:"default"}',
153+
148154
editable: ${params.edit?:'false'},
149155
wmsIntersect: ${config.wms.intersect},
150156
projections: ${(config.projections as grails.converters.JSON).toString().encodeAsRaw()},
@@ -212,6 +218,17 @@
212218
, maxUploadSize: ${config.grails.controllers.upload.maxFileSize}
213219
};
214220
221+
if (!$SH.i18n) {
222+
if (( navigator.language || navigator.browserLanguage).startsWith('en')) {
223+
$SH.i18n = 'default';
224+
} else if ((navigator.language || navigator.browserLanguage).startsWith('de')) {
225+
$SH.i18n = 'de';
226+
} else {
227+
$SH.i18n = navigator.language || navigator.browserLanguage;
228+
}
229+
}
230+
231+
215232
BIE_VARS = {
216233
autocompleteUrl: '${config.autocompleteUrl}'
217234
};

src/integration-test/groovy/ToolTabulateSpec.groovy

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class ToolTabulateSpec extends GebSpec {
6262
modalModule.getSizeOfCSVTable() > 2
6363
modalModule.getCellByName("layer",1) == "Koppen Climate Classification (Major Classes)"
6464

65-
Float.parseFloat(modalModule.getCellByName("Temperate",2)) >= 1600
65+
Float.parseFloat(modalModule.getCellByName("Temperate",2)) >= 1500
6666

6767
Thread.sleep(pause)
6868
}

0 commit comments

Comments
 (0)