@saooti/octopus-sdk 31.0.1 → 31.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -1
- package/index.ts +8 -2
- package/package.json +3 -3
- package/src/assets/general.scss +8 -0
- package/src/assets/share.scss +21 -0
- package/src/components/display/categories/CategoryFilter.vue +10 -8
- package/src/components/display/categories/CategoryList.vue +26 -24
- package/src/components/display/comments/CommentInput.vue +21 -19
- package/src/components/display/comments/CommentList.vue +2 -0
- package/src/components/display/comments/CommentPlayer.vue +2 -0
- package/src/components/display/emission/EmissionInlineList.vue +32 -29
- package/src/components/display/emission/EmissionList.vue +12 -8
- package/src/components/display/emission/EmissionPlayerItem.vue +16 -1
- package/src/components/display/filter/AdvancedSearch.vue +2 -0
- package/src/components/display/filter/ProductorSearch.vue +6 -1
- package/src/components/display/live/LiveHorizontalList.vue +1 -1
- package/src/components/display/live/LiveItem.vue +2 -1
- package/src/components/display/live/LiveList.vue +51 -41
- package/src/components/display/organisation/OrganisationChooser.vue +1 -1
- package/src/components/display/organisation/OrganisationChooserLight.vue +28 -19
- package/src/components/display/participant/ParticipantItem.vue +2 -0
- package/src/components/display/participant/ParticipantList.vue +30 -19
- package/src/components/display/playlist/PlaylistList.vue +12 -3
- package/src/components/display/playlist/PodcastList.vue +26 -16
- package/src/components/display/playlist/PodcastPlaylistInlineList.vue +204 -0
- package/src/components/display/podcasts/AnimatorsItem.vue +2 -0
- package/src/components/display/podcasts/ParticipantDescription.vue +1 -5
- package/src/components/display/podcasts/PodcastImage.vue +2 -1
- package/src/components/display/podcasts/PodcastInlineList.vue +40 -28
- package/src/components/display/podcasts/PodcastItem.vue +12 -0
- package/src/components/display/podcasts/PodcastList.vue +11 -3
- package/src/components/display/podcasts/PodcastPlayBar.vue +2 -0
- package/src/components/display/podcasts/TagList.vue +2 -0
- package/src/components/display/rubriques/RubriqueList.vue +3 -1
- package/src/components/display/sharing/PlayerParameters.vue +2 -0
- package/src/components/display/sharing/QrCode.vue +7 -0
- package/src/components/display/sharing/ShareDistribution.vue +2 -0
- package/src/components/display/sharing/SharePlayer.vue +2 -0
- package/src/components/form/ClassicSearch.vue +2 -0
- package/src/components/misc/ErrorMessage.vue +2 -0
- package/src/components/misc/Footer.vue +2 -0
- package/src/components/misc/LeftMenu.vue +2 -0
- package/src/components/misc/Player.vue +14 -0
- package/src/components/misc/PlayerButtons.vue +2 -14
- package/src/components/misc/PlayerClockAndTimeline.vue +2 -0
- package/src/components/misc/PlayerProgressBar.vue +2 -0
- package/src/components/misc/Popover.vue +5 -0
- package/src/components/misc/Snackbar.vue +2 -0
- package/src/components/misc/TopBar.vue +2 -0
- package/src/components/misc/modal/NewsletterModal.vue +11 -3
- package/src/components/misc/modal/ShareModalPlayer.vue +2 -0
- package/src/components/mixins/handle403.ts +17 -0
- package/src/components/pages/Emission.vue +17 -4
- package/src/components/pages/Error403Page.vue +24 -0
- package/src/components/pages/Participant.vue +19 -4
- package/src/components/pages/Playlist.vue +17 -3
- package/src/components/pages/Podcast.vue +28 -12
- package/src/components/pages/Podcasts.vue +4 -0
- package/src/locale/en.ts +1 -0
- package/src/locale/fr.ts +1 -0
- package/src/locale/it.ts +298 -0
- package/src/locale/messages.ts +2 -0
- package/src/main.ts +1 -1
- package/src/router/router.ts +6 -0
- package/src/store/class/general/organisation.ts +1 -0
- package/src/store/paramStore.ts +5 -2
|
@@ -103,9 +103,11 @@
|
|
|
103
103
|
import octopusApi from '@saooti/octopus-api';
|
|
104
104
|
import { state } from '../../store/paramStore';
|
|
105
105
|
import { displayMethods } from '../mixins/functions';
|
|
106
|
+
import { handle403 } from '../mixins/handle403';
|
|
106
107
|
import { Emission } from '@/store/class/general/emission';
|
|
107
108
|
import ClassicLoading from '../form/ClassicLoading.vue';
|
|
108
109
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
110
|
+
import { AxiosError } from 'axios';
|
|
109
111
|
const PodcastFilterList = defineAsyncComponent(() => import('../display/podcasts/PodcastFilterList.vue'));
|
|
110
112
|
const SharePlayer = defineAsyncComponent(() => import('../display/sharing/SharePlayer.vue'));
|
|
111
113
|
const ShareButtons = defineAsyncComponent(() => import('../display/sharing/ShareButtons.vue'));
|
|
@@ -126,7 +128,7 @@ export default defineComponent({
|
|
|
126
128
|
LiveHorizontalList,
|
|
127
129
|
ClassicLoading
|
|
128
130
|
},
|
|
129
|
-
mixins: [displayMethods],
|
|
131
|
+
mixins: [displayMethods, handle403],
|
|
130
132
|
props: {
|
|
131
133
|
emissionId: { default: undefined, type: Number},
|
|
132
134
|
isEducation: { default: false, type: Boolean},
|
|
@@ -220,6 +222,9 @@ export default defineComponent({
|
|
|
220
222
|
}
|
|
221
223
|
return count;
|
|
222
224
|
},
|
|
225
|
+
filterOrga(): string {
|
|
226
|
+
return this.$store.state.filter.organisationId;
|
|
227
|
+
},
|
|
223
228
|
},
|
|
224
229
|
watch: {
|
|
225
230
|
emissionId(): void {
|
|
@@ -231,12 +236,20 @@ export default defineComponent({
|
|
|
231
236
|
this.getEmissionDetails();
|
|
232
237
|
},
|
|
233
238
|
methods: {
|
|
239
|
+
initError():void{
|
|
240
|
+
this.error = true;
|
|
241
|
+
this.loaded = true;
|
|
242
|
+
},
|
|
234
243
|
async getEmissionDetails(): Promise<void> {
|
|
235
244
|
this.loaded = false;
|
|
236
245
|
this.error = false;
|
|
237
246
|
try {
|
|
238
247
|
const data: Emission = await octopusApi.fetchEmission(this.emissionId);
|
|
239
248
|
this.emission = data;
|
|
249
|
+
if(this.emission.orga.private && this.filterOrga!==this.emission.orga.id){
|
|
250
|
+
this.initError();
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
240
253
|
this.$emit('emissionTitle', this.name);
|
|
241
254
|
this.loaded = true;
|
|
242
255
|
if (!this.emission.annotations) return;
|
|
@@ -252,9 +265,9 @@ export default defineComponent({
|
|
|
252
265
|
this.notExclusive =
|
|
253
266
|
'true' === this.emission.annotations.notExclusive ? true : false;
|
|
254
267
|
}
|
|
255
|
-
} catch {
|
|
256
|
-
this.error
|
|
257
|
-
this.
|
|
268
|
+
} catch(error) {
|
|
269
|
+
this.handle403((error as AxiosError));
|
|
270
|
+
this.initError();
|
|
258
271
|
}
|
|
259
272
|
},
|
|
260
273
|
fetch(/* podcasts */) {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="page-box page-box-absolute bg-white justify-content-evenly">
|
|
3
|
+
<img
|
|
4
|
+
class="logo-octopus"
|
|
5
|
+
src="/img/logo_octopus_final.svg"
|
|
6
|
+
:alt="$t('Logo of main page')"
|
|
7
|
+
>
|
|
8
|
+
<h2>{{ $t('You do not have the right to access this page' ) }}</h2>
|
|
9
|
+
<a
|
|
10
|
+
class="btn btn-link"
|
|
11
|
+
href="/sso/logout"
|
|
12
|
+
>{{ $t('Logout') }}</a>
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<script lang="ts">
|
|
17
|
+
import { defineComponent } from 'vue';
|
|
18
|
+
export default defineComponent({
|
|
19
|
+
name: 'Error403Page',
|
|
20
|
+
mounted() {
|
|
21
|
+
document.title = this.$store.state.general.metaTitle;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
</script>
|
|
@@ -82,9 +82,11 @@
|
|
|
82
82
|
import octopusApi from '@saooti/octopus-api';
|
|
83
83
|
import { state } from '../../store/paramStore';
|
|
84
84
|
import { displayMethods } from '../mixins/functions';
|
|
85
|
+
import { handle403 } from '../mixins/handle403';
|
|
85
86
|
import { Participant } from '@/store/class/general/participant';
|
|
86
87
|
import ClassicLoading from '../form/ClassicLoading.vue';
|
|
87
88
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
89
|
+
import { AxiosError } from 'axios';
|
|
88
90
|
const ShareButtons = defineAsyncComponent(() => import('../display/sharing/ShareButtons.vue'));
|
|
89
91
|
const PodcastFilterList = defineAsyncComponent(() => import('../display/podcasts/PodcastFilterList.vue'));
|
|
90
92
|
const EditBox = defineAsyncComponent(() => import('@/components/display/edit/EditBox.vue'));
|
|
@@ -97,7 +99,7 @@ export default defineComponent({
|
|
|
97
99
|
PodcastList,
|
|
98
100
|
ClassicLoading
|
|
99
101
|
},
|
|
100
|
-
mixins: [displayMethods],
|
|
102
|
+
mixins: [displayMethods, handle403],
|
|
101
103
|
props: {
|
|
102
104
|
participantId: { default: undefined, type: Number},
|
|
103
105
|
},
|
|
@@ -160,6 +162,9 @@ export default defineComponent({
|
|
|
160
162
|
}
|
|
161
163
|
return false;
|
|
162
164
|
},
|
|
165
|
+
filterOrga(): string {
|
|
166
|
+
return this.$store.state.filter.organisationId;
|
|
167
|
+
},
|
|
163
168
|
},
|
|
164
169
|
watch: {
|
|
165
170
|
participant: {
|
|
@@ -173,16 +178,24 @@ export default defineComponent({
|
|
|
173
178
|
this.getParticipantDetails();
|
|
174
179
|
},
|
|
175
180
|
methods: {
|
|
181
|
+
initError():void{
|
|
182
|
+
this.error = true;
|
|
183
|
+
this.loaded = true;
|
|
184
|
+
},
|
|
176
185
|
async getParticipantDetails(): Promise<void> {
|
|
177
186
|
this.loaded = false;
|
|
178
187
|
try {
|
|
179
188
|
const data = await octopusApi.fetchParticipant(this.participantId ? this.participantId.toString(): "");
|
|
189
|
+
if(data && data.orga && data.orga.private && this.filterOrga!==data.orga.id){
|
|
190
|
+
this.initError();
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
180
193
|
this.participant = data;
|
|
181
194
|
this.$emit('participantTitle', this.name);
|
|
182
195
|
this.loaded = true;
|
|
183
|
-
} catch {
|
|
184
|
-
this.error
|
|
185
|
-
this.
|
|
196
|
+
} catch(error) {
|
|
197
|
+
this.handle403((error as AxiosError));
|
|
198
|
+
this.initError();
|
|
186
199
|
}
|
|
187
200
|
},
|
|
188
201
|
updateParticipant(participant: Participant): void {
|
|
@@ -194,10 +207,12 @@ export default defineComponent({
|
|
|
194
207
|
</script>
|
|
195
208
|
|
|
196
209
|
<style lang="scss">
|
|
210
|
+
.octopus-app{
|
|
197
211
|
@media (min-width: 950px) {
|
|
198
212
|
.participant-desc {
|
|
199
213
|
max-width: 50%;
|
|
200
214
|
line-height: 1.5em;
|
|
201
215
|
}
|
|
202
216
|
}
|
|
217
|
+
}
|
|
203
218
|
</style>
|
|
@@ -53,8 +53,10 @@ import PodcastList from '../display/playlist/PodcastList.vue';
|
|
|
53
53
|
import octopusApi from '@saooti/octopus-api';
|
|
54
54
|
import { state } from '../../store/paramStore';
|
|
55
55
|
import { displayMethods } from '../mixins/functions';
|
|
56
|
+
import { handle403 } from '../mixins/handle403';
|
|
56
57
|
import { Playlist } from '@/store/class/general/playlist';
|
|
57
58
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
59
|
+
import { AxiosError } from 'axios';
|
|
58
60
|
const ShareButtons = defineAsyncComponent(() => import('../display/sharing/ShareButtons.vue'));
|
|
59
61
|
const EditBox = defineAsyncComponent(() => import('@/components/display/edit/EditBox.vue'));
|
|
60
62
|
const SharePlayer = defineAsyncComponent(() => import('../display/sharing/SharePlayer.vue'));
|
|
@@ -66,7 +68,7 @@ export default defineComponent({
|
|
|
66
68
|
SharePlayer,
|
|
67
69
|
ClassicLoading
|
|
68
70
|
},
|
|
69
|
-
mixins:[displayMethods],
|
|
71
|
+
mixins:[displayMethods, handle403],
|
|
70
72
|
props: {
|
|
71
73
|
playlistId: { default: undefined, type: Number},
|
|
72
74
|
isEducation: { default: false, type: Boolean},
|
|
@@ -117,6 +119,9 @@ export default defineComponent({
|
|
|
117
119
|
}
|
|
118
120
|
return false;
|
|
119
121
|
},
|
|
122
|
+
filterOrga(): string {
|
|
123
|
+
return this.$store.state.filter.organisationId;
|
|
124
|
+
},
|
|
120
125
|
},
|
|
121
126
|
watch: {
|
|
122
127
|
playlistId() {
|
|
@@ -128,15 +133,24 @@ export default defineComponent({
|
|
|
128
133
|
this.getPlaylistDetails();
|
|
129
134
|
},
|
|
130
135
|
methods: {
|
|
136
|
+
initError():void{
|
|
137
|
+
this.error = true;
|
|
138
|
+
this.loaded = true;
|
|
139
|
+
},
|
|
131
140
|
async getPlaylistDetails(): Promise<void> {
|
|
132
141
|
try {
|
|
133
142
|
this.loaded = false;
|
|
134
143
|
this.error = false;
|
|
135
144
|
const data: Playlist = await octopusApi.fetchPlaylist(this.playlistId ? this.playlistId.toString(): "");
|
|
136
145
|
this.playlist = data;
|
|
146
|
+
if(this.playlist.organisation.private && this.filterOrga!==this.playlist.organisation.id){
|
|
147
|
+
this.initError();
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
137
150
|
this.$emit('playlistTitle', this.playlist.title);
|
|
138
|
-
} catch {
|
|
139
|
-
this.error
|
|
151
|
+
} catch(error) {
|
|
152
|
+
this.handle403((error as AxiosError));
|
|
153
|
+
this.initError();
|
|
140
154
|
}
|
|
141
155
|
this.loaded = true;
|
|
142
156
|
},
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="page-box">
|
|
3
3
|
<template v-if="loaded && !error">
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
<div class="page-podcast-title">
|
|
5
|
+
<h1 v-if="!isOuestFrance">
|
|
6
|
+
{{ titlePage }}
|
|
7
|
+
</h1>
|
|
8
|
+
<Countdown
|
|
9
|
+
v-if="isCounter"
|
|
10
|
+
:time-remaining="timeRemaining"
|
|
11
|
+
/>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="d-flex page-podcast">
|
|
12
14
|
<div class="d-flex flex-column flex-super-grow">
|
|
13
15
|
<RecordingItemButton
|
|
14
16
|
v-if="
|
|
@@ -101,11 +103,12 @@ import { state } from '../../store/paramStore';
|
|
|
101
103
|
import moment from 'moment';
|
|
102
104
|
import { Podcast } from '@/store/class/general/podcast';
|
|
103
105
|
import { Conference } from '@/store/class/conference/conference';
|
|
104
|
-
|
|
106
|
+
import { handle403 } from '../mixins/handle403';
|
|
105
107
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
106
108
|
import CommentSectionVue from '../display/comments/CommentSection.vue';
|
|
107
109
|
import { CommentPodcast } from '@/store/class/general/comment';
|
|
108
110
|
import { Category } from '@/store/class/general/category';
|
|
111
|
+
import { AxiosError } from 'axios';
|
|
109
112
|
const ShareButtons = defineAsyncComponent(() => import('../display/sharing/ShareButtons.vue'));
|
|
110
113
|
const SharePlayer = defineAsyncComponent(() => import('../display/sharing/SharePlayer.vue'));
|
|
111
114
|
const EditBox = defineAsyncComponent(() => import('@/components/display/edit/EditBox.vue'));
|
|
@@ -128,6 +131,8 @@ export default defineComponent({
|
|
|
128
131
|
ClassicLoading
|
|
129
132
|
},
|
|
130
133
|
|
|
134
|
+
mixins: [handle403],
|
|
135
|
+
|
|
131
136
|
props: {
|
|
132
137
|
updateStatus: { default: undefined, type: String},
|
|
133
138
|
playingPodcast: { default: undefined, type: Object as ()=> Podcast},
|
|
@@ -264,6 +269,9 @@ export default defineComponent({
|
|
|
264
269
|
if(!this.podcast){return "";}
|
|
265
270
|
return moment(this.podcast.pubDate).diff(moment(), 'seconds').toString();
|
|
266
271
|
},
|
|
272
|
+
filterOrga(): string {
|
|
273
|
+
return this.$store.state.filter.organisationId;
|
|
274
|
+
},
|
|
267
275
|
},
|
|
268
276
|
watch: {
|
|
269
277
|
updateStatus(): void {
|
|
@@ -312,9 +320,17 @@ export default defineComponent({
|
|
|
312
320
|
updatePodcast(podcastUpdated: Podcast): void {
|
|
313
321
|
this.podcast = podcastUpdated;
|
|
314
322
|
},
|
|
323
|
+
initError():void{
|
|
324
|
+
this.error = true;
|
|
325
|
+
this.loaded = true;
|
|
326
|
+
},
|
|
315
327
|
async getPodcastDetails(podcastId: number): Promise<void> {
|
|
316
328
|
try {
|
|
317
329
|
const data : Podcast = await octopusApi.fetchPodcast(podcastId.toString());
|
|
330
|
+
if(data.organisation.private && this.filterOrga!==data.organisation.id){
|
|
331
|
+
this.initError();
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
318
334
|
this.podcast = data;
|
|
319
335
|
this.$emit('podcastTitle', this.podcast.title);
|
|
320
336
|
if (
|
|
@@ -348,9 +364,9 @@ export default defineComponent({
|
|
|
348
364
|
this.error = true;
|
|
349
365
|
}
|
|
350
366
|
this.loaded = true;
|
|
351
|
-
} catch {
|
|
352
|
-
this.error
|
|
353
|
-
this.
|
|
367
|
+
} catch(error) {
|
|
368
|
+
this.handle403((error as AxiosError));
|
|
369
|
+
this.initError();
|
|
354
370
|
}
|
|
355
371
|
},
|
|
356
372
|
removeDeleted(): void {
|
|
@@ -90,6 +90,7 @@ export default defineComponent({
|
|
|
90
90
|
props: {
|
|
91
91
|
productor: { default: undefined, type: String},
|
|
92
92
|
isEducation: { default: false, type: Boolean},
|
|
93
|
+
searchInit: { default: "", type: String}
|
|
93
94
|
},
|
|
94
95
|
|
|
95
96
|
data() {
|
|
@@ -154,6 +155,9 @@ export default defineComponent({
|
|
|
154
155
|
},
|
|
155
156
|
|
|
156
157
|
created() {
|
|
158
|
+
if(this.searchInit){
|
|
159
|
+
this.searchPattern = this.searchInit;
|
|
160
|
+
}
|
|
157
161
|
if (this.productor) {
|
|
158
162
|
this.organisationId = this.productor;
|
|
159
163
|
} else if (this.$store.state.filter.organisationId) {
|
package/src/locale/en.ts
CHANGED
package/src/locale/fr.ts
CHANGED
package/src/locale/it.ts
ADDED
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
export default{
|
|
2
|
+
'Edit my profile': 'Il mio profilo',
|
|
3
|
+
'Edit my organisation': 'La mia organizzazione',
|
|
4
|
+
Logout: 'Logout',
|
|
5
|
+
Login: 'Login',
|
|
6
|
+
'Animated by': 'Ospitato da',
|
|
7
|
+
Home: 'Homepage',
|
|
8
|
+
Podcasts: 'Episodi',
|
|
9
|
+
Emissions: 'Serie',
|
|
10
|
+
Productors: 'Producer',
|
|
11
|
+
Productor: 'Producer',
|
|
12
|
+
Speakers: 'Speaker',
|
|
13
|
+
Guests: 'Ospiti',
|
|
14
|
+
Favorites: 'Preferiti',
|
|
15
|
+
Distributor: 'Distributore',
|
|
16
|
+
Image: 'Immagine',
|
|
17
|
+
|
|
18
|
+
'See my statistics': "Report sull'audience",
|
|
19
|
+
'Edit / Delete episodes': 'I miei episodi',
|
|
20
|
+
'Welcome in the Backoffice': 'Amministrazione',
|
|
21
|
+
'Please set an animator': 'Seleziona o crea un moderatore',
|
|
22
|
+
'Producted by : ': 'Prodotto da:',
|
|
23
|
+
'Loading podcasts ...': 'Podcast in caricamento...',
|
|
24
|
+
'Logo of main page': 'Logo della pagina principale',
|
|
25
|
+
'All podcasts': 'Tutti i podcast',
|
|
26
|
+
Error: 'Errore',
|
|
27
|
+
Upload: 'Upload',
|
|
28
|
+
'Count more elements matched your query, please make a more specific search.': `Troppi elementi corrispondono alla tua ricerca, effettua una ricerca più specifica`,
|
|
29
|
+
'There are still {count} item (s) matching your search. Please do a more specific search.' : 'Ci sono ancora {count} articoli corrispondenti alla tua ricerca. Effettua una ricerca più specifica',
|
|
30
|
+
Emission: 'Serie',
|
|
31
|
+
'Emission description': "Descrizione della serie",
|
|
32
|
+
'Emission image': "Immagine della serie",
|
|
33
|
+
'Emission name': "Titolo della serie",
|
|
34
|
+
'No elements found. Consider changing the search query.':
|
|
35
|
+
'Non è stato trovato alcun elemento. Prova a cambiare i parametri di ricerca',
|
|
36
|
+
'Podcast is not visible for listeners':
|
|
37
|
+
"Il podcast non è visibile agli ascoltatori",
|
|
38
|
+
Validate: 'Convalidare',
|
|
39
|
+
Cancel: 'Cancellare',
|
|
40
|
+
'Most popular': 'Più popolari',
|
|
41
|
+
'Last added': 'Ultimi aggiunti',
|
|
42
|
+
'All podcast button': 'Tutti i podcast di "{name}"',
|
|
43
|
+
'Podcast search': 'Cerca fra i podcast',
|
|
44
|
+
'No podcast match your query':
|
|
45
|
+
'Nessun podcast corrisponde alla tua ricerca',
|
|
46
|
+
'Please type at least three characters': 'Digitare almeno tre caratteri',
|
|
47
|
+
'My space': 'Amministrazione',
|
|
48
|
+
'All participants': 'Tutti gli speaker',
|
|
49
|
+
'All productors': 'Tutti i producer',
|
|
50
|
+
'All emissions': 'Tutte le serie',
|
|
51
|
+
'Filter by keyword : ': 'Filtra tramite parola chiave:',
|
|
52
|
+
'Look for participant name': 'Cerca lo speaker tramite il nome',
|
|
53
|
+
'Look for productor name': 'Cerca il producer tramite il titolo',
|
|
54
|
+
'Look for emission name': 'Cerca la serie tramite il titolo',
|
|
55
|
+
'Look for podcast name': 'Cerca il podcast tramite il titolo',
|
|
56
|
+
'Type string to filter by organisation': 'Filtra per organizzazione',
|
|
57
|
+
'Type string to filter by emission': 'Filtra per serie',
|
|
58
|
+
'Type string to filter by podcast': 'Filtra per podcast',
|
|
59
|
+
'No organisation filter': 'Nessun filtro per organizzazione',
|
|
60
|
+
'No emission filter': 'Nessun filtro per serie',
|
|
61
|
+
'No podcast filter': 'Nessun filtro per podcast',
|
|
62
|
+
'Loading participants ...': 'Caricamento degli speaker...',
|
|
63
|
+
'Loading productors ...': 'Caricamento dei producer...',
|
|
64
|
+
'Loading emissions ...': 'Caricamento delle serie...',
|
|
65
|
+
'Emission name image': "Immagine per la serie {name}",
|
|
66
|
+
'Loading content ...': 'Caricamento contenuto...',
|
|
67
|
+
Episode: 'Episodio',
|
|
68
|
+
'Episode name image': "Immagine dell'episodio {name}",
|
|
69
|
+
'More episodes of this emission': "Altri episodi di questa serie",
|
|
70
|
+
'More episodes of this category : {name}': "Altri episodi della categoria: {name}",
|
|
71
|
+
'All podcast emission button': "Seleziona tutte le serie",
|
|
72
|
+
Duration: 'Durata: {duration}',
|
|
73
|
+
Animator: 'Host',
|
|
74
|
+
'No category filter': 'Nessun filtro per la categoria',
|
|
75
|
+
'Type string to filter by categories': 'Filtra la categoria tramite il titolo',
|
|
76
|
+
Search: 'Ricerca',
|
|
77
|
+
Close: 'Chiudi',
|
|
78
|
+
Embed: 'Player',
|
|
79
|
+
Share: 'Condividi questa pagina',
|
|
80
|
+
'Share the player': 'Condividi il lettore',
|
|
81
|
+
'Share player': 'Condividi il lettore',
|
|
82
|
+
'Copy code': 'Copia il codice',
|
|
83
|
+
Copy: 'Copia',
|
|
84
|
+
Show: 'Mostra',
|
|
85
|
+
'Last podcasts': 'Gli ultimi podcast',
|
|
86
|
+
Contact: 'Contatti',
|
|
87
|
+
'List is empty': 'La lista è vuota',
|
|
88
|
+
'Used libraries': 'Libreria in uso ',
|
|
89
|
+
Front: 'Fronte',
|
|
90
|
+
Back: 'Retro',
|
|
91
|
+
'Look for library': 'Cerca la libreria',
|
|
92
|
+
Yes: 'Sì',
|
|
93
|
+
No: 'No',
|
|
94
|
+
"Podcast doesn't exist": "Il podcast non esiste",
|
|
95
|
+
"Emission doesn't exist": "La serie non esiste",
|
|
96
|
+
"Animator doesn't exist": "L'host non esiste",
|
|
97
|
+
"Productor doesn't exist": "Il producer non esiste",
|
|
98
|
+
'Create an account': 'Crea un account',
|
|
99
|
+
'Link in clipboard': 'Link copiato negli appunti',
|
|
100
|
+
'Data in clipboard': 'Dati negli appunti',
|
|
101
|
+
'check this box if you want to keep this filter for the rest of your visit':
|
|
102
|
+
'Seleziona questa casella se vuoi mantenere questo filtro per il resto della tua visita',
|
|
103
|
+
'No advertising': 'Niente pubblicità',
|
|
104
|
+
'You cannot insert advertising':
|
|
105
|
+
'In questo podcast non si può inserire pubblicità',
|
|
106
|
+
'Prohibited advertising': 'Pubblicità non autorizzata',
|
|
107
|
+
'Authorized advertising': 'Pubblicità autorizzata',
|
|
108
|
+
Distribute: 'Distribuzione',
|
|
109
|
+
'Rss feed:': 'RSS Feed:',
|
|
110
|
+
'See more': 'Vedi altro',
|
|
111
|
+
'Search results': 'Cerca risultati per "{query}"',
|
|
112
|
+
'Search - no results': 'Ricerca - nessun risultato per "{query}"',
|
|
113
|
+
Downloading: 'In download',
|
|
114
|
+
'Subscribe to this emission': "Iscriviti a questa serie",
|
|
115
|
+
'Subscribe to this participant': "Iscriviti a questo speaker",
|
|
116
|
+
'Emission have not podcasts': "Questa serie non ha alcun podcast",
|
|
117
|
+
'Participant have not podcasts':
|
|
118
|
+
'Questo speaker non è associato ad alcun podcast',
|
|
119
|
+
'Default version': 'Versione di default',
|
|
120
|
+
'Large version': 'Versione estesa',
|
|
121
|
+
'Emission version': 'Versione della serie',
|
|
122
|
+
'Large emission version': 'Versione estesa della serie',
|
|
123
|
+
'Large suggestion version': 'Versione estesa consigliata',
|
|
124
|
+
'Embed link': 'Inserisci lettore',
|
|
125
|
+
'Embedly link': 'Player link',
|
|
126
|
+
'Direct link': 'Audio link',
|
|
127
|
+
'Advanced filters': 'Impostazioni avanzate',
|
|
128
|
+
Advertising: 'Pubblicità',
|
|
129
|
+
'By topic': 'Per tema',
|
|
130
|
+
'By rubric': 'Per rubrica',
|
|
131
|
+
'Type string to filter by rubrics': 'Filtra per rubriche',
|
|
132
|
+
'No rubric filter': 'No filtri rubrica',
|
|
133
|
+
'From the :': 'Dal :',
|
|
134
|
+
'To the :': "Al :",
|
|
135
|
+
Visible: 'Visibile',
|
|
136
|
+
'In creation': 'Caricamento in corso',
|
|
137
|
+
'Publish in future': "Vedi l'episodio nascosto al pubblico",
|
|
138
|
+
'In error': 'In errore',
|
|
139
|
+
'Emission with episode published :':'Serie con episodi pubblicati dal:',
|
|
140
|
+
Sort: 'Suddividi',
|
|
141
|
+
Filter: 'Filtro',
|
|
142
|
+
'Sort score': 'Suddiviso per grado di rilevanza',
|
|
143
|
+
'Sort name': 'Suddividi titolo',
|
|
144
|
+
'Sort last': 'Suddividi ultimo',
|
|
145
|
+
'Choose color': 'Seleziona colore',
|
|
146
|
+
'Choose theme': 'Seleziona tema',
|
|
147
|
+
'Podcast no visible': 'Podcast non visibile',
|
|
148
|
+
'Display episodes': 'Mostra episodi',
|
|
149
|
+
'Podcast published in future': 'Podcast pubblicato in futuro',
|
|
150
|
+
'Podcast in process': 'Podcast in elaborazione',
|
|
151
|
+
'Podcast in error': 'Podcast in errore',
|
|
152
|
+
'See podcasts no visible':
|
|
153
|
+
'Vedi podcast non visibili al pubblico',
|
|
154
|
+
'Number podcasts': '{nb} di podcast',
|
|
155
|
+
'Number emissions': '{nb} di serie',
|
|
156
|
+
'Number participants': '{nb} di speaker',
|
|
157
|
+
'Number productors': '{nb} di producer',
|
|
158
|
+
'Display next': 'Mostra episodi seguenti',
|
|
159
|
+
'Display previous': 'Mostra episodi precedenti',
|
|
160
|
+
Play: 'Play',
|
|
161
|
+
Pause: 'Pausa',
|
|
162
|
+
'Show description': 'Mostra descrizione',
|
|
163
|
+
'Hide description': 'Nascondi descrizione',
|
|
164
|
+
'open left Menu': 'Apri/Chiudi Menu',
|
|
165
|
+
Participant: 'Speaker',
|
|
166
|
+
'Number of player podcasts': "Numero di podcast nel lettore",
|
|
167
|
+
'Proceed reading': 'Continua ad ascoltare',
|
|
168
|
+
'Without topic': 'Senza un tema',
|
|
169
|
+
'Without rubric': 'Senza una rubrica',
|
|
170
|
+
'Consider podcasts no visible':
|
|
171
|
+
'Includi i podcast non visibili al pubblico',
|
|
172
|
+
'Hosted by': 'Presentato da',
|
|
173
|
+
TutoMag: 'TutoMag',
|
|
174
|
+
News: 'Notizie',
|
|
175
|
+
'Known issues': 'Problemi noti',
|
|
176
|
+
Help: 'Aiuto',
|
|
177
|
+
'Podcast play error': 'Si è verificato un errore durante la riproduzione del podcast',
|
|
178
|
+
'More episodes': 'Altri episodi',
|
|
179
|
+
Stop: 'Stop',
|
|
180
|
+
'Share this page without edit and share blocks':
|
|
181
|
+
"Condividi questa pagina senza modificare",
|
|
182
|
+
'Podcast in cancelled status': 'Podcast contrassegnato come eliminato',
|
|
183
|
+
'Show every episode': 'Mostra tutti gli episodi',
|
|
184
|
+
'Subscribe emission': "Iscriviti alla serie",
|
|
185
|
+
'Rss feed parameters': 'Impostazioni RSS Feed',
|
|
186
|
+
'Not share episodes before':
|
|
187
|
+
'Non condividere episodi prima',
|
|
188
|
+
'Not share episodes after':
|
|
189
|
+
'Non condividere episodi dopo',
|
|
190
|
+
hours: 'ora(e)',
|
|
191
|
+
days: 'giorno(i)',
|
|
192
|
+
Live: 'Live',
|
|
193
|
+
'In live': 'Live ora',
|
|
194
|
+
'Launch a new live': 'Crea un nuovo live',
|
|
195
|
+
'Loading lives...': 'Live in caricamento...',
|
|
196
|
+
'No live currently': "Non ci sono live disponibili al momento",
|
|
197
|
+
'live upcoming': 'Live in arrivo',
|
|
198
|
+
"live in few time":"Live presto diponibile",
|
|
199
|
+
Debriefing: 'Debriefing',
|
|
200
|
+
Publishing: 'In corso di pubblicazione',
|
|
201
|
+
'select productor': 'Seleziona producer',
|
|
202
|
+
'Share newsletter': "Condividi newsletter",
|
|
203
|
+
Configuration: 'Configurazione',
|
|
204
|
+
'HTML Code': 'Codice HTML',
|
|
205
|
+
'Listen this episode': 'Ascolta questo episodio',
|
|
206
|
+
'Display emission name': "Mostra il titolo della serie",
|
|
207
|
+
'Display participants list': 'Mostra la lista degli speaker',
|
|
208
|
+
'Choose main color': 'Seleziona colore principale',
|
|
209
|
+
'Octopus is ACPM Podcast accredited': 'Octopus è accreditata ACPM Podcast',
|
|
210
|
+
'Live episode': 'Episodi live',
|
|
211
|
+
'This live will start': 'Questo live inizierà',
|
|
212
|
+
'In days hours minutes seconds':
|
|
213
|
+
'in {days} giorni {hours} ore {minutes} minuti e {seconds} secondi',
|
|
214
|
+
'Open studio': 'Open studio',
|
|
215
|
+
'Episode record in live': 'Episodio registrato live',
|
|
216
|
+
'In a moment': 'Tra poco',
|
|
217
|
+
'Live to be': 'Presto disponibile',
|
|
218
|
+
'Live terminated': 'Live terminato',
|
|
219
|
+
'Next live date': 'Il prossimo live è previsto il {date}',
|
|
220
|
+
'Not recording': 'Non registrato',
|
|
221
|
+
'This live is not started yet': "Questo live non è ancora iniziato",
|
|
222
|
+
'A live can start any moment': 'Una sessione live può iniziare presto',
|
|
223
|
+
'Recorded in live': 'Registrato live',
|
|
224
|
+
'Podcast linked to waiting live': 'Podcast collegato a un live in attesa',
|
|
225
|
+
Playlists: 'Playlist',
|
|
226
|
+
Playlist: 'Playlist',
|
|
227
|
+
'All playlists': 'Tutte le playlist',
|
|
228
|
+
'Look for playlist name': 'Ricerca playlist per titolo',
|
|
229
|
+
'Number playlists': '{nb} playlist',
|
|
230
|
+
'Playlist have not podcasts': "Questa playlist non contiene nessun podcast",
|
|
231
|
+
"Playlist doesn't exist": "La playlist richiesta non esiste",
|
|
232
|
+
'Playlist name image': 'Titolo playlist {name}',
|
|
233
|
+
'Create playlist': 'Crea playlist',
|
|
234
|
+
'Podcasts in the playlist': 'Tutti i podcast nella playlist',
|
|
235
|
+
'No podcasts in the playlist': "Non ci sono podcast disponibili nella playlist",
|
|
236
|
+
'Start in a while': 'Inizia in qualsiasi momento',
|
|
237
|
+
'All live emission button': "Tutti i live nella serie",
|
|
238
|
+
'player parameters': 'Impostazioni lettore',
|
|
239
|
+
'Start at': 'Inizia a',
|
|
240
|
+
'sort by score': 'per grado di rilevanza',
|
|
241
|
+
'sort by alphabetical': 'suddiviso in ordine alfabetico',
|
|
242
|
+
'sort by date': 'suddiviso per data',
|
|
243
|
+
'Be the first to react': 'Commenta per primo',
|
|
244
|
+
"Podcast's comments": "Commenti per questo podcast",
|
|
245
|
+
'()': '({nb})',
|
|
246
|
+
'Write a comment': 'Scrivi un commento',
|
|
247
|
+
'Answer a comment': 'Rispondi al commento',
|
|
248
|
+
'See more comments': 'Vedi altri commenti',
|
|
249
|
+
'To answer': 'Rispondere',
|
|
250
|
+
'Display answers': 'Mostra le risposte {nb}',
|
|
251
|
+
'Hide answers': 'Nascondi le risposte',
|
|
252
|
+
'Read more': 'Continua a leggere',
|
|
253
|
+
'Read less': 'Nascondi',
|
|
254
|
+
'(nb valid comment answers)': '({nb} risposte valide nei commenti)',
|
|
255
|
+
'Welcome, thanks for your comment': 'Benvenutə, grazie per il tuo commento',
|
|
256
|
+
"Let's get acquainted :": "Facciamo conoscenza:",
|
|
257
|
+
'Send in progress': 'Invio in corso...',
|
|
258
|
+
'Error occurs while post your comment...':
|
|
259
|
+
'Si è verificato un errore durante la pubblicazione del tuo commento...',
|
|
260
|
+
'Comments loading error': 'Si è verificato un errore durante il caricamento dei commenti',
|
|
261
|
+
'Certified account': 'Account certificato',
|
|
262
|
+
'No comments': 'Nessun commento',
|
|
263
|
+
'In response to': 'In risposta a',
|
|
264
|
+
'Please chose a productor': 'Scegli un producer',
|
|
265
|
+
'Podcast in ERROR, please contact Saooti':
|
|
266
|
+
"Podcast in ERRORE, si prega di contattare Saooti",
|
|
267
|
+
'Podcast still available':
|
|
268
|
+
"Podcast disponibile agli utenti",
|
|
269
|
+
'Podcasts still available':
|
|
270
|
+
'Mantieni gli episodi nascosti disponibili agli ascoltatori',
|
|
271
|
+
'Podcast image': "Immagine del podcast",
|
|
272
|
+
'Recaptcha error':
|
|
273
|
+
'Recaptcha di Google non pensa che tu sia un umano',
|
|
274
|
+
'Recaptcha not active': 'Google captcha disattivato',
|
|
275
|
+
'Comment waiting':
|
|
276
|
+
"Questo commento non sarà visibile ad altri utenti fino a quando non sarà validato",
|
|
277
|
+
'Display all podcasts to validate': 'Mostra tutti i podcast da validare',
|
|
278
|
+
'Display my podcasts to validate': 'Mostra i miei podcast da validare',
|
|
279
|
+
'Podcast not validated': "Podcast non validato",
|
|
280
|
+
'Podcast to validate': 'Podcast da validare',
|
|
281
|
+
'Change locale': 'In francese',
|
|
282
|
+
'Refresh': 'Aggiorna',
|
|
283
|
+
'See associated article':"Leggi l'articolo",
|
|
284
|
+
"Display associated article":"Mostra articolo associato",
|
|
285
|
+
"Copy this page URL":"Copia la URL di questa pagina",
|
|
286
|
+
"Custom version":"Versione customizzata",
|
|
287
|
+
"All":"Tutto",
|
|
288
|
+
'By category': 'Per categoria IAB',
|
|
289
|
+
"Add a sort criterion by topic":"Aggiungi un criterio di suddivisione per tema",
|
|
290
|
+
'Share QR Code': "Condividi il QR Code",
|
|
291
|
+
"Download":"Download",
|
|
292
|
+
"Download started": 'Il download è iniziato',
|
|
293
|
+
'From RSS': "Da un RSS Feed ",
|
|
294
|
+
"User menu":"Menu utente",
|
|
295
|
+
'Podcast tags': 'Tag podcast',
|
|
296
|
+
"Term of use":"Termini d'uso",
|
|
297
|
+
'More episodes of this category : ': "Altri episodi su questo tema : {name}",
|
|
298
|
+
};
|
package/src/locale/messages.ts
CHANGED
|
@@ -2,9 +2,11 @@ import fr from './fr';
|
|
|
2
2
|
import educationfr from './educationfr';
|
|
3
3
|
import educationen from './educationen';
|
|
4
4
|
import en from './en';
|
|
5
|
+
import it from './it';
|
|
5
6
|
export default{
|
|
6
7
|
fr: fr,
|
|
7
8
|
en: en,
|
|
9
|
+
it: it,
|
|
8
10
|
educationfr: educationfr,
|
|
9
11
|
educationen: educationen,
|
|
10
12
|
};
|
package/src/main.ts
CHANGED