- return this.http.get(ServerService.BASE_VIDEO_URL + attributeName)
- .subscribe(data => {
- Object.keys(data)
- .forEach(dataKey => {
- hashToPopulate.push({
- id: parseInt(dataKey, 10),
- label: data[dataKey]
- })
- })
+ this.localeObservable
+ .pipe(
+ switchMap(translations => {
+ return this.http.get<{ [id: string]: string }>(baseUrl + attributeName)
+ .pipe(map(data => ({ data, translations })))
+ })
+ )
+ .subscribe(({ data, translations }) => {
+ Object.keys(data)
+ .forEach(dataKey => {
+ const label = data[ dataKey ]
+
+ hashToPopulate.push({
+ id: attributeName === 'languages' ? dataKey : parseInt(dataKey, 10),
+ label: peertubeTranslate(label, translations)
+ })
+ })
+
+ if (sort === true) sortBy(hashToPopulate, 'label')
+
+ notifier.next(true)
+ })
+ }
+
+ private loadServerLocale () {
+ const completeLocale = isOnDevLocale() ? getDevLocale() : getCompleteLocale(this.localeId)
+
+ // Default locale, nothing to translate
+ if (isDefaultLocale(completeLocale)) {
+ this.localeObservable = of({}).pipe(shareReplay())
+ return
+ }