Skip to content

Commit 017a8a7

Browse files
authored
Add Catalan localization (#175)
* Update index.ts Add Catalan * Create ca.ts Add Catalan localization * Update ca.ts
1 parent c965c2e commit 017a8a7

File tree

2 files changed

+118
-2
lines changed

2 files changed

+118
-2
lines changed

frontend/src/lib/i18n/index.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import ca from './langs/ca';
12
import de from './langs/de';
23
import en from './langs/en';
34
import es from './langs/es';
@@ -19,11 +20,12 @@ export const languages = [
1920
{ id: 'en', name: 'English', translation: en },
2021
{ id: 'zh-Hans', name: '简体中文', translation: zhHans },
2122
{ id: 'zh-Hant', name: '繁體中文', translation: zhHant },
22-
{ id: 'fr', name: 'Français', translation: fr },
23+
{ id: 'ca', name: 'Català', translation: ca },
24+
{ id: 'de', name: 'Deutsch', translation: de },
2325
{ id: 'es', name: 'Español', translation: es },
26+
{ id: 'fr', name: 'Français', translation: fr },
2427
{ id: 'sv', name: 'Svenska', translation: sv },
2528
{ id: 'ru', name: 'Русский', translation: ru },
26-
{ id: 'de', name: 'Deutsch', translation: de },
2729
{ id: 'pt', name: 'Português', translation: pt },
2830
{ id: 'pt-BR', name: 'Português do Brasil', translation: ptBR }
2931
] as const;
@@ -54,6 +56,11 @@ export function getCurrentLanguage(): Language {
5456
return 'zh-Hans';
5557
}
5658

59+
// Catalan
60+
if (browserLang.startsWith('ca')) {
61+
return 'ca';
62+
}
63+
5764
// French
5865
if (browserLang.startsWith('fr')) {
5966
return 'fr';

frontend/src/lib/i18n/langs/ca.ts

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
const lang = {
2+
// actions
3+
'common.submit': 'Enviar',
4+
'common.cancel': 'Cancel·lar',
5+
'common.confirm': 'Confirmar',
6+
'common.add': 'Afegir',
7+
'common.delete': 'Eliminar',
8+
'common.edit': 'Editar',
9+
'common.save': 'Guardar',
10+
'common.close': 'Tancar',
11+
'common.search': 'Cerca',
12+
'common.login': 'Iniciar la sessió',
13+
'common.logout': 'Tancar la sessió',
14+
15+
// common words
16+
'common.unread': 'No llegits',
17+
'common.bookmark': 'Marcadors',
18+
'common.all': 'Tots',
19+
'common.feeds': 'Canals',
20+
'common.group': 'Grup',
21+
'common.groups': 'Grups',
22+
'common.settings': 'Configuració',
23+
'common.name': 'Nom',
24+
'common.password': 'Contrasenya',
25+
'common.link': 'Enllaç',
26+
'common.advanced': 'Avançat',
27+
'common.shortcuts': 'Dreceres del teclat',
28+
'common.more': 'Més',
29+
'common.current_page': 'Pàgina actual',
30+
31+
// state
32+
'state.success': 'Èxit',
33+
'state.error': 'Error',
34+
'state.loading': 'Carregant',
35+
'state.no_data': 'Sense dades',
36+
'state.no_more_data': 'No hi ha més dades',
37+
38+
// feed
39+
'feed.refresh': 'Actualitzar el canal',
40+
'feed.refresh.all': 'Actualitzar tots els canals',
41+
'feed.refresh.all.confirm': 'Estàs segur que vols actualitzar tots els canals excepte els suspesos?',
42+
'feed.refresh.all.run_in_background': "Iniciar l'actualització en segon pla",
43+
'feed.refresh.resume': "Reprendre l'actualització",
44+
'feed.refresh.suspend': "Suspendre l'actualització",
45+
'feed.delete.confirm': 'Estàs segur que vols eliminar aquest canal?',
46+
'feed.banner.suspended': 'Aquest canal ha sigut suspès',
47+
'feed.banner.failed': 'Error en actualitzar el canal. Error: {error}',
48+
49+
'feed.import.title': 'Afegir canals',
50+
'feed.import.manually': 'Manualment',
51+
'feed.import.manually.link.description': "L'enllaç RSS o l'enllaç del lloc web. El servidor intentarà localitzar automàticament el canal RSS. Els canals existents amb el mateix enllaç es substituiran.",
52+
'feed.import.manually.name.description': 'Opcional. Deixar en blanc per anomenar automàticament.',
53+
'feed.import.manually.no_valid_feed_error': "No s'ha trobat cap canal vàlid. Si us plau, verifica l'enllaç o fes servir un enllaç de canal directament.",
54+
'feed.import.manually.link_candidates.label': 'Seleccionar un enllaç',
55+
'feed.import.opml': 'Importar OPML',
56+
'feed.import.opml.file.label': 'Seleccionar un fitxer OPML',
57+
'feed.import.opml.file.description': "El fitxer ha d'estar en format {opml}. Pots obtenir un del teu lector RSS anterior.",
58+
'feed.import.opml.file_read_error': 'Error en carregar el contingut del fitxer',
59+
'feed.import.opml.how_it_works.title': 'Com funciona?',
60+
'feed.import.opml.how_it_works.description.1': "Els canals s'importaran al grup corresponent, que es crearà automàticament si no existeix.",
61+
'feed.import.opml.how_it_works.description.2': "Els grups multidimensionals s'aplanaran a una estructura unidimensional, utilitzant una convenció de nomenclatura com 'a/b/c'.",
62+
'feed.import.opml.how_it_works.description.3': 'Els canals existents amb el mateix enllaç es substituiran.',
63+
64+
// item
65+
'item.search.placeholder': 'Cercar al títol i contingut',
66+
'item.mark_all_as_read': 'Marcar tots com a llegits',
67+
'item.mark_as_read': 'Marcar com a llegit',
68+
'item.mark_as_unread': 'Marcar com a no llegit',
69+
'item.add_to_bookmark': 'Afegir als marcadors',
70+
'item.remove_from_bookmark': 'Treure dels marcadors',
71+
'item.goto_feed': 'Anar al canal',
72+
'item.visit_the_original': "Visitar l'enllaç original",
73+
74+
// settings
75+
'settings.appearance': 'Aparença',
76+
'settings.appearance.description': "Aquesta configuració s'ha guardat al teu navegador.",
77+
'settings.appearance.field.language.label': 'Idioma',
78+
79+
'settings.global_actions': 'Accions globals',
80+
'settings.global_actions.refresh_all_feeds': 'Actualitzar tots els canals',
81+
'settings.global_actions.export_all_feeds': 'Exportar tots els canals',
82+
83+
'settings.groups.description': 'El nom del grup ha de ser únic.',
84+
'settings.groups.delete.confirm': 'Estàs segur que vols eliminar aquest grup? Tots els seus canals es mouran al grup predeterminat',
85+
'settings.groups.delete.error.delete_the_default': 'No es pot eliminar el grup predeterminat',
86+
87+
// auth
88+
'auth.logout.confirm': 'Estàs segur que vols tancar la sessió?',
89+
'auth.logout.failed_message': 'Error en tancar sessió. Si us plau, torna-ho a intentar.',
90+
91+
// shortcuts
92+
'shortcuts.show_help': 'Mostrar les dreceres del teclat',
93+
'shortcuts.next_item': 'Element següent',
94+
'shortcuts.prev_item': 'Element anterior',
95+
'shortcuts.toggle_unread': 'Marcar com a (no) llegit',
96+
'shortcuts.toggle_bookmark': 'Afegir o treure dels marcadors',
97+
'shortcuts.view_original': "Veure l'original",
98+
'shortcuts.next_feed': 'Canal següent',
99+
'shortcuts.prev_feed': 'Canal anterior',
100+
'shortcuts.open_selected': 'Obrir el seleccionat',
101+
'shortcuts.goto_search_page': 'Anar a la cerca',
102+
'shortcuts.goto_unread_page': 'Anar als no llegits',
103+
'shortcuts.goto_bookmarks_page': 'Anar als marcadors',
104+
'shortcuts.goto_all_items_page': 'Anar a tots',
105+
'shortcuts.goto_feeds_page': 'Anar als canals',
106+
'shortcuts.goto_settings_page': 'Anar a la configuració'
107+
} as const;
108+
109+
export default lang;

0 commit comments

Comments
 (0)