decidim-term_customizer 0.18.0 → 0.22.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/forms/decidim/term_customizer/admin/translation_form.rb +1 -1
- data/app/models/decidim/term_customizer/translation.rb +1 -1
- data/config/locales/cs.yml +134 -0
- data/config/locales/fr.yml +34 -34
- data/config/locales/it.yml +134 -0
- data/lib/decidim/term_customizer/context/controller_context.rb +9 -7
- data/lib/decidim/term_customizer/loader.rb +24 -18
- data/lib/decidim/term_customizer/version.rb +2 -2
- metadata +16 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5a77220e9577102ab82115a6c3ebbf2442a111cc5864009616c0d5ccf0e033a
|
4
|
+
data.tar.gz: 5751bee8bf851e2ad497af464031aec1bd181d405bbd4c762b03a808d44bfea0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa8ccd59c3bbcf8a3ef1d7aec807aea4a05ed38f8dfa8ca4d5bee82f4f10e8d3cd506f148003a3f44e19a6558ebc270683b580e5b75d0c0ee7b419c5b2175162
|
7
|
+
data.tar.gz: b5f6f3cd6c5422bab4b38189145ae8810e5cfadf1551e10d42bf42c9296cde1b7542447f100e4784e09676861f967bd4a4768b8b0b7e1c564933e20c513c4444
|
@@ -14,7 +14,7 @@ module Decidim
|
|
14
14
|
translatable_attribute :value, String
|
15
15
|
|
16
16
|
validates :key, presence: true
|
17
|
-
validates :key, format: { with: %r{\A([a-z0-9_
|
17
|
+
validates :key, format: { with: %r{\A([a-z0-9_/\?\-]+\.)*[a-z0-9_/\?\-]+\z} }, unless: -> { key.blank? }
|
18
18
|
validates :value, translatable_presence: true
|
19
19
|
validate :key_uniqueness
|
20
20
|
|
@@ -10,7 +10,7 @@ module Decidim
|
|
10
10
|
|
11
11
|
validates :locale, presence: true
|
12
12
|
validates :key, presence: true
|
13
|
-
validates :key, format: { with: %r{\A([a-z0-9_
|
13
|
+
validates :key, format: { with: %r{\A([a-z0-9_/\?\-]+\.)*[a-z0-9_/\?\-]+\z} }, unless: -> { key.blank? }
|
14
14
|
validates :key, uniqueness: { scope: [:translation_set, :locale] }, unless: -> { key.blank? }
|
15
15
|
|
16
16
|
class << self
|
@@ -0,0 +1,134 @@
|
|
1
|
+
cs:
|
2
|
+
activemodel:
|
3
|
+
attributes:
|
4
|
+
constraint:
|
5
|
+
component_id: Komponenta
|
6
|
+
subject_id: Účastnický prostor
|
7
|
+
subject_manifest: Typ účastnického prostoru
|
8
|
+
translation:
|
9
|
+
key: Překladový klíč
|
10
|
+
value: Vlastní termín
|
11
|
+
translation_set:
|
12
|
+
name: Název
|
13
|
+
translations_import:
|
14
|
+
file: Importovat soubor
|
15
|
+
errors:
|
16
|
+
models:
|
17
|
+
translations_import:
|
18
|
+
attributes:
|
19
|
+
file:
|
20
|
+
invalid_mime_type: 'Neplatný typ souboru. Přijatelné formáty jsou: %{valid_mime_types}'
|
21
|
+
decidim:
|
22
|
+
term_customizer:
|
23
|
+
admin:
|
24
|
+
actions:
|
25
|
+
add_multiple_translations: Přidat více
|
26
|
+
back: Zpět
|
27
|
+
cancel: Zrušit
|
28
|
+
clear_cache: Vymazat mezipaměť
|
29
|
+
confirm_duplicate: Opravdu chcete duplikovat tuto sadu?
|
30
|
+
duplicate: Duplikovat
|
31
|
+
help: Nápověda
|
32
|
+
import: Importovat
|
33
|
+
new_translation: Nový překlad
|
34
|
+
new_translation_set: Nová sada překladů
|
35
|
+
view: Zobrazit
|
36
|
+
add_translations:
|
37
|
+
index:
|
38
|
+
add: Přidat
|
39
|
+
help_html: <p>Začněte zadáním několika písmen ve výrazu, který chcete změnit ve vyhledávacím panelu. Počkejte několik sekund a seznam všech překladů, které odpovídají vašemu vyhledávání, se zobrazí pod vyhledávacím polem. Klikněte na překlady v tomto seznamu, které chcete změnit. Zobrazí se pod vyhledávacím polem v seznamu překladů, které mají být přidány.</p> <p>Jakmile přidáte všechny překlady, které chcete změnit, klikněte na tlačítko "%{button_name}" v dolní části obrazovky.</p>
|
40
|
+
help_title: Jak hledat překlady?
|
41
|
+
search: Hledat
|
42
|
+
caches:
|
43
|
+
clear:
|
44
|
+
success: Mezipaměť úspěšně vymazána
|
45
|
+
models:
|
46
|
+
translation_sets:
|
47
|
+
fields:
|
48
|
+
name: Název
|
49
|
+
translations:
|
50
|
+
fields:
|
51
|
+
key: Překladový klíč
|
52
|
+
original_term: Původní termín
|
53
|
+
term: Vlastní termín
|
54
|
+
titles:
|
55
|
+
add_multiple_translations: Přidat více
|
56
|
+
translation_sets: Překladové sady
|
57
|
+
translations: Překlady
|
58
|
+
translation_sets:
|
59
|
+
constraint_fields:
|
60
|
+
constraint: Omezení
|
61
|
+
remove: Smazat
|
62
|
+
create:
|
63
|
+
error: Chyba při vytváření překladové sady.
|
64
|
+
success: Překlad byl úspěšně vytvořen.
|
65
|
+
destroy:
|
66
|
+
success: Překladová sada byla úspěšně odstraněna.
|
67
|
+
duplicate:
|
68
|
+
copied_set_name: Kopie %{name}
|
69
|
+
error: Chyba při duplikování překladové sady.
|
70
|
+
success: Překladová sada byla úspěšně duplikována.
|
71
|
+
edit:
|
72
|
+
save: Uložit
|
73
|
+
title: Překladová sada
|
74
|
+
form:
|
75
|
+
add_constraint: Přidat omezení
|
76
|
+
constraint_help_html: <p>Omezení jsou specifická pravidla, která vám umožňují použít vlastní nastavení v nastaveném kontextu.</p> <p>V případě, že nedefinujete žádná pravidla vazeb, budou přizpůsobení v této sadě platit pro celou aplikaci. Na druhé straně, pokud chcete, aby se přizpůsobení v této sadě vztahovalo pouze na konkrétní proces, jako participační prostor vyberte „účastnické procesy“ a cílový proces. Kromě toho můžete také použít přizpůsobení na určitou komponentu definováním komponenty pro omezení.</p> <p>Pokud definujete více vazeb, budou aplikovány na všechny tyto vazby.</p>
|
77
|
+
constraint_help_title: Co jsou omezení?
|
78
|
+
help_html: <p>sada překladů je "kontejner", který obsahuje překlady pro konkrétní kontext, který chcete upravit.</p> <p>Překlad vám pomůže uspořádat si vlastní nastavení a aplikovat je na různé kontexty. To vám umožní přizpůsobit stejný překlad rozdílně v různých kontextech.</p> <p>Například, pokud chcete přizpůsobit tlačítko s termínem "Přidat" odlišně pro různé participační procesy, můžete vytvořit samostatné sady překladů pro oba procesy a použít nastavení pro tyto procesy pomocí omezení.</p>
|
79
|
+
help_title: Co je to překladová sada?
|
80
|
+
title: Překladová sada
|
81
|
+
index:
|
82
|
+
no_records_html: <p>Žádné překladové sady nejsou k dispozici.</p> <p>Začněte přidáním překladové sady tlačítkem "<a href="%{new_set_link}">%{button_name}</a>.</p>
|
83
|
+
new:
|
84
|
+
create: Vytvořit
|
85
|
+
title: Překladové sady
|
86
|
+
update:
|
87
|
+
error: Chyba při aktualizaci překladové sady.
|
88
|
+
success: Překlad byl úspěšně aktualizován.
|
89
|
+
translations:
|
90
|
+
create:
|
91
|
+
error: Chyba při vytváření překladu.
|
92
|
+
success: Překlad byl úspěšně vytvořen.
|
93
|
+
destroy:
|
94
|
+
success: Překlad byl úspěšně odstraněn.
|
95
|
+
edit:
|
96
|
+
save: Uložit
|
97
|
+
title: Překlad
|
98
|
+
form:
|
99
|
+
help_html: <p>Překladový klíč je technickým odkazem na překlad, který má být přeložen. Toto není termín, který chcete změnit, ale technický klíč, který odkazuje na tento překlad.</p> <p>Například pokud chcete změnit termín <em>"Procesy"</em> v horním menu, byste použili klíč <em>"decidim.menu.processes"</em>.</p> <p><a href="https://guides.rubyonrails.org/i18n.html" target="_blank"> Přečtěte si více o Rails Internationalization</a>.</p>
|
100
|
+
help_title: Co je překladový klíč?
|
101
|
+
term_help_html: "<p>Nastavený termín je poslední slovo, které se chcete objevit v uživatelském rozhraní namísto původního výrazu. Přizpůsobený termín se samozřejmě může lišit pro každý povolený jazyk.</p>"
|
102
|
+
term_help_title: Co je upravený termín?
|
103
|
+
title: Překlad
|
104
|
+
import:
|
105
|
+
error: Chyba při importu překladů
|
106
|
+
success: Překlady byly úspěšně importovány.
|
107
|
+
index:
|
108
|
+
actions: Akce
|
109
|
+
no_records_html: <p>V této sadě nejsou k dispozici žádné překlady.</p> <p>Začněte přidáním překladů do této sady. Nejjednodušším způsobem je použít tlačítko "<a href="%{add_multiple_link}">%{button_name}</a>, kde můžete vyhledávat překlady se stejnými termíny, jaké vidíte v uživatelském rozhraní.</p>
|
110
|
+
selected: vybráno
|
111
|
+
new:
|
112
|
+
create: Vytvořit
|
113
|
+
title: Překlady
|
114
|
+
new_import:
|
115
|
+
accepted_mime_types:
|
116
|
+
csv: CSV
|
117
|
+
json: JSON
|
118
|
+
xls: XLS
|
119
|
+
file_legend: 'Přidat importovaný soubor, který bude zpracován pro překlady. Podporované formáty jsou: %{valid_mime_types}'
|
120
|
+
start_import: Zahájit import
|
121
|
+
title: Importovat překlady
|
122
|
+
zip_hint: Můžete také nahrát ZIP soubor z exportu překladů.
|
123
|
+
update:
|
124
|
+
error: Chyba při aktualizaci překladu.
|
125
|
+
success: Překlad byl úspěšně aktualizován.
|
126
|
+
translations_destroys:
|
127
|
+
destroy:
|
128
|
+
error: Chyba při odstraňování překladů.
|
129
|
+
success: Překlady byly úspěšně odstraněny.
|
130
|
+
new:
|
131
|
+
destroy: Vymazat
|
132
|
+
title: Smazat překlady
|
133
|
+
menu:
|
134
|
+
term_customizer: Úprava termínů
|
data/config/locales/fr.yml
CHANGED
@@ -11,33 +11,33 @@ fr:
|
|
11
11
|
translation_set:
|
12
12
|
name: Nom
|
13
13
|
translations_import:
|
14
|
-
file:
|
14
|
+
file: Importer un fichier
|
15
15
|
errors:
|
16
16
|
models:
|
17
17
|
translations_import:
|
18
18
|
attributes:
|
19
19
|
file:
|
20
|
-
invalid_mime_type: '
|
20
|
+
invalid_mime_type: 'Type de document invalide. Les formats acceptés sont: %{valid_mime_types}'
|
21
21
|
decidim:
|
22
22
|
term_customizer:
|
23
23
|
admin:
|
24
24
|
actions:
|
25
25
|
add_multiple_translations: Ajouter plusieurs
|
26
26
|
back: Retour
|
27
|
-
cancel:
|
27
|
+
cancel: Annuler
|
28
28
|
clear_cache: Purger le cache
|
29
|
-
confirm_duplicate:
|
30
|
-
duplicate:
|
31
|
-
help:
|
32
|
-
import:
|
29
|
+
confirm_duplicate: Êtes-vous sûr de vouloir dupliquer cet ensemble ?
|
30
|
+
duplicate: Dupliquer
|
31
|
+
help: Aide
|
32
|
+
import: Importer
|
33
33
|
new_translation: Nouvelle traduction
|
34
34
|
new_translation_set: Nouveau jeu de traduction
|
35
|
-
view:
|
35
|
+
view: Afficher
|
36
36
|
add_translations:
|
37
37
|
index:
|
38
38
|
add: Ajouter
|
39
|
-
help_html: <p>
|
40
|
-
help_title:
|
39
|
+
help_html: <p>Commencez par taper quelques lettres apparaissant dans le terme que vous souhaitez modifier dans le panneau de recherche. Attendez quelques secondes et une liste de toutes les traductions correspondant à votre recherche sera affichée sous le champ de recherche. Cliquez sur les traductions dans cette liste que vous souhaitez modifier. Elles apparaîtront sous le champ de recherche dans la liste des traductions à ajouter.</p> <p>Une fois que vous avez ajouté toutes les traductions que vous voulez modifier, cliquez sur le bouton "%{button_name}" en bas de l'écran.</p>
|
40
|
+
help_title: Comment rechercher des traductions ?
|
41
41
|
search: Rechercher
|
42
42
|
caches:
|
43
43
|
clear:
|
@@ -65,21 +65,21 @@ fr:
|
|
65
65
|
destroy:
|
66
66
|
success: Le jeu de traduction a été supprimé.
|
67
67
|
duplicate:
|
68
|
-
copied_set_name:
|
69
|
-
error:
|
70
|
-
success:
|
68
|
+
copied_set_name: Copie de %{name}
|
69
|
+
error: Erreur lors de la duplication du jeu de traduction.
|
70
|
+
success: Ensemble de traduction dupliqué avec succès.
|
71
71
|
edit:
|
72
72
|
save: Sauvegarder
|
73
73
|
title: Jeu de traductions
|
74
74
|
form:
|
75
75
|
add_constraint: Ajouter contrainte
|
76
|
-
constraint_help_html: <p>
|
77
|
-
constraint_help_title:
|
78
|
-
help_html: <p>
|
79
|
-
help_title:
|
76
|
+
constraint_help_html: <p>Les contraintes sont des règles spécifiques qui vous permettent d'appliquer les personnalisations dans un ensemble à un contexte spécifique.</p> <p>Si vous ne définissez aucune règle de contrainte, les personnalisations de cet ensemble s'appliqueront à l'ensemble de l'application. Par contre, si vous voulez que les personnalisations de cet ensemble s'appliquent uniquement à un processus spécifique, sélectionnez "Processus participatifs" comme type d'espace participatif et le processus cible comme espace participatif. De plus, vous pouvez également appliquer les personnalisations à un composant spécifique en définissant le composant de la contrainte.</p> <p>Si vous définissez plusieurs contraintes, les personnalisations s'appliqueront à tous ceux-ci.</p>
|
77
|
+
constraint_help_title: Quelles sont les contraintes?
|
78
|
+
help_html: <p>Un jeu de traduction est un "conteneur" qui contient les traductions pour un contexte spécifique que vous souhaitez personnaliser.</p> <p>Les ensembles de traduction vous aident à organiser vos personnalisations et à les appliquer à différents contextes. Cela vous permet de personnaliser la même traduction différemment dans différents contextes.</p> <p>Par exemple, si vous voulez personnaliser un bouton avec le terme "Ajouter" différemment pour différents processus participatifs, vous pouvez créer des ensembles de traduction séparés pour les deux processus et appliquer l'ensemble à ces processus en utilisant les contraintes.</p>
|
79
|
+
help_title: Qu'est-ce qu'un ensemble de traductions ?
|
80
80
|
title: Jeu de traductions
|
81
81
|
index:
|
82
|
-
no_records_html: <p>
|
82
|
+
no_records_html: <p>Aucune ensemble de traduction disponible.</p> <p>Commencez par ajouter une traduction définie à partir du bouton "<a href="%{new_set_link}">%{button_name}</a>.</p>
|
83
83
|
new:
|
84
84
|
create: Créer
|
85
85
|
title: Jeu de traductions
|
@@ -96,18 +96,18 @@ fr:
|
|
96
96
|
save: Sauvegarder
|
97
97
|
title: Traduction
|
98
98
|
form:
|
99
|
-
help_html: <p>
|
100
|
-
help_title:
|
101
|
-
term_help_html: "<p>
|
102
|
-
term_help_title:
|
99
|
+
help_html: <p>Une clé de traduction est une référence technique à la traduction à traduire. Ce n'est pas le terme que vous voulez changer, mais la clé technique qui fait référence à cette traduction.</p> <p>Par exemple, si vous voulez changer le terme <em>"Processus"</em> dans le menu supérieur, vous utiliseriez la clé <em>"decidim. enu.processes"</em>.</p> <p><a href="https://guides.rubyonrails.org/i18n.html" target="_blank"> En savoir plus sur l'internationalisation Rails</a>.</p>
|
100
|
+
help_title: Qu'est-ce que la clé de traduction ?
|
101
|
+
term_help_html: "<p>Le terme personnalisé est le dernier mot que vous voudriez apparaître dans l'interface utilisateur au lieu du terme original. Évidemment, le terme personnalisé peut différer pour chaque langue activée.</p>"
|
102
|
+
term_help_title: Qu'est-ce qu'un terme personnalisé ?
|
103
103
|
title: Traduction
|
104
104
|
import:
|
105
|
-
error:
|
106
|
-
success:
|
105
|
+
error: Erreur lors de l'importation des traductions
|
106
|
+
success: Traductions importées avec succès.
|
107
107
|
index:
|
108
108
|
actions: Actions
|
109
|
-
no_records_html: <p>
|
110
|
-
selected:
|
109
|
+
no_records_html: <p>Aucune traduction disponible dans cet ensemble.</p> <p>Commencez par ajouter des traductions à cet ensemble. La façon la plus simple est d'utiliser le bouton "<a href="%{add_multiple_link}">%{button_name}</a>" où vous pouvez rechercher des traductions avec les mêmes termes que ceux que vous voyez dans l'interface utilisateur.</p>
|
110
|
+
selected: sélectionné
|
111
111
|
new:
|
112
112
|
create: Créer
|
113
113
|
title: Traductions
|
@@ -116,19 +116,19 @@ fr:
|
|
116
116
|
csv: CSV
|
117
117
|
json: JSON
|
118
118
|
xls: XLS
|
119
|
-
file_legend: '
|
120
|
-
start_import:
|
121
|
-
title:
|
122
|
-
zip_hint:
|
119
|
+
file_legend: 'Ajouter un fichier d''importation qui sera analysé pour les traductions. Les formats supportés sont: %{valid_mime_types}'
|
120
|
+
start_import: Démarrer l'import
|
121
|
+
title: Importer des traductions
|
122
|
+
zip_hint: Vous pouvez également télécharger le fichier ZIP à partir de l'export des traductions.
|
123
123
|
update:
|
124
124
|
error: Une erreur a lieu durant la mise à jour de la traduction.
|
125
125
|
success: Traduction mis à jour avec succès.
|
126
126
|
translations_destroys:
|
127
127
|
destroy:
|
128
|
-
error:
|
129
|
-
success:
|
128
|
+
error: Erreur lors de la suppression des traductions.
|
129
|
+
success: Traductions supprimées avec succès.
|
130
130
|
new:
|
131
|
-
destroy:
|
132
|
-
title:
|
131
|
+
destroy: Supprimer
|
132
|
+
title: Traduction supprimées
|
133
133
|
menu:
|
134
134
|
term_customizer: Paramétrages des traductions
|
@@ -0,0 +1,134 @@
|
|
1
|
+
it:
|
2
|
+
activemodel:
|
3
|
+
attributes:
|
4
|
+
constraint:
|
5
|
+
component_id: Componente
|
6
|
+
subject_id: Spazio partecipativo
|
7
|
+
subject_manifest: Tipo di spazio partecipativo
|
8
|
+
translation:
|
9
|
+
key: Chiave di traduzione
|
10
|
+
value: Termine personalizzato
|
11
|
+
translation_set:
|
12
|
+
name: Nome
|
13
|
+
translations_import:
|
14
|
+
file: Importa File
|
15
|
+
errors:
|
16
|
+
models:
|
17
|
+
translations_import:
|
18
|
+
attributes:
|
19
|
+
file:
|
20
|
+
invalid_mime_type: 'Tipo di file non valido. I formati accettati sono: %{valid_mime_types}'
|
21
|
+
decidim:
|
22
|
+
term_customizer:
|
23
|
+
admin:
|
24
|
+
actions:
|
25
|
+
add_multiple_translations: Aggiungi più
|
26
|
+
back: Indietro
|
27
|
+
cancel: Annulla
|
28
|
+
clear_cache: Cancella Cache
|
29
|
+
confirm_duplicate: Sei sicuro di voler duplicare questo set?
|
30
|
+
duplicate: Duplica
|
31
|
+
help: Guida
|
32
|
+
import: Importa
|
33
|
+
new_translation: Nuova traduzione
|
34
|
+
new_translation_set: Nuovo set di traduzione
|
35
|
+
view: Visualizza
|
36
|
+
add_translations:
|
37
|
+
index:
|
38
|
+
add: Aggiungi
|
39
|
+
help_html: <p>Inizia digitando un paio di lettere che appaiono nel termine che vuoi cambiare nel pannello di ricerca. Attendere alcuni secondi e una lista di tutte le traduzioni corrispondenti alla ricerca verrà visualizzata sotto il campo di ricerca. Fare clic sulle traduzioni nella lista che si desidera modificare. Esse appariranno sotto il campo di ricerca nell'elenco delle traduzioni da aggiungere.</p> <p>Una volta che hai aggiunto tutte le traduzioni che vuoi cambiare, clicca sul pulsante "%{button_name}" nella parte inferiore dello schermo.</p>
|
40
|
+
help_title: Come cercare le traduzioni?
|
41
|
+
search: Search
|
42
|
+
caches:
|
43
|
+
clear:
|
44
|
+
success: Cache cancellata con successo
|
45
|
+
models:
|
46
|
+
translation_sets:
|
47
|
+
fields:
|
48
|
+
name: Nome
|
49
|
+
translations:
|
50
|
+
fields:
|
51
|
+
key: Chiave di traduzione
|
52
|
+
original_term: Termine originale
|
53
|
+
term: Termine personalizzato
|
54
|
+
titles:
|
55
|
+
add_multiple_translations: Aggiungi più
|
56
|
+
translation_sets: Set di traduzione
|
57
|
+
translations: Traduzioni
|
58
|
+
translation_sets:
|
59
|
+
constraint_fields:
|
60
|
+
constraint: Vincolo
|
61
|
+
remove: Elimina
|
62
|
+
create:
|
63
|
+
error: Errore nella creazione della traduzione.
|
64
|
+
success: Set di traduzioni creato con successo.
|
65
|
+
destroy:
|
66
|
+
success: Set di traduzioni eliminato con successo.
|
67
|
+
duplicate:
|
68
|
+
copied_set_name: Copia di %{name}
|
69
|
+
error: Errore nella duplicazione della traduzione.
|
70
|
+
success: Set di traduzioni duplicato con successo.
|
71
|
+
edit:
|
72
|
+
save: Salva
|
73
|
+
title: Set di traduzioni
|
74
|
+
form:
|
75
|
+
add_constraint: Aggiungi vincolo
|
76
|
+
constraint_help_html: <p>I vincoli sono regole specifiche che consentono di applicare le personalizzazioni in un set a un contesto specifico.</p> <p>Nel caso in cui non si definiscano regole vincolanti, le personalizzazioni in questo set si applicheranno all'intera applicazione. D'altra parte, se si desidera che le personalizzazioni in questo set si applichino solo a un processo specifico, selezionare "Processi partecipativi" come tipo di spazio partecipativo e il processo di destinazione come spazio partecipativo. Inoltre, è anche possibile applicare le personalizzazioni a un componente specifico definendo il componente per il vincolo.</p> <p>Se definisci più vincoli, le personalizzazioni si applicheranno in tutti questi.</p>
|
77
|
+
constraint_help_title: Quali sono i vincoli?
|
78
|
+
help_html: <p>Un set di traduzioni è un "contenitore" che contiene le traduzioni per un contesto specifico che si desidera personalizzare.</p> <p>I set di traduzioni ti aiutano a organizzare le tue personalizzazioni e applicarle a contesti diversi. Questo consente di personalizzare la stessa traduzione in diversi contesti.</p> <p>Ad esempio, se si desidera personalizzare un pulsante con il termine "Aggiungi" in modo diverso per i diversi processi partecipativi, è possibile creare set di traduzioni separati per entrambi i processi e applicare il set a quei processi utilizzando i vincoli.</p>
|
79
|
+
help_title: Cos'è un set di traduzione?
|
80
|
+
title: Set di traduzioni
|
81
|
+
index:
|
82
|
+
no_records_html: <p>Nessun set di traduzione disponibile.</p> <p>Inizia aggiungendo un set di traduzioni dal pulsante "<a href="%{new_set_link}">%{button_name}</a>".</p>
|
83
|
+
new:
|
84
|
+
create: Crea
|
85
|
+
title: Set di traduzione
|
86
|
+
update:
|
87
|
+
error: Error updating translation set.
|
88
|
+
success: Translation set successfully updated.
|
89
|
+
translations:
|
90
|
+
create:
|
91
|
+
error: Error creating translation.
|
92
|
+
success: Translation successfully created.
|
93
|
+
destroy:
|
94
|
+
success: Translation successfully deleted.
|
95
|
+
edit:
|
96
|
+
save: Save
|
97
|
+
title: Translation
|
98
|
+
form:
|
99
|
+
help_html: <p>A translation key is a technical reference to the translation to be translatated. This is not the term you want to change but the technical key that refers to that translation.</p> <p>For example, if you want to change the term <em>"Processes"</em> in the top menu, you would use the key <em>"decidim.menu.processes"</em>.</p> <p><a href="https://guides.rubyonrails.org/i18n.html" target="_blank"> Read more about Rails Internationalization</a>.</p>
|
100
|
+
help_title: What is translation key?
|
101
|
+
term_help_html: "<p>The customized term is the final word you want to appear in the UI instead of the original term. Obviously, the customized term can differ for each enabled language.</p>"
|
102
|
+
term_help_title: What is customized term?
|
103
|
+
title: Translation
|
104
|
+
import:
|
105
|
+
error: Error importing translations
|
106
|
+
success: Translations successfully imported.
|
107
|
+
index:
|
108
|
+
actions: Actions
|
109
|
+
no_records_html: <p>No translations available in this set.</p> <p>Start by adding translations to this set. The easiest way is to use the "<a href="%{add_multiple_link}">%{button_name}</a>" button where you can search translations with the same terms that you see in the UI.</p>
|
110
|
+
selected: selected
|
111
|
+
new:
|
112
|
+
create: Create
|
113
|
+
title: Translations
|
114
|
+
new_import:
|
115
|
+
accepted_mime_types:
|
116
|
+
csv: CSV
|
117
|
+
json: JSON
|
118
|
+
xls: XLS
|
119
|
+
file_legend: 'Add an import file that will be parsed for translations. Suported formats are: %{valid_mime_types}'
|
120
|
+
start_import: Start import
|
121
|
+
title: Import translations
|
122
|
+
zip_hint: You can also upload the ZIP file from the translations export.
|
123
|
+
update:
|
124
|
+
error: Error updating translation.
|
125
|
+
success: Translation successfully updated.
|
126
|
+
translations_destroys:
|
127
|
+
destroy:
|
128
|
+
error: Error deleting translations.
|
129
|
+
success: Translations successfully deleted.
|
130
|
+
new:
|
131
|
+
destroy: Delete
|
132
|
+
title: Translations delete
|
133
|
+
menu:
|
134
|
+
term_customizer: Term customizer
|
@@ -13,13 +13,15 @@ module Decidim
|
|
13
13
|
# E.g. at the participatory process controller the
|
14
14
|
# `decidim.current_participatory_space` environment variable has not
|
15
15
|
# been set. Therefore, we need to fetch it directly from the
|
16
|
-
# controller using its private method.
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
# controller using its private method. In some edge cases this may not
|
17
|
+
# be implemented (https://github.com/mainio/decidim-module-term_customizer/issues/28)
|
18
|
+
# in which case we do not have access to the participatory space.
|
19
|
+
if controller.respond_to?(:current_participatory_space, true)
|
20
|
+
@space = controller.send(
|
21
|
+
:current_participatory_space
|
22
|
+
)
|
23
|
+
end
|
24
|
+
@space ||= env["decidim.current_participatory_space"]
|
23
25
|
|
24
26
|
@component = env["decidim.current_component"]
|
25
27
|
end
|
@@ -32,24 +32,29 @@ module Decidim
|
|
32
32
|
# This will also cache the results and fetch the result directly from
|
33
33
|
# cache on consequent calls until the cache is expired.
|
34
34
|
def translations_hash
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
35
|
+
# In order to avoid endless loops with cache logging calling the I18n
|
36
|
+
# calling the translation loader, calling cache logging calling I18n
|
37
|
+
# (etc.), temporarily mute the cache logging during this call. If the
|
38
|
+
# cache logging level is set to `Logger::DEBUG`, it could happen as
|
39
|
+
# explained at:
|
40
|
+
# https://github.com/mainio/decidim-module-term_customizer/issues/38
|
41
|
+
@translations_hash ||= Rails.cache.mute do
|
42
|
+
Rails.cache.fetch(cache_key, expires_in: 24.hours) do
|
43
|
+
final_hash = {}
|
44
|
+
resolver.translations.each do |tr|
|
45
|
+
keyparts = [tr.locale] + tr.key.split(".")
|
46
|
+
lastkey = keyparts.pop.to_sym
|
43
47
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
48
|
+
current = final_hash
|
49
|
+
keyparts.each do |key|
|
50
|
+
current[key.to_sym] ||= {}
|
51
|
+
current = current[key.to_sym]
|
52
|
+
end
|
49
53
|
|
50
|
-
|
54
|
+
current[lastkey] = tr.value
|
55
|
+
end
|
56
|
+
final_hash
|
51
57
|
end
|
52
|
-
final_hash
|
53
58
|
end
|
54
59
|
end
|
55
60
|
|
@@ -57,9 +62,10 @@ module Decidim
|
|
57
62
|
# the resolver.
|
58
63
|
def clear_cache
|
59
64
|
Rails.cache.delete_matched("#{cache_key_base}/*")
|
60
|
-
rescue NotImplementedError
|
61
|
-
# Some cache store, such as `ActiveSupport::Cache::MemCacheStore`
|
62
|
-
# support `delete_matched`.
|
65
|
+
rescue NotImplementedError, NoMethodError
|
66
|
+
# Some cache store, such as `ActiveSupport::Cache::MemCacheStore` or
|
67
|
+
# `ActiveSupport::Cache::DalliStore` do not support `delete_matched`.
|
68
|
+
# Therefore, clear all the possibly existing
|
63
69
|
# cache keys manually for each space and component.
|
64
70
|
|
65
71
|
# Clear all the "organization" translation keys.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-term_customizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Antti Hukkanen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: decidim-admin
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.22.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.22.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: decidim-core
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.22.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.22.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: dalli
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,56 +64,56 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: 0.
|
67
|
+
version: 0.22.0
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0.
|
74
|
+
version: 0.22.0
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: decidim-dev
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0.
|
81
|
+
version: 0.22.0
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.
|
88
|
+
version: 0.22.0
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: decidim-participatory_processes
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
93
|
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.
|
95
|
+
version: 0.22.0
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: 0.
|
102
|
+
version: 0.22.0
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: decidim-proposals
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: 0.
|
109
|
+
version: 0.22.0
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
114
|
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: 0.
|
116
|
+
version: 0.22.0
|
117
117
|
description: Adds a UI to customize the terms and limit the customizations to specific
|
118
118
|
places.
|
119
119
|
email:
|
@@ -180,10 +180,12 @@ files:
|
|
180
180
|
- app/views/decidim/term_customizer/admin/translations/new_import.html.erb
|
181
181
|
- app/views/decidim/term_customizer/admin/translations_destroys/new.html.erb
|
182
182
|
- config/locales/ca.yml
|
183
|
+
- config/locales/cs.yml
|
183
184
|
- config/locales/en.yml
|
184
185
|
- config/locales/es.yml
|
185
186
|
- config/locales/fi.yml
|
186
187
|
- config/locales/fr.yml
|
188
|
+
- config/locales/it.yml
|
187
189
|
- config/locales/sv.yml
|
188
190
|
- db/migrate/20190217132503_create_decidim_term_customizer_translation_sets.rb
|
189
191
|
- db/migrate/20190217132654_create_decidim_term_customizer_translations.rb
|