From 6ab4c778edf5c709fd1ec1da66808a3b0d07aafe Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Tue, 27 Aug 2024 09:55:55 +0100 Subject: [PATCH 01/29] ar(fix) audio health check --- pages/api/nexus/audio.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/api/nexus/audio.js b/pages/api/nexus/audio.js index ad653d8..e72aca3 100644 --- a/pages/api/nexus/audio.js +++ b/pages/api/nexus/audio.js @@ -90,5 +90,5 @@ export default async function handler(req, res) { // res.setHeader('Referrer-Policy', "same-origin") if (response.status === 200) return res.redirect(303, BASE + BACKUP); - return res.end("no donut") + return res.status(500).json({ ok: false, status: 500, message: 'Code 000/1: Service unavailable.'}) } \ No newline at end of file From 7e18d3e6540b67af37c9b487483cb298cebd673d Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 10:10:18 +0100 Subject: [PATCH 02/29] ar(feat) [DPCP-108]: Adding more languages coverage --- lib/cjs-constants.js | 57 ++++++++++++++++++++++++++++++++++++++-- next.config.mjs | 4 +-- pages/api/nexus/audio.js | 2 +- 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/lib/cjs-constants.js b/lib/cjs-constants.js index 515a6f7..1414199 100644 --- a/lib/cjs-constants.js +++ b/lib/cjs-constants.js @@ -1,4 +1,39 @@ -export const LOCALES = ["en", "pt-br", "it-it", "de-de", "fr-fr", "es-es", "ro", "pl-pl", "cs-cz", "sv-se", "et-ee", "ja-jp", "ru-ru", "default"] +export const LOCALES = [ + "en", + "pt-br", + "it-it", + "de-de", + "fr-fr", + "es-es", + "ro", + "pl-pl", + "cs-cz", + "sv-se", + "et-ee", + "ja-jp", + "ru-ru", + "ar", + "he", + "zh", + "nl", + "da", + "hu", + "ca", + "eu", + "gl", + "sw", + "hi", + "ms", + "bn", + "pa", + "tr", + "fi", + "el", + "ko", + "default", +] + + export const localeMap = { "pt": "pt-BR", @@ -12,5 +47,23 @@ export const localeMap = { "pl": "pl-PL", "et": "et-EE", "ja": "ja-JP", - "ru": "ru-RU" + "ru": "ru-RU", + "ar": "ar", + "he": "he", + "zh": "zh", + "nl": "nl", + "da": "da", + "hu": "hu", + "ca": "ca", + "eu": "eu", + "gl": "gl", + "sw": "sw", + "hi": "hi", + "ms": "ms", + "bn": "bn", + "pa": "pa", + "tr": "tr", + "fi": "fi", + "el": "el", + "ko": "ko", } diff --git a/next.config.mjs b/next.config.mjs index 0970586..429ab1c 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,4 @@ -// import { LOCALES } from "./lib/cjs-constants.js" +import { LOCALES } from "./lib/cjs-constants.js" const config = { async headers() { @@ -56,7 +56,7 @@ const config = { }, productionBrowserSourceMaps: false, i18n: { - locales: ["en", "pt-br", "it-it", "de-de", "fr-fr", "es-es", "ro", "pl-pl", "cs-cz", "sv-se", "et-ee", "ja-jp", "ru-ru", "default"], + locales: LOCALES, defaultLocale: "default", localeDetection: true, }, diff --git a/pages/api/nexus/audio.js b/pages/api/nexus/audio.js index e72aca3..c19b5c1 100644 --- a/pages/api/nexus/audio.js +++ b/pages/api/nexus/audio.js @@ -90,5 +90,5 @@ export default async function handler(req, res) { // res.setHeader('Referrer-Policy', "same-origin") if (response.status === 200) return res.redirect(303, BASE + BACKUP); - return res.status(500).json({ ok: false, status: 500, message: 'Code 000/1: Service unavailable.'}) + return res.status(500).json({ ok: false, status: 500, message: 'Code 000/1: Service unavailable.' }) } \ No newline at end of file From 00284db0ed863f960cce79f53f89b833f71195df Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 10:12:17 +0100 Subject: [PATCH 03/29] ar(feat) [DPCP-108]: Adding more languages coverage --- lib/cjs-constants.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/cjs-constants.js b/lib/cjs-constants.js index 1414199..7a86758 100644 --- a/lib/cjs-constants.js +++ b/lib/cjs-constants.js @@ -1,6 +1,5 @@ export const LOCALES = [ "en", - "pt-br", "it-it", "de-de", "fr-fr", @@ -12,6 +11,7 @@ export const LOCALES = [ "et-ee", "ja-jp", "ru-ru", + "pt-br", "ar", "he", "zh", @@ -36,7 +36,6 @@ export const LOCALES = [ export const localeMap = { - "pt": "pt-BR", "it": "it-IT", "es": "es-ES", "de": "de-DE", @@ -48,6 +47,7 @@ export const localeMap = { "et": "et-EE", "ja": "ja-JP", "ru": "ru-RU", + "pt": "pt-BR", "ar": "ar", "he": "he", "zh": "zh", From cbdaaa109b8691706c19d3693d2ff2430d173d5f Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 10:13:28 +0100 Subject: [PATCH 04/29] ar(feat) [DPCP-108]: Adding more languages coverage --- lib/cjs-constants.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/cjs-constants.js b/lib/cjs-constants.js index 7a86758..b2e1393 100644 --- a/lib/cjs-constants.js +++ b/lib/cjs-constants.js @@ -3,7 +3,6 @@ export const LOCALES = [ "it-it", "de-de", "fr-fr", - "es-es", "ro", "pl-pl", "cs-cz", @@ -12,6 +11,7 @@ export const LOCALES = [ "ja-jp", "ru-ru", "pt-br", + "es-es", "ar", "he", "zh", @@ -37,7 +37,6 @@ export const LOCALES = [ export const localeMap = { "it": "it-IT", - "es": "es-ES", "de": "de-DE", "fr": "fr-FR", "ro": "ro", @@ -48,6 +47,7 @@ export const localeMap = { "ja": "ja-JP", "ru": "ru-RU", "pt": "pt-BR", + "es": "es-ES", "ar": "ar", "he": "he", "zh": "zh", From c417d93d17da62ac23be7e584ba870504c3d95da Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 10:19:22 +0100 Subject: [PATCH 05/29] ar(feat) [DPCP-108]: Adding more languages coverage --- lib/cjs-constants.js | 1 - locale/artist.js | 32 +++++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/lib/cjs-constants.js b/lib/cjs-constants.js index b2e1393..3f951e5 100644 --- a/lib/cjs-constants.js +++ b/lib/cjs-constants.js @@ -34,7 +34,6 @@ export const LOCALES = [ ] - export const localeMap = { "it": "it-IT", "de": "de-DE", diff --git a/locale/artist.js b/locale/artist.js index e56ba7a..1c961a4 100644 --- a/locale/artist.js +++ b/locale/artist.js @@ -193,5 +193,35 @@ export const ArtistLocale = { "countries": "Страны", "artists": "Артисты", "artistsDescription": "Список наших артистов и гостей. Перечень уникальных людей." - } + }, + "ar": { + "locale": "en-us", + "artist": "فنان", + "aliases": "أسماء الفنان", + "next": "الحلقة التالية", + "highlights": "استمع لحلقات الفنان المميزة", + "episodes": "استمع لحلقات الفنان الأخرى", + "back": "انظر لفنانين آخرين", + "country": "الدولة", + "calendar": "أضف إلى التقويم", + "reset": "إعادة تعيين التصنيفات", + "countries": "الدول", + "artists": "الفنانين", + "artistsDescription": "قائمة بفنانينا وضيوفنا. قائمة بأشخاص فريدين من نوعهم." + }, + "he": { + "locale": "en-us", + "artist": "אמן", + "aliases": "כינויי האמן", + "next": "הפרק הבא", + "highlights": "האזינו לפרקים המובהקים של האמן הזה", + "episodes": "האזינו לפרקים אחרים של האמן הזה", + "back": "ראו אמנים אחרים", + "country": "מדינה", + "calendar": "הוסף ללוח שנה", + "reset": "איפוס סינון", + "countries": "מדינות", + "artists": "אמנים", + "artistsDescription": "רשימת האמנים והאורחים שלנו. רשימה של אנשים ייחודיים." + }, }; From ab79953c12e0c538eab627a7a4ffea067a50459a Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 10:29:03 +0100 Subject: [PATCH 06/29] ar(feat) [DPCP-108]: Adding more languages coverage --- locale/artist.js | 266 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 253 insertions(+), 13 deletions(-) diff --git a/locale/artist.js b/locale/artist.js index 1c961a4..a65011e 100644 --- a/locale/artist.js +++ b/locale/artist.js @@ -210,18 +210,258 @@ export const ArtistLocale = { "artistsDescription": "قائمة بفنانينا وضيوفنا. قائمة بأشخاص فريدين من نوعهم." }, "he": { - "locale": "en-us", - "artist": "אמן", - "aliases": "כינויי האמן", - "next": "הפרק הבא", - "highlights": "האזינו לפרקים המובהקים של האמן הזה", - "episodes": "האזינו לפרקים אחרים של האמן הזה", - "back": "ראו אמנים אחרים", - "country": "מדינה", - "calendar": "הוסף ללוח שנה", - "reset": "איפוס סינון", - "countries": "מדינות", - "artists": "אמנים", - "artistsDescription": "רשימת האמנים והאורחים שלנו. רשימה של אנשים ייחודיים." + "locale": "en-us", + "artist": "אמן", + "aliases": "כינויי האמן", + "next": "הפרק הבא", + "highlights": "האזינו לפרקים המובהקים של האמן הזה", + "episodes": "האזינו לפרקים אחרים של האמן הזה", + "back": "ראו אמנים אחרים", + "country": "מדינה", + "calendar": "הוסף ללוח שנה", + "reset": "איפוס סינון", + "countries": "מדינות", + "artists": "אמנים", + "artistsDescription": "רשימת האמנים והאורחים שלנו. רשימה של אנשים ייחודיים." + }, + "zh": { + "locale": "en-us", + "artist": "艺术家", + "aliases": "艺术家的别名", + "next": "下一集", + "highlights": "收听此艺术家的精华节目", + "episodes": "收听此艺术家的其他节目", + "back": "查看其他艺术家", + "country": "国家", + "calendar": "添加到日历", + "reset": "重置过滤器", + "countries": "国家", + "artists": "艺术家", + "artistsDescription": "我们的艺术家和嘉宾名单。一群独一无二的人。" + }, + "nl": { + "locale": "en-us", + "artist": "Artiest", + "aliases": "Aliassen van de artiest", + "next": "Volgende aflevering", + "highlights": "Luister naar de hoogtepunten van deze artiest", + "episodes": "Luister naar andere afleveringen van deze artiest", + "back": "Bekijk andere artiesten", + "country": "Land", + "calendar": "Toevoegen aan agenda", + "reset": "Reset filters", + "countries": "Landen", + "artists": "Artiesten", + "artistsDescription": "Een lijst van onze artiesten en gasten. Een lijst van unieke mensen." + }, + "da": { + "locale": "en-us", + "artist": "Kunstner", + "aliases": "Kunstnerens aliaser", + "next": "Næste episode", + "highlights": "Lyt til denne kunstners fremhævede episoder", + "episodes": "Lyt til denne kunstners andre episoder", + "back": "Se andre kunstnere", + "country": "Land", + "calendar": "Tilføj til kalender", + "reset": "Nulstil filtre", + "countries": "Lande", + "artists": "Kunstnere", + "artistsDescription": "En liste over vores kunstnere og gæster. En liste over unikke mennesker." + }, + "hu": { + "locale": "en-us", + "artist": "Művész", + "aliases": "Művész becenevei", + "next": "Következő epizód", + "highlights": "Hallgassák meg a művész kiemelt epizódjait", + "episodes": "Hallgassák meg a művész egyéb epizódjait", + "back": "Tekintse meg más művészeket", + "country": "Ország", + "calendar": "Hozzáadás naptárhoz", + "reset": "Szűrők alaphelyzetbe állítása", + "countries": "Országok", + "artists": "Művészek", + "artistsDescription": "Az alkotóink és vendégeink listája. Egyedi emberek listája." + }, + "ca": { + "locale": "en-us", + "artist": "Artista", + "aliases": "Àlies de l'artista", + "next": "Pròxim episodi", + "highlights": "Escolta els episodis destacats d'aquest artista", + "episodes": "Escolta els altres episodis d'aquest artista", + "back": "Mostra altres artistes", + "country": "País", + "calendar": "Afegir al calendari", + "reset": "Restablir filtres", + "countries": "Països", + "artists": "Artistes", + "artistsDescription": "Una llista dels nostres artistes i convidats. Una llista de persones úniques." + }, + "eu": { + "locale": "en-us", + "artist": "Artista", + "aliases": "Artistaren eratzeak", + "next": "Hurrengo saioa", + "highlights": "Entzun artista honek argitaratu dituen ohiko saioak", + "episodes": "Entzun artista honek beste saioak", + "back": "Ikusi beste artistak", + "country": "Herria", + "calendar": "Gehitu egutegiari", + "reset": "Berrezarri iragazkiak", + "countries": "Herrialdeak", + "artists": "Artistak", + "artistsDescription": "Gure artisten eta gonbidatuen zerrenda. Pertsona batzuk barruko zerrenda." + }, + "gl": { + "locale": "en-us", + "artist": "Artista", + "aliases": "Alias do artista", + "next": "Próximo episodio", + "highlights": "Escoite os episodios destacados deste artista", + "episodes": "Escoite outros episodios deste artista", + "back": "Ver outros artistas", + "country": "País", + "calendar": "Engadir ao calendario", + "reset": "Restablecer filtros", + "countries": "Países", + "artists": "Artistas", + "artistsDescription": "Unha lista dos nosos artistas e convidados. Unha lista de xente única." + }, + "sw": { + "locale": "en-us", + "artist": "Msanii", + "aliases": "Ving'amuzi vya msanii", + "next": "Kipindi kifuatacho", + "highlights": "Sikiliza vipindi vilivyobebwa na msanii huyu", + "episodes": "Sikiliza vipindi vingine vya msanii huyu", + "back": "Angalia wasanii wengine", + "country": "Nchi", + "calendar": "Ongeza kwenye kalenda", + "reset": "Rudisha vichujio", + "countries": "Nchi", + "artists": "Wasanii", + "artistsDescription": "Orodha ya wasanii na wageni wetu. Orodha ya watu wa pekee." + }, + "hi": { + "locale": "en-us", + "artist": "कलाकार", + "aliases": "कलाकार के उपनाम", + "next": "अगला एपिसोड", + "highlights": "इस कलाकार के हाइलाइट्स को सुनें", + "episodes": "इस कलाकार के अन्य एपिसोड्स को सुनें", + "back": "अन्य कलाकार देखें", + "country": "देश", + "calendar": "कैलेंडर में जोड़ें", + "reset": "फ़िल्टर रीसेट करें", + "countries": "देश", + "artists": "कलाकार", + "artistsDescription": "हमारे कलाकारों और मेहमानों की सूची। अद्वितीय लोगों की सूची।" + }, + "ms": { + "locale": "en-us", + "artist": "Artis", + "aliases": "Alias Artis", + "next": "Episod seterusnya", + "highlights": "Dengar episod-artis yang disorot", + "episodes": "Dengar episod-artis yang lain", + "back": "Lihat artis lain", + "country": "Negara", + "calendar": "Tambah ke kalendar", + "reset": "Tetap semula penapis", + "countries": "Negara", + "artists": "Artis", + "artistsDescription": "Senarai artis dan tetamu kami. Senarai orang yang bersifat unik." }, + "bn": { + "locale": "en-us", + "artist": "শিল্পী", + "aliases": "শিল্পীর উপনামগুলি", + "next": "পরবর্তী পর্ব", + "highlights": "এই শিল্পীর আলোচনামূলক পর্বগুলি শুনুন", + "episodes": "এই শিল্পীর অন্যান্য পর্বগুলি শুনুন", + "back": "অন্য শিল্পী দেখুন", + "country": "দেশ", + "calendar": "ক্যালেন্ডারে যোগ করুন", + "reset": "ফিল্টার রিসেট করুন", + "countries": "দেশগুলি", + "artists": "শিল্পীগণ", + "artistsDescription": "আমাদের শিল্পী ও অতিথিদের তালিকা। অনন্যভাবের মানুষের তালিকা।" + }, + "pa": { + "locale": "en-us", + "artist": "ਕਲਾਕਾਰ", + "aliases": "ਕਲਾਕਾਰ ਦੇ ਉਪਨਾਮ", + "next": "ਅਗਲਾ ਐਪੀਸੋਡ", + "highlights": "ਇਸ ਕਲਾਕਾਰ ਦੀ ਹਾਈਲਾਈਟ ਐਪੀਸੋਡ ਸੁਣੋ", + "episodes": "ਇਸ ਕਲਾਕਾਰ ਦੇ ਹੋਰ ਐਪੀਸੋਡ ਸੁਣੋ", + "back": "ਹੋਰ ਕਲਾਕਾਰ ਵੇਖੋ", + "country": "ਦੇਸ਼", + "calendar": "ਕੈਲੰਡਰ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ", + "reset": "ਫਿਲਟਰ ਰੀਸੈਟ ਕਰੋ", + "countries": "ਦੇਸ਼", + "artists": "ਕਲਾਕਾਰ", + "artistsDescription": "ਸਾਡੇ ਕਲਾਕਾਰ ਅਤੇ ਮੇਹਮਾਨਾਂ ਦੀ ਸੂਚੀ। ਇੱਕ-ਇੱਕ ਦੇ ਅਨੂਠੇ ਲੋਕਾਂ ਦੀ ਸੂਚੀ।" + }, + "tr": { + "locale": "en-us", + "artist": "Sanatçı", + "aliases": "Sanatçının takma adları", + "next": "Sonraki bölüm", + "highlights": "Bu sanatçının vurgulanan bölümlerini dinleyin", + "episodes": "Bu sanatçının diğer bölümlerini dinleyin", + "back": "Diğer sanatçıları gör", + "country": "Ülke", + "calendar": "Takvime ekle", + "reset": "Filtreleri sıfırla", + "countries": "Ülkeler", + "artists": "Sanatçılar", + "artistsDescription": "Sanatçılarımızın ve konuklarımızın listesi. Kendine özgü insanların listesi." + }, + "fi": { + "locale": "en-us", + "artist": "Taiteilija", + "aliases": "Taiteilijan lempinimet", + "next": "Seuraava jakso", + "highlights": "Kuuntele tämän taiteilijan kohokohtaiset jaksot", + "episodes": "Kuuntele tämän taiteilijan muut jaksot", + "back": "Näytä muita taiteilijoita", + "country": "Maa", + "calendar": "Lisää kalenteriin", + "reset": "Nollaa suodattimet", + "countries": "Maat", + "artists": "Taiteilijat", + "artistsDescription": "Lista taiteilijoistamme ja vieraistamme. Yksilöllisten ihmisten lista." + }, + "el": { + "locale": "en-us", + "artist": "Καλλιτέχνης", + "aliases": "Παρατσούκλια του καλλιτέχνη", + "next": "Επόμενο επεισόδιο", + "highlights": "Ακούστε τα επεισόδια που έχουν ξεχωρίσει για αυτόν τον καλλιτέχνη", + "episodes": "Ακούστε τα άλλα επεισόδια αυτού του καλλιτέχνη", + "back": "Δείτε άλλους καλλιτέχνες", + "country": "Χώρα", + "calendar": "Προσθήκη στο ημερολόγιο", + "reset": "Επαναφορά φίλτρων", + "countries": "Χώρες", + "artists": "Καλλιτέχνες", + "artistsDescription": "Μια λίστα με τους καλλιτέχνες και τους επισκέπτες μας. Μια λίστα μοναδικών ανθρώπων." + }, + "ko": { + "locale": "en-us", + "artist": "아티스트", + "aliases": "아티스트의 별명", + "next": "다음 에피소드", + "highlights": "이 아티스트의 하이라이트 에피소드 듣기", + "episodes": "이 아티스트의 다른 에피소드 듣기", + "back": "다른 아티스트 보기", + "country": "국가", + "calendar": "캘린더에 추가", + "reset": "필터 재설정", + "countries": "국가들", + "artists": "아티스트들", + "artistsDescription": "저희 아티스트들과 게스트들의 목록. 독특한 사람들의 목록." + } }; From edbb965c6157b0b5d5a6399435a5fa64bb3d698b Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 10:32:21 +0100 Subject: [PATCH 07/29] ar(feat) [DPCP-108]: Adding more languages coverage --- locale/blog.js | 108 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/locale/blog.js b/locale/blog.js index f415a44..92e4fb1 100644 --- a/locale/blog.js +++ b/locale/blog.js @@ -76,5 +76,113 @@ export const BlogLocale = { "by": "Написано", "back": "Вернуться на главную", "not": "Посты не найдены.", + }, + "ar": { + "locale": "ar", + "by": "من تأليف", + "back": "العودة إلى الصفحة الرئيسية", + "not": "لم يتم العثور على مشاركات." + }, + "he": { + "locale": "he", + "by": "נכתב על ידי", + "back": "חזרה לעמותה", + "not": "לא נמצאו פוסטים." + }, + "zh": { + "locale": "zh", + "by": "作者:", + "back": "返回首页", + "not": "未找到帖子。" + }, + "nl": { + "locale": "nl", + "by": "Geschreven door", + "back": "Terug naar de startpagina", + "not": "Geen berichten gevonden." + }, + "da": { + "locale": "da", + "by": "Skrevet af", + "back": "Tilbage til startsiden", + "not": "Ingen indlæg fundet." + }, + "hu": { + "locale": "hu", + "by": "Írta:", + "back": "Vissza a főoldalra", + "not": "Nincsenek bejegyzések." + }, + "ca": { + "locale": "ca", + "by": "Escrit per", + "back": "Torna a la pàgina principal", + "not": "No s'han trobat entrades." + }, + "eu": { + "locale": "eu", + "by": "Idatzia", + "back": "Itzuli etxeko orrira", + "not": "Ez da mezu aurkitu." + }, + "gl": { + "locale": "gl", + "by": "Escrito por", + "back": "Volver á páxina de inicio", + "not": "Non se atoparon mensaxes." + }, + "sw": { + "locale": "sw", + "by": "Andika na", + "back": "Rudi kwa ukurasa wa nyumbani", + "not": "Hakuna machapisho yaliyopatikana." + }, + "hi": { + "locale": "hi", + "by": "लेखक:", + "back": "होम पेज पर वापस", + "not": "कोई पोस्ट नहीं मिली।" + }, + "ms": { + "locale": "ms", + "by": "Ditulis oleh", + "back": "Kembali ke halaman utama", + "not": "Tiada pos dijumpai." + }, + "bn": { + "locale": "bn", + "by": "লেখক:", + "back": "মূল পাতায় ফিরে", + "not": "কোনো পোস্ট পাওয়া যায়নি।" + }, + "pa": { + "locale": "pa", + "by": "ਨਾਲ ਲਿਖਿਆ", + "back": "ਮੁੱਖ ਪੰਨੇ ਉੱਤੇ ਵਾਪਸ", + "not": "ਕੋਈ ਪੋਸਟ ਨਹੀਂ ਮਿਲੀ।" + }, + "tr": { + "locale": "tr", + "by": "Tarafından yazıldı", + "back": "Ana sayfaya dön", + "not": "Hiç gönderi bulunamadı." + }, + "fi": { + "locale": "fi", + "by": "Kirjoittanut", + "back": "Takaisin etusivulle", + "not": "Ei löydy julkaisuja." + }, + "el": { + "locale": "el", + "by": "Γράφτηκε από", + "back": "Πίσω στην αρχική σελίδα", + "not": "Δεν βρέθηκαν αναρτήσεις." + }, + "ko": { + "locale": "ko", + "by": "작성자", + "back": "홈으로 돌아가기", + "not": "게시물을 찾을 수 없습니다." } } From fce82a26f7b9ab86a31517b8c9d461b80d12376e Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 10:35:29 +0100 Subject: [PATCH 08/29] ar(feat) [DPCP-108]: Adding more languages coverage --- locale/cb.js | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/locale/cb.js b/locale/cb.js index 1b061d6..9254251 100644 --- a/locale/cb.js +++ b/locale/cb.js @@ -51,6 +51,78 @@ export const CB_LOCALE = { "ru-ru": { "submit": "Подписаться на DreamPip", "already": "Вы уже подписаны!" + }, + "ar": { + "submit": "الاشتراك في DreamPip", + "already": "أنت مشترك بالفعل!" + }, + "he": { + "submit": "הרשם ל- DreamPip", + "already": "אתה כבר רשום!" + }, + "zh": { + "submit": "订阅DreamPip", + "already": "你已经订阅了!" + }, + "nl": { + "submit": "Inschrijven voor DreamPip", + "already": "Je bent al ingeschreven!" + }, + "da": { + "submit": "Tilmeld dig til DreamPip", + "already": "Du er allerede tilmeldt!" + }, + "hu": { + "submit": "Feliratkozás a DreamPipre", + "already": "Már feliratkozott!" + }, + "ca": { + "submit": "Subscriu-te a DreamPip", + "already": "Ja estàs subscrit!" + }, + "eu": { + "submit": "DreamPip-en harpidetu", + "already": "Zure altxor bat dagoeneko harpidetu zara!" + }, + "gl": { + "submit": "Subscríbete a DreamPip", + "already": "Xa estás subscrito!" + }, + "sw": { + "submit": "Jiunge na DreamPip", + "already": "Umeshajiandikisha tayari!" + }, + "hi": { + "submit": "DreamPip की सदस्यता लें", + "already": "आप पहले से ही सभी सदस्यों में शामिल हैं!" + }, + "ms": { + "submit": "Langgan DreamPip", + "already": "Anda telah langgan!" + }, + "bn": { + "submit": "DreamPip সাবস্ক্রাইব করুন", + "already": "আপনি ইতিমধ্যে সাবস্ক্রাইব করেছেন!" + }, + "pa": { + "submit": "DreamPip ਵਿੱਚ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ", + "already": "ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਸਭ ਛੜਾ ਗਏ ਹੋ!" + }, + "tr": { + "submit": "DreamPip'e abone ol", + "already": "Zaten abonesiniz!" + }, + "fi": { + "submit": "Tilaa DreamPip", + "already": "Olet jo tilannut!" + }, + "el": { + "submit": "Εγγραφείτε στο DreamPip", + "already": "Έχετε ήδη εγγραφεί!" + }, + "ko": { + "submit": "DreamPip에 가입하기", + "already": "이미 가입되었습니다!" } } } From e4b5819e18017d169bca000fdceee0c2dacb9547 Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 10:47:27 +0100 Subject: [PATCH 09/29] ar(feat) [DPCP-108]: Adding more languages coverage --- locale/episode.js | 362 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 361 insertions(+), 1 deletion(-) diff --git a/locale/episode.js b/locale/episode.js index 5bf5dbe..28192fd 100644 --- a/locale/episode.js +++ b/locale/episode.js @@ -258,5 +258,365 @@ export const EpisodeLocale = { "episodes": "Эпизоды", "episodesDescription": "Список наших шоу. Для вашего удовольствия.", "listen": "Прослушать этот эпизод" - } + }, + "ar": { + "locale": "ar", + "artist": "فنانون", + "show": "عرض", + "event": "حدث", + "country": "بلد", + "city": "مدينة", + "when": "متى", + "back": "العودة إلى الحلقات", + "countdown": "عد تنازلي", + "local": "التوقيت المحلي", + "calendar": "أضف إلى التقويم", + "artistsShows": "الفنانون والعروض", + "featured": "المميز", + "genres": "الأنواع", + "reset": "إعادة تعيين", + "episodes": "الحلقات", + "episodesDescription": "قائمة العروض لدينا. للتمتع بأذنيك.", + "listen": "استمع إلى هذه الحلقة بواسطة" + }, + "he": { + "locale": "he", + "artist": "אמנים", + "show": "הצגה", + "event": "אירוע", + "country": "מדינה", + "city": "עיר", + "when": "מתי", + "back": "חזרה לפרקים", + "countdown": "זיכרון חוזר", + "local": "שעה מקומית", + "calendar": "הוסף ללוח שנה", + "artistsShows": "אמנים וערוצים", + "featured": "מוצג", + "genres": "ז'אנרים", + "reset": "אתחל", + "episodes": "פרקים", + "episodesDescription": "רשימת הערוצים שלנו. לתענוג שמע.", + "listen": "האזינו לפרק זה על ידי" + }, + "zh": { + "locale": "zh", + "artist": "藝術家", + "show": "節目", + "event": "事件", + "country": "國家", + "city": "城市", + "when": "時間", + "back": "返回到集數", + "countdown": "倒數", + "local": "當地時間", + "calendar": "添加到日曆", + "artistsShows": "藝術家和節目", + "featured": "精選", + "genres": "流派", + "reset": "重置", + "episodes": "集數", + "episodesDescription": "我們節目的列表。為您的耳朵享受。", + "listen": "收聽此集節目由" + }, + "nl": { + "locale": "nl", + "artist": "Artiesten", + "show": "Voorstelling", + "event": "Evenement", + "country": "Land", + "city": "Stad", + "when": "Wanneer", + "back": "Terug naar afleveringen", + "countdown": "Aftellen", + "local": "Locale tijd", + "calendar": "Toevoegen aan kalender", + "artistsShows": "Artiesten en Shows", + "featured": "Uitgelicht", + "genres": "Genres", + "reset": "Herstellen", + "episodes": "Afleveringen", + "episodesDescription": "Een lijst van onze shows. Voor uw luisterplezier.", + "listen": "Luister naar deze aflevering door" + }, + "da": { + "locale": "da", + "artist": "Kunstnere", + "show": "Show", + "event": "Begivenhed", + "country": "Land", + "city": "By", + "when": "Hvornår", + "back": "Tilbage til episoder", + "countdown": "Nedtælling", + "local": "Lokal tid", + "calendar": "Tilføj til kalender", + "artistsShows": "Kunstnere og Shows", + "featured": "Fremhævet", + "genres": "Genrer", + "reset": "Nulstil", + "episodes": "Episoder", + "episodesDescription": "En liste over vores shows. Til din øre glæde.", + "listen": "Lyt til denne episode af" + }, + "hu": { + "locale": "hu", + "artist": "Művészek", + "show": "Mutat", + "event": "Esemény", + "country": "Ország", + "city": "Város", + "when": "Mikor", + "back": "Vissza az epizódokhoz", + "countdown": "Visszaszámlálás", + "local": "Helyi idő", + "calendar": "Hozzáadás a naptárhoz", + "artistsShows": "Művészek és bemutatók", + "featured": "Kiemelt", + "genres": "Műfajok", + "reset": "Alaphelyzetbe állítás", + "episodes": "Epizódok", + "episodesDescription": "Az epizódjaink listája. A fülek gyönyöre.", + "listen": "Hallgassa meg ezt az epizódot" + }, + "ca": { + "locale": "ca", + "artist": "Artistes", + "show": "Espectacle", + "event": "Esdeveniment", + "country": "País", + "city": "Ciutat", + "when": "Quan", + "back": "Torna a els episodis", + "countdown": "Compte enrere", + "local": "Hora local", + "calendar": "Afegir al calendari", + "artistsShows": "Artistes i Espectacles", + "featured": "Destacat", + "genres": "Gèneres", + "reset": "Restablir", + "episodes": "Episodis", + "episodesDescription": "Una llista dels nostres espectacles. Per gaudir del teu gust.", + "listen": "Escolta aquest episodi per" + }, + "eu": { + "locale": "eu", + "artist": "Artistleak", + "show": "Erakustaldea", + "event": "Gertaera", + "country": "Herrialdea", + "city": "Hiria", + "when": "Noiz", + "back": "Episodioetara itzuli", + "countdown": "Atzerapen kontuak", + "local": "Eguneratu", + "calendar": "Gehitu egutegian", + "artistsShows": "Artistleak eta Erakusketak", + "featured": "Nabarmendu", + "genres": "Estiloak", + "reset": "Berrezarri", + "episodes": "Episodioak", + "episodesDescription": "Gure erakusketen zerrenda. Zure belarriak alaitzeko.", + "listen": "Entzun epizodio hau" + }, + "gl": { + "locale": "gl", + "artist": "Artistas", + "show": "Espectáculo", + "event": "Evento", + "country": "País", + "city": "Cidade", + "when": "Cando", + "back": "Volve aos episodios", + "countdown": "Conto atrás", + "local": "Hora local", + "calendar": "Engadir ao calendario", + "artistsShows": "Artistas e espectáculos", + "featured": "Destacado", + "genres": "Xéneros", + "reset": "Restablecer", + "episodes": "Episodios", + "episodesDescription": "Unha lista dos nosos espectáculos. Para deleite dos teus oídos.", + "listen": "Escoite este episodio a través de" + }, + "sw": { + "locale": "sw", + "artist": "Wasanii", + "show": "Onyesha", + "event": "Tukio", + "country": "Nchi", + "city": "Mji", + "when": "Lini", + "back": "Rudi kwenye vipindi", + "countdown": "Hesabu", + "local": "Wakati wa eneo", + "calendar": "Ongeza kwenye kalenda", + "artistsShows": "Wasanii na Maonyesho", + "featured": "Iliyochaguliwa", + "genres": "Vigogo", + "reset": "Rudisha", + "episodes": "Vipindi", + "episodesDescription": "Orodha ya vipindi vyetu. Kwa furaha ya masikio yako.", + "listen": "Sikiliza kipindi hiki kwa" + }, + "hi": { + "locale": "hi", + "artist": "कलाकार", + "show": "शो", + "event": "घटना", + "country": "देश", + "city": "शहर", + "when": "कब", + "back": "एपिसोडों पर वापस", + "countdown": "उलटी गिनती", + "local": "स्थानीय समय", + "calendar": "कैलेंडर में जोड़ें", + "artistsShows": "कलाकार और शो", + "featured": "विशेष", + "genres": "प्रकार", + "reset": "रीसेट", + "episodes": "एपिसोड्स", + "episodesDescription": "हमारे शोज की सूची। आपके कान के लिए आनंदपूर्वक।", + "listen": "इस एपिसोड को सुनें" + }, + "ms": { + "locale": "ms", + "artist": "Artis", + "show": "Tunjukkan", + "event": "Acara", + "country": "Negara", + "city": "Bandar", + "when": "Bila", + "back": "Kembali ke episod", + "countdown": "Penurunan", + "local": "Masa tempatan", + "calendar": "Tambah ke kalendar", + "artistsShows": "Artis dan Persembahan", + "featured": "Unggulan", + "genres": "Genres", + "reset": "Tetap semula", + "episodes": "Episod", + "episodesDescription": "Senarai acara kami. Untuk kegembiraan telinga anda.", + "listen": "Dengar episode ini oleh" + }, + "bn": { + "locale": "bn", + "artist": "শিল্পী", + "show": "প্রদর্শন", + "event": "ইভেন্ট", + "country": "দেশ", + "city": "শহর", + "when": "কখন", + "back": "পুনরায় প্রকার করুন", + "countdown": "গণনা থেকে পড়ুন", + "local": "স্থানীয় সময়", + "calendar": "ক্যালেন্ডারে যোগ করুন", + "artistsShows": "শিল্পী এবং প্রদর্শনী", + "featured": "নির্দেশনা", + "genres": "জাতি", + "reset": "পুনঃস্থাপন", + "episodes": "প্রকার", + "episodesDescription": "এটি ওয়ার শোয়ের তালিকা। আপনার কানে আনন্দ দিতে।", + "listen": "এই পর্বটি শুনুন" + }, + "pa": { + "locale": "pa", + "artist": "ਕਲਾਕਾਰ", + "show": "ਦਿਖਾਓ", + "event": "ਇਵੇਂਟ", + "country": "ਦੇਸ਼", + "city": "ਸ਼ਹਿਰ", + "when": "ਕਦੇ", + "back": "ਪਿੱਛੇ ਇੱਕ ਐਪੀਸੋਡ", + "countdown": "ਗਿਣਤੀ", + "local": "ਸਥਾਨਕ ਸਮਾਂ", + "calendar": "ਕੈਲੰਡਰ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ", + "artistsShows": "ਕਲਾਕਾਰਾਂ ਅਤੇ ਸ਼ੋਅਾ", + "featured": "ਪ੍ਰਮੁੱਖ", + "genres": "ਪ੍ਰਕਾਰ", + "reset": "ਰੀਸੈਟ", + "episodes": "ਐਪੀਸੋਡ", + "episodesDescription": "ਸਾਡੇ ਸ਼ੋਵਾਂ ਦੀ ਸੂਚੀ। ਤੁਹਾਡੇ ਕੰਨਾਂ ਲਈ ਆਨੰਦ।", + "listen": "ਇਸ ਐਪੀਸੋਡ ਨੂੰ ਸੁਣੋ" + }, + "tr": { + "locale": "tr", + "artist": "Sanatçılar", + "show": "Göster", + "event": "Etkinlik", + "country": "Ülke", + "city": "Şehir", + "when": "Ne zaman", + "back": "Bölümlere geri dön", + "countdown": "Geri sayım", + "local": "Yerel zaman", + "calendar": "Takvime ekle", + "artistsShows": "Sanatçılar ve Gösteriler", + "featured": "Öne çıkan", + "genres": "Türler", + "reset": "Sıfırla", + "episodes": "Bölümler", + "episodesDescription": "Şovlarımızın listesi. Kulaklarınızın zevkine.", + "listen": "Bu bölümü dinleyerek" + }, + "fi": { + "locale": "fi", + "artist": "Artistit", + "show": "Näytä", + "event": "Tapahtuma", + "country": "Maa", + "city": "Kaupunki", + "when": "Milloin", + "back": "Takaisin jaksoihin", + "countdown": "Laskenta", + "local": "Paikallinen aika", + "calendar": "Lisää kalenteriin", + "artistsShows": "Artistit ja ohjelmat", + "featured": "Esittelyssä", + "genres": "Tyylilajit", + "reset": "Palauta", + "episodes": "Jaksot", + "episodesDescription": "Listaus ohjelmistamme. Korvillesi iloksi.", + "listen": "Kuuntele tätä jaksoa" + }, + "el": { + "locale": "el", + "artist": "Καλλιτέχνες", + "show": "Επιδείξτε", + "event": "Συμβάν", + "country": "Χώρα", + "city": "Πόλη", + "when": "Πότε", + "back": "Πίσω στα επεισόδια", + "countdown": "Αντίστροφη μέτρηση", + "local": "Τοπική ώρα", + "calendar": "Προσθήκη στο ημερολόγιο", + "artistsShows": "Καλλιτέχνες και Επιδείξεις", + "featured": "Προτεινόμενο", + "genres": "Είδη", + "reset": "Επαναφορά", + "episodes": "Επεισόδια", + "episodesDescription": "Μια λίστα με τις εκπομπές μας. Για την απόλαυση των αυτιών σας.", + "listen": "Ακούστε αυτό το επεισόδιο από" + }, + "ko": { + "locale": "ko", + "artist": "아티스트", + "show": "쇼", + "event": "이벤트", + "country": "국가", + "city": "도시", + "when": "언제", + "back": "에피소드로 돌아가기", + "countdown": "카운트다운", + "local": "현지 시간", + "calendar": "캘린더에 추가", + "artistsShows": "아티스트와 쇼", + "featured": "추천", + "genres": "장르", + "reset": "초기화", + "episodes": "에피소드", + "episodesDescription": "우리의 쇼 목록. 귀를 즐겁게하기 위해.", + "listen": "이 음악을 듣기" + }, }; From 5d8efd6fff8e09c53a9c4facbeb26418f0650439 Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 11:01:48 +0100 Subject: [PATCH 10/29] ar(feat) [DPCP-108]: Adding more languages coverage --- locale/event.js | 92 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/locale/event.js b/locale/event.js index 6de30bf..41338c3 100644 --- a/locale/event.js +++ b/locale/event.js @@ -584,6 +584,98 @@ export const EventLocale = { "sendEmail": "Добавьте его", "mode": "Переключить вид" }, + { + "ar": { + "locale": "ar", + "timezone": "Europe/Rome", + "email": "البريد الإلكتروني", + "name": "الاسم", + "phone": "الهاتف", + "phone-helper": "يجب أن يكون رقم هاتفك بهذا الشكل '+12345678' مع رمز البلد.", + "artists": "فنانون", + "country": "البلد", + "city": "المدينة", + "when": "متى", + "related": "حلقات أخرى من ضيوفنا", + "episodes": "استمع إلى حلقات هذا الحدث", + "back": "العودة إلى الأحداث", + "countdown": "العد التنازلي", + "photos": "الصور", + "local": "الوقت المحلي", + "already": "لقد سجلتَ بالفعل لهذا الحدث، نأمل أن نراك هناك!", + "register": "انقر هنا لإضافة اسمك إلى القائمة", + "buy": "انقر هنا لشراء التذاكر", + "calendar": "إضافة إلى التقويم", + "or": "أو، أضف اسمك إلى قائمة الحدث بخصم:", + "reset": "إعادة تعيين التصفية", + "countries": "الدول", + "events": "الأحداث", + "eventsDescription": "قائمة بأحداثنا. مقدمة بمحبة إلى أحيائك.", + "D": "اليوم", + "W": "الأسبوع", + "Q": "الربع", + "M": "الشهر", + "timeframe": "الإطار الزمني", + "space": "المكان", + "time": "الوقت", + "know": "اعرف المزيد في", + "brought": "مقدم لك بواسطة", + "T": "اليوم", + "L": "قائمة", + "allDay": "طوال اليوم", + "terms": "الشروط", + "calendarPrompt": "هل تود إضافة هذا الحدث إلى تقويمك؟", + "redirectPrompt": "هل تود أن تتم توجيهك إلى صفحة الحدث؟", + "ctaMessage": "لا ترى حدثك؟", + "sendEmail": "أضفه", + "mode": "تبديل العرض" + }, + { + "he": { + "locale": "he", + "timezone": "Europe/Rome", + "email": "כתובת דואר אלקטרוני", + "name": "שם", + "phone": "טלפון", + "phone-helper": 'הטלפון שלך צריך להיות בפורמט "+12345678" עם קוד המדינה.', + "artists": "אמנים", + "country": "מדינה", + "city": "עיר", + "when": "מתי", + "related": "פרקים נוספים מהאורחים שלנו", + "episodes": "האזינו לפרקי האירוע הזה", + "back": "חזרה לאירועים", + "countdown": "ספירה לאחור", + "photos": "תמונות", + "local": "שעת מקום", + "already": 'כבר נרשמת לאירוע הזה, מקווים לראותך שם!', + "register": "לחץ כאן כדי להוסיף את שמך לרשימה", + "buy": "לחץ כאן לרכישת כרטיסים", + "calendar": "הוסף ליומן", + "or": 'או, הוסף את שמך לרשימת ההנחות של האירוע:', + "reset": "איפוס מסננים", + "countries": "מדינות", + "events": "אירועים", + "eventsDescription": "רשימת האירועים שלנו. מוגשת באהבה לשכונות שלך.", + "D": "יום", + "W": "שבוע", + "Q": "רבעון", + "M": "חודש", + "timeframe": "זמן מסגרת", + "space": "חלל", + "time": "זמן", + "know": "למידע נוסף בקר", + "brought": "הובא על ידי על ידי", + "T": "היום", + "L": "רשימה", + "allDay": "כל היום", + "terms": "תנאים", + "calendarPrompt": 'האם תרצה להוסיף את האירוע הזה ליומן שלך?', + "redirectPrompt": "האם תרצה להיות מופנה לדף האירוע?", + "ctaMessage": 'לא רואה את האירוע שלך?', + "sendEmail": "הוסף את זה", + "mode": "החלף תצוגה" + }, "country": { "Brazil": "pt-br", "Italy": "it-it", From 59aea2c6be12fd28aa35387c1ca2cb510f41f5c1 Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 11:15:54 +0100 Subject: [PATCH 11/29] ar(feat) [DPCP-108]: Adding more languages coverage --- locale/event.js | 408 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 406 insertions(+), 2 deletions(-) diff --git a/locale/event.js b/locale/event.js index 41338c3..6489875 100644 --- a/locale/event.js +++ b/locale/event.js @@ -584,7 +584,6 @@ export const EventLocale = { "sendEmail": "Добавьте его", "mode": "Переключить вид" }, - { "ar": { "locale": "ar", "timezone": "Europe/Rome", @@ -630,7 +629,6 @@ export const EventLocale = { "sendEmail": "أضفه", "mode": "تبديل العرض" }, - { "he": { "locale": "he", "timezone": "Europe/Rome", @@ -676,6 +674,412 @@ export const EventLocale = { "sendEmail": "הוסף את זה", "mode": "החלף תצוגה" }, + "zh": { + "locale": "zh", + "timezone": "Europe/Rome", + "email": "邮箱地址", + "name": "姓名", + "phone": "电话", + "phone-helper": "您的电话应该是'+12345678'格式,并带有国家代码。", + "artists": "艺术家", + "country": "国家", + "city": "城市", + "when": "时间", + "related": "我们嘉宾的其他节目", + "episodes": "收听此活动的节目", + "back": "返回活动", + "countdown": "倒计时", + "photos": "照片", + "local": "当地时间", + "already": "您已经为此活动注册,期待在那里见到您!", + "register": "单击此处将您的姓名添加到列表中", + "buy": "单击此处购买门票", + "calendar": "添加到日历", + "or": "或者,将您的姓名添加到活动折扣列表中:", + "reset": "重置筛选", + "countries": "国家", + "events": "活动", + "eventsDescription": "我们活动的列表。 寄送爱心到您的区域。", + "D": "日", + "W": "周", + "Q": "季度", + "M": "月", + "timeframe": "时间范围", + "space": "空间", + "time": "时间", + "know": "了解更多", + "brought": "由...带给您", + "T": "今天", + "L": "清单", + "allDay": "全天", + "terms": "条款", + "calendarPrompt": "您是否想将此活动添加到您的日历中?", + "redirectPrompt": "您是否想要被重定向到活动页面?", + "ctaMessage": "找不到您的活动?", + "sendEmail": "添加", + "mode": "切换视图" + }, + "nl": { + "locale": "nl", + "timezone": "Europe/Rome", + "email": "E-mailadres", + "name": "Naam", + "phone": "Telefoon", + "phone-helper": "Uw telefoonnummer moet in het formaat '+12345678' zijn met de landcode.", + "artists": "Artiesten", + "country": "Land", + "city": "Stad", + "when": "Wanneer", + "related": "Andere afleveringen van onze gasten", + "episodes": "Luister naar de afleveringen van dit evenement", + "back": "Terug naar evenementen", + "countdown": "Aftellen", + "photos": "Foto's", + "local": "Lokale tijd", + "already": "U bent al geregistreerd voor dit evenement, we hopen u daar te zien!", + "register": "Klik hier om uw naam aan de lijst toe te voegen", + "buy": "Klik hier om tickets te kopen", + "calendar": "Toevoegen aan kalender", + "or": "Of voeg uw naam toe aan de evenementskortingslijst:", + "reset": "Filters herstellen", + "countries": "Landen", + "events": "Evenementen", + "eventsDescription": "Een lijst van onze evenementen. Met liefde gebracht naar uw wijken.", + "D": "Dag", + "W": "Week", + "Q": "Kwartaal", + "M": "Maand", + "timeframe": "Tijdsbestek", + "space": "Ruimte", + "time": "Tijd", + "know": "Meer informatie op", + "brought": "Aangeboden door", + "T": "Vandaag", + "L": "Lijst", + "allDay": "hele dag", + "terms": "Voorwaarden", + "calendarPrompt": "Wilt u dit evenement aan uw kalender toevoegen?", + "redirectPrompt": "Wilt u worden doorverwezen naar de evenementpagina?", + "ctaMessage": "Ziet u uw evenement niet?", + "sendEmail": "Voeg toe", + "mode": "Schakel weergave" + }, + "da": { + "locale": "da", + "timezone": "Europe/Rome", + "email": "E-mailadresse", + "name": "Navn", + "phone": "Telefon", + "phone-helper": "Dit telefonnummer skal være i formatet '+12345678' med landskoden.", + "artists": "Kunstnere", + "country": "Land", + "city": "By", + "when": "Hvornår", + "related": "Andre episoder med vores gæster", + "episodes": "Lyt til denne begivenheds episoder", + "back": "Tilbage til begivenheder", + "countdown": "Nedtælling", + "photos": "Billeder", + "local": "Lokal tid", + "already": "Du er allerede registreret til dette arrangement, håber at se dig der!", + "register": "Klik her for at tilføje dit navn til listen", + "buy": "Klik her for at købe billetter", + "calendar": "Tilføj til kalender", + "or": "Eller tilføj dit navn til arrangementets rabatliste:", + "reset": "Nulstil filtre", + "countries": "Lande", + "events": "Begivenheder", + "eventsDescription": "En liste over vores begivenheder. Leveret med kærlighed til dine kvarterer.", + "D": "Dag", + "W": "Uge", + "Q": "Kvartal", + "M": "Måned", + "timeframe": "Tidsramme", + "space": "Plads", + "time": "Tid", + "know": "Få mere at vide på", + "brought": "Præsenteret af", + "T": "I dag", + "L": "Liste", + "allDay": "hele dagen", + "terms": "Vilkår", + "calendarPrompt": "Vil du tilføje denne begivenhed til din kalender?", + "redirectPrompt": "Vil du omdirigeres til begivenhedssiden?", + "ctaMessage": "Ser du ikke din begivenhed?", + "sendEmail": "Tilføj den", + "mode": "Skift visning" + }, + "hu": { + "locale": "hu", + "timezone": "Europe/Rome", + "email": "Email cím", + "name": "Név", + "phone": "Telefon", + "phone-helper": "A telefonszámodnak a '+12345678' formátumban kell lennie a országkóddal.", + "artists": "Művészek", + "country": "Ország", + "city": "Város", + "when": "Mikor", + "related": "Egyéb epizódok a vendégeinktől", + "episodes": "Hallgasd meg ezen esemény epizódjait", + "back": "Vissza az eseményekhez", + "countdown": "Visszaszámlálás", + "photos": "Fotók", + "local": "Helyi idő", + "already": "Már regisztráltál erre az eseményre, reméljük, ott találkozunk!", + "register": "Kattints ide a neved hozzáadásához a listához", + "buy": "Kattints ide a jegyek megvásárlásához", + "calendar": "Hozzáadás a naptárhoz", + "or": "Vagy, add hozzá a neved az esemény kedvezménylistájához:", + "reset": "Szűrők visszaállítása", + "countries": "Országok", + "events": "Események", + "eventsDescription": "Az eseményeink listája. Szeretettel hozva a kerületeidbe.", + "D": "Nap", + "W": "Hét", + "Q": "Negyedév", + "M": "Hónap", + "timeframe": "Időkeret", + "space": "Tér", + "time": "Idő", + "know": "További információkért látogass el", + "brought": "Szeretettel mutatja be", + "T": "Ma", + "L": "Lista", + "allDay": "egész nap", + "terms": "Feltételek", + "calendarPrompt": "Szeretnéd hozzáadni ezt az eseményt a naptárodra?", + "redirectPrompt": "Szeretnél átirányítani az esemény oldalára?", + "ctaMessage": "Nem látod az eseményed?", + "sendEmail": "Hozzáadás", + "mode": "Nézet váltás" + }, + "ca": { + "locale": "ca", + "timezone": "Europe/Rome", + "email": "Adreça electrònica", + "name": "Nom", + "phone": "Telèfon", + "phone-helper": "El vostre telèfon ha de ser al format '+12345678' amb el codi de país.", + "artists": "Artistes", + "country": "País", + "city": "Ciutat", + "when": "Quan", + "related": "Altres episodis dels nostres convidats", + "episodes": "Escolta els episodis d'aquest esdeveniment", + "back": "Torna a els esdeveniments", + "countdown": "Comptat enrere", + "photos": "Fotos", + "local": "Hora local", + "already": "Ja esteu registrat per a aquest esdeveniment, esperem veure-us allà!", + "register": "Feu clic aquí per afegir el teu nom a la llista", + "buy": "Feu clic aquí per comprar entrades", + "calendar": "Afegir al calendari", + "or": "O, afegiu el vostre nom a la llista de descomptes de l'esdeveniment:", + "reset": "Restablir filtres", + "countries": "Països", + "events": "Esdeveniments", + "eventsDescription": "Una llista dels nostres esdeveniments. Portat amb amor als vostres barris.", + "D": "Dia", + "W": "Setmana", + "Q": "Trimestre", + "M": "Mes", + "timeframe": "Marc de temps", + "space": "Espai", + "time": "Hora", + "know": "Més informació a", + "brought": "Portat per", + "T": "Avui", + "L": "Llista", + "allDay": "tot el dia", + "terms": "Termes", + "calendarPrompt": "Voleu afegir aquest esdeveniment al vostre calendari?", + "redirectPrompt": "Voleu ser redirigit a la pàgina de l'esdeveniment?", + "ctaMessage": "No veieu el vostre esdeveniment?", + "sendEmail": "Afegiu-ho", + "mode": "Canviar vista" + } + "eu": { + "locale": "eu", + "timezone": "Europe/Rome", + "email": "Posta elektronikoa", + "name": "Izena", + "phone": "Telefonoa", + "phone-helper": "Zure telefonoa '+12345678' formatuan egon behar da, herrialdearen kodearekin.", + "artists": "Artistak", + "country": "Herrialdea", + "city": "Hiri", + "when": "Noiz", + "related": "Beste ospetxe eta gai baten saioak", + "episodes": "Entzun ekitaldi honen saioak", + "back": "Itzuli ekitaldietara", + "countdown": "Etiketa", + "photos": "Argazkiak", + "local": "Neurri lokalak", + "already": "Dagoeneko erregistratu zara ekitaldi honetarako, seguruenik han ikusteko!", + "register": "Klikatu hemen zure izena zerrendan gehitzeko", + "buy": "Klikatu hemen sarrerak erosteko", + "calendar": "Gehitu egutegira", + "or": "Edo, gehitu zure izena ekitaldiaren deskontu zerrendan:", + "reset": "Ezabatu iragazkiak", + "countries": "Herrialdeak", + "events": "Ekitaldiak", + "eventsDescription": "Gure ekitaldien zerrenda. Premia garbia zure auzoraino ekarria.", + "D": "Eguna", + "W": "Astea", + "Q": "Lauhileko", + "M": "Hilabetea", + "timeframe": "Denbora-taula", + "space": "Espazioa", + "time": "Ordua", + "know": "Jakiteko gehiago", + "brought": "Zuei ekarria", + "T": "Gaur", + "L": "Zerrenda", + "allDay": "egun osoa", + "terms": "Eskakizunak", + "calendarPrompt": "Nahi al duzu ekitaldi hau zure egutegian gehitu?", + "redirectPrompt": "Zuzenean bideratu nahi al zara ekitaldi-orrialdera?", + "ctaMessage": "Ez duzu zure ekitaldirik ikusten?", + "sendEmail": "Gehitu", + "mode": "Irudiak aldatu" + }, + "gl": { + "locale": "gl", + "timezone": "Europe/Rome", + "email": "Enderezo de correo electrónico", + "name": "Nome", + "phone": "Teléfono", + "phone-helper": "O teu teléfono debe estar no formato '+12345678' cun código de país.", + "artists": "Artistas", + "country": "País", + "city": "Cidade", + "when": "Cando", + "related": "Outros episodios dos nosos convidados", + "episodes": "Escoita os episodios deste evento", + "back": "Volver aos eventos", + "countdown": "Conto atrás", + "photos": "Fotos", + "local": "Hora local", + "already": "Xa estás rexistrado para este evento, esperamos verte alí!", + "register": "Prema aquí para engadir o teu nome á lista", + "buy": "Prema aquí para mercar entradas", + "calendar": "Engadir ao calendario", + "or": "Ou, engade o teu nome á lista de descontos do evento:", + "reset": "Restablecer filtros", + "countries": "Países", + "events": "Eventos", + "eventsDescription": "Unha lista dos nosos eventos. Traído con amor aos teus barrios.", + "D": "Día", + "W": "Semana", + "Q": "Cuarto", + "M": "Mes", + "timeframe": "Tempo", + "space": "Espazo", + "time": "Tempo", + "know": "Saber máis en", + "brought": "Traído por", + "T": "Hoxe", + "L": "Lista", + "allDay": "todo o día", + "terms": "Termos", + "calendarPrompt": "Gustaríache engadir este evento ao teu calendario?", + "redirectPrompt": "Gustaríache ser redirixido á páxina do evento?", + "ctaMessage": "Non ves o teu evento?", + "sendEmail": "Engadilo", + "mode": "Cambiar vista" + }, + "sw": { + "locale": "sw", + "timezone": "Europe/Rome", + "email": "Anwani ya Barua pepe", + "name": "Jina", + "phone": "Simu", + "phone-helper": "Simu yako inapaswa kuwa kwenye muundo wa '+12345678' na msimbo wa nchi.", + "artists": "Wasanii", + "country": "Nchi", + "city": "Jiji", + "when": "Lini", + "related": "Matukio mengine kutoka kwa wageni wetu", + "episodes": "Sikiliza matukio ya tukio hili", + "back": "Rudi kwa matukio", + "countdown": "Udhibiti", + "photos": "Picha", + "local": "Saa ya eneo", + "already": "Umeregistrishwa tayari kwa tukio hili, tunatarajia kukutana nawe huko!", + "register": "Bonyeza hapa kuongeza jina lako kwenye orodha", + "buy": "Bonyeza hapa kununua tiketi", + "calendar": "Ongeza kwenye kalenda", + "or": "Au, ongeza jina lako kwenye orodha ya punguzo ya tukio:", + "reset": "Rudisha vichujio", + "countries": "Nchi", + "events": "Matukio", + "eventsDescription": "Orodha ya matukio yetu. Iliyotolewa kwa upendo kwa maeneo yako.", + "D": "Siku", + "W": "Wiki", + "Q": "Nusu", + "M": "Mwezi", + "timeframe": "Muda", + "space": "Nafasi", + "time": "Muda", + "know": "Jua zaidi katika", + "brought": "Iliyoteuliwa na", + "T": "Leo", + "L": "Orodha", + "allDay": "siku nzima", + "terms": "Vigezo", + "calendarPrompt": "Je! Ungependa kuongeza tukio hili kwenye kalenda yako?", + "redirectPrompt": "Je! Ungependa kuelekezwa kwenye ukurasa wa tukio?", + "ctaMessage": "Hauoni tukio lako?", + "sendEmail": "Ongeza", + "mode": "Badili mtazamo" + }, + "hi": { + "locale": "hi", + "timezone": "Europe/Rome", + "email": "ईमेल पता", + "name": "नाम", + "phone": "फ़ोन", + "phone-helper": "आपका फ़ोन '+12345678' के स्वरूप में होना चाहिए कि देश कोड के साथ।", + "artists": "कलाकार", + "country": "देश", + "city": "शहर", + "when": "कब", + "related": "हमारे मेहमानों के अन्य कार्यक्रमों", + "episodes": "इस घटना के प्रकरणों को सुनें", + "back": "घटनाओं पर वापस", + "countdown": "उलटी गिनती", + "photos": "फोटो", + "local": "स्थानीय समय", + "already": "आप इस घटना के लिए पहले से ही पंजीकृत हैं, आपको वहाँ देखने की आशा है!", + "register": "अपना नाम सूची में जोड़ने के लिए यहाँ क्लिक करें", + "buy": "टिकट खरीदने के लिए यहाँ क्लिक करें", + "calendar": "कैलेंडर में जोड़ें", + "or": "अथवा, घटना छूट सूची में अपना नाम जोड़ें:", + "reset": "फ़िल्टर रीसेट करें", + "countries": "देश", + "events": "घटनाएँ", + "eventsDescription": "हमारे कार्यक्रमों की सूची। प्यार के साथ आपके जिलों में पेश की गई।", + "D": "दिन", + "W": "सप्ताह", + "Q": "तिमाही", + "M": "महीना", + "timeframe": "समय-सीमा", + "space": "स्थान", + "time": "समय", + "know": "पर अधिक जानें", + "brought": "आपके लिए लाया गया है", + "T": "आज", + "L": "सूची", + "allDay": "पूरे दिन", + "terms": "शर्तें", + "calendarPrompt": "क्या आप इस घटना को अपने कैलेंडर में जोड़ना चाहेंगे?", + "redirectPrompt": "क्या आपको इस घटना पृष्ठ पर पुन: निर्देशित किया जाए?", + "ctaMessage": "अपनी घटना नहीं देख रहे हैं?", + "sendEmail": "इसे जोड़ें", + "mode": "दृश्य बदलें" + }, + "country": { "Brazil": "pt-br", "Italy": "it-it", From d700ee16ea25d2d8c8fb0fa66c5c5c907efdb6bb Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 11:42:43 +0100 Subject: [PATCH 12/29] ar(feat) [DPCP-108]: Adding more languages coverage --- locale/event.js | 336 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 334 insertions(+), 2 deletions(-) diff --git a/locale/event.js b/locale/event.js index 6489875..ce9fef8 100644 --- a/locale/event.js +++ b/locale/event.js @@ -1079,7 +1079,321 @@ export const EventLocale = { "sendEmail": "इसे जोड़ें", "mode": "दृश्य बदलें" }, - + "ms": { + "locale": "ms", + "timezone": "Europe/Rome", + "email": "Alamat Emel", + "name": "Nama", + "phone": "Nombor Telefon", + "phone-helper": "Nombor telefon anda perlu dalam format '+12345678' dengan kod negara.", + "artists": "Artis", + "country": "Negara", + "city": "Bandar", + "when": "Bila", + "related": "Episod lain dari tetamu kami", + "episodes": "Dengar episod acara ini", + "back": "Kembali ke acara", + "countdown": "Hitung mundur", + "photos": "Foto", + "local": "Masa tempatan", + "already": "Anda telah mendaftar untuk acara ini, harap dapat berjumpa dengan anda!", + "register": "Klik di sini untuk menambah nama anda ke senarai", + "buy": "Klik di sini untuk membeli tiket", + "calendar": "Tambah ke kalendar", + "or": "Atau, tambahkan nama anda ke senarai diskaun acara:", + "reset": "Tetapkan semula penapis", + "countries": "Negara-negara", + "events": "Acara", + "eventsDescription": "Senarai acara kami. Dikurniakan dengan kasih sayang kepada negeri anda.", + "D": "Hari", + "W": "Minggu", + "Q": "Suku", + "M": "Bulan", + "timeframe": "Jangka masa", + "space": "Ruang", + "time": "Masa", + "know": "Ketahui lebih lanjut di", + "brought": "Dikurniakan oleh", + "T": "Hari Ini", + "L": "Senarai", + "allDay": "seharian", + "terms": "Terma", + "calendarPrompt": "Adakah anda ingin menambah acara ini ke kalendar anda?", + "redirectPrompt": "Adakah anda ingin diarahkan ke halaman acara?", + "ctaMessage": "Tidak melihat acara anda?", + "sendEmail": "Tambahkan", + "mode": "Tukar pandangan" + }, + "bn": { + "locale": "bn", + "timezone": "Europe/Rome", + "email": "ইমেইল ঠিকানা", + "name": "নাম", + "phone": "ফোন", + "phone-helper": "আপনার ফোন কান্ট্রি কোড '+12345678' সহ হতে হবে।", + "artists": "শিল্পী", + "country": "দেশ", + "city": "শহর", + "when": "কখন", + "related": "আমাদের অতিথিরা দ্বারা অন্য পর্ব", + "episodes": "এই ইভেন্টের পর্ব শোনুন", + "back": "ইভেন্টসগুলিতে ফিরে যান", + "countdown": "কাউন্টডাউন", + "photos": "ছবি", + "local": "স্থানীয় সময়", + "already": "এই ইভেন্টের জন্য আপনি ইতিমধ্যে নিবন্ধিত, আপনাকে সেখানে দেখতে আশা করি!", + "register": "তালিকায় আপনার নাম যোগ করতে এখানে ক্লিক করুন", + "buy": "টিকেট কিনতে এখানে ক্লিক করুন", + "calendar": "ক্যালেন্ডারে যোগ করুন", + "or": "বা, আপনার নামটি ইভেন্ট ছাড় তালিকায় যোগ করুন:", + "reset": "ফিল্টার রিসেট", + "countries": "দেশসমূহ", + "events": "ইভেন্টস", + "eventsDescription": "আমাদের ইভেন্টসগুলির তালিকা। তোমাদের জন্য ভালোবাসায় পরিবৃত্ত।", + "D": "দিন", + "W": "সপ্তাহ", + "Q": "ত্রৈমাসিক", + "M": "মাস", + "timeframe": "সময়সীমা", + "space": "স্থান", + "time": "সময়", + "know": "বিস্তারিত জানুন", + "brought": "তাকে এনেছে", + "T": "আজ", + "L": "তালিকা", + "allDay": "সম্পূর্ণ দিন", + "terms": "শর্তাবলী", + "calendarPrompt": "আপনি কি এই ইভেন্টটি আপনার ক্যালেন্ডারে যোগ করতে চান?", + "redirectPrompt": "আপনি কি ইভেন্ট পৃষ্ঠায় পুনঃনির্দেশ পেতে চান?", + "ctaMessage": "আপনার ইভেন্ট দেখতে পাচ্ছেন না?", + "sendEmail": "যোগ করুন", + "mode": "দেখা পরিবর্তন" + }, + "pa": { + "locale": "pa", + "timezone": "Europe/Rome", + "email": "ਈਮੇਲ ਐਡਰੈੱਸ", + "name": "ਨਾਮ", + "phone": "ਫੋਨ", + "phone-helper": "ਤੁਹਾਡਾ ਫੋਨ ਕੋਡ ਦੇ ਨਾਲ '+12345678' ਫਾਰਮੇਟ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।", + "artists": "ਕਲਾਕਾਰ", + "country": "ਦੇਸ਼", + "city": "ਸ਼ਹਿਰ", + "when": "ਕਦ", + "related": "ਸਾਡੇ ਮਹਿਮਾਨਾਂ ਤੋਂ ਹੋਰ ਪ੍ਰੇਮਚੰਦ", + "episodes": "ਇਹ ਈਵੈਂਟ ਦੇ ਐਪੀਸੋਡ ਸੁਣੋ", + "back": "ਇਵੈਂਟਸ ਉੱਤੇ ਵਾਪਸ ਜਾਓ", + "countdown": "ਨਿਗਰਾਨੀ ਕਰੋ", + "photos": "ਫੋਟੋਆਂ", + "local": "ਸਥਾਨਕ ਸਮਾਂ", + "already": "ਤੁਸੀਂ ਇਸ ਇਵੈਂਟ ਲਈ ਪਹਿਲਾਂ ਹੀ ਰਜਿਸਟਰ ਕਰ ਚੁੱਕੇ ਹੋ, ਉਮੀਦ ਹੈ ਕਿ ਤੁਸੀਂ ਉਥੇ ਮਿਲਣ ਦੇਖੋਗੇ!", + "register": "ਅਪਣਾ ਨਾਮ ਸੂਚੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਇੱਥੇ ਕਲਿਕ ਕਰੋ", + "buy": "ਟਿਕਟਾਂ ਖਰੀਦਣ ਲਈ ਇੱਥੇ ਕਲਿਕ ਕਰੋ", + "calendar": "ਕੈਲੇਂਡਰ ਵਿੱਚ ਜੋੜੋ", + "or": "ਜਾਂ, ਆਪਣਾ ਨਾਮ ਘਟਕ ਸੂਚੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ:", + "reset": "ਫਿਲਟਰ ਰੀਸੈੱਟ", + "countries": "ਦੇਸ਼", + "events": "ਇਵੈਂਟ", + "eventsDescription": "ਸਾਡੇ ਇਵੈਂਟ. ਪਾਸ਼ਾਪਾਸ਼ ਉੱਤੇ ਲਵ ਵਿਦ ਤੁਹਾਨੂੰ ਲੈ ਕੇ ਆਇਆ।", + "D": "ਦਿਨ", + "W": "ਹਫਤਾ", + "Q": "ਤਿਮਾਹੀ", + "M": "ਮਹੀਨਾ", + "timeframe": "ਸਮੇਯਮ", + "space": "ਖਾਲੀ ਥਾਂ", + "time": "ਸਮਾਂ", + "know": "ਹੋਰ ਜਾਣੋ", + "brought": "ਤੁਹਾਡੇ ਨਾਲ ਲਿਆਇਆ", + "T": "ਅੱਜ", + "L": "ਸੂਚੀ", + "allDay": "ਪੁਰੇ ਦਿਨ", + "terms": "ਸ਼ਰਤਾਂ", + "calendarPrompt": "ਕੀ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਇਹ ਇਵੈਂਟ ਤੁਹਾਡੇ ਕੈਲੇਂਡਰ ਵਿੱਚ ਜੋੜਾ ਜਾਵੇ?", + "redirectPrompt": "ਕੀ ਤੁਸੀਂ ਇਵੈਂਟ ਪੇਜ 'ਤੇ ਨਿਰਦੇਸ਼ਤ ਕਰਵਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?", + "ctaMessage": "ਤੁਹਾਡਾ ਇਵੈਂਟ ਨਹੀਂ ਦਿਖ ਰਹਾ?", + "sendEmail": "ਸ਼ਾਮਲ ਕਰੋ", + "mode": "ਦੇਖੋ ਵੇਖੋ" + }, + "tr": { + "locale": "tr", + "timezone": "Europe/Rome", + "email": "E-posta Adresi", + "name": "Ad", + "phone": "Telefon", + "phone-helper": "Telefonunuzun ülke kodu '+12345678' formatında olmalıdır.", + "artists": "Sanatçılar", + "country": "Ülke", + "city": "Şehir", + "when": "Ne zaman", + "related": "Konuklarımızdan diğer bölümler", + "episodes": "Bu etkinliğin bölümlerini dinleyin", + "back": "Etkinliklere geri dön", + "countdown": "Geri sayaç", + "photos": "Fotoğraflar", + "local": "Yerel saat", + "already": "Bu etkinlik için zaten kayıtlı oldunuz, sizi orada görmekten mutluluk duyarız!", + "register": "Adınızı listeye eklemek için buraya tıklayın", + "buy": "Bilet satın almak için buraya tıklayın", + "calendar": "Takvime ekle", + "or": "Veya, isminizi etkinlik indirim listesine ekleyin:", + "reset": "Filtreleri sıfırla", + "countries": "Ülkeler", + "events": "Etkinlikler", + "eventsDescription": "Etkinliklerimizin listesi. Sevgiyle mahallenize getirildi.", + "D": "Gün", + "W": "Hafta", + "Q": "Çeyrek", + "M": "Ay", + "timeframe": "Zaman aralığı", + "space": "Uzay", + "time": "Zaman", + "know": "Daha fazla bilgi edinin", + "brought": "Tarafından getirildi", + "T": "Bugün", + "L": "Liste", + "allDay": "tüm gün", + "terms": "Şartlar", + "calendarPrompt": "Bu etkinliği takviminize eklemek ister misiniz?", + "redirectPrompt": "Etkinlik sayfasına yönlendirilmek ister misiniz?", + "ctaMessage": "Etkinliğinizi göremiyor musunuz?", + "sendEmail": "Ekle", + "mode": "Görünümü değiştir" + }, + "fi": { + "locale": "fi", + "timezone": "Europe/Rome", + "email": "Sähköpostiosoite", + "name": "Nimi", + "phone": "Puhelin", + "phone-helper": "Puhelimesi tulee olla muodossa '+12345678' maakoodilla.", + "artists": "Taiteilijat", + "country": "Maa", + "city": "Kaupunki", + "when": "Milloin", + "related": "Muut jaksot vierailtamme kanssa", + "episodes": "Kuuntele tämän tapahtuman jaksot", + "back": "Takaisin tapahtumiin", + "countdown": "Aikalaskuri", + "photos": "Kuvat", + "local": "Paikallinen aika", + "already": "Olet jo rekisteröitynyt tähän tapahtumaan, toivottavasti näemme sinut siellä!", + "register": "Lisää nimesi listalle napsauttamalla tästä", + "buy": "Osta liput napsauttamalla tästä", + "calendar": "Lisää kalenteriin", + "or": "Tai lisää nimesi tapahtuman alennuslistalle:", + "reset": "Nollaa suodattimet", + "countries": "Maat", + "events": "Tapahtumat", + "eventsDescription": "Lista tapahtumistamme. Tuotu rakkaudella kaupungeillesi.", + "D": "Päivä", + "W": "Viikko", + "Q": "Vuorokausi", + "M": "Kuukausi", + "timeframe": "Aikataulu", + "space": "Tila", + "time": "Aika", + "know": "Tiedä lisää", + "brought": "Tuonut sinulle", + "T": "Tänään", + "L": "Luettelo", + "allDay": "koko päivä", + "terms": "Ehdot", + "calendarPrompt": "Haluatko lisätä tämän tapahtuman kalenteriisi?", + "redirectPrompt": "Haluatko siirtyä tapahtuman sivulle?", + "ctaMessage": "Et näe tapahtumaasi?", + "sendEmail": "Lisää se", + "mode": "Vaihda näkymä" + }, + "el": { + "locale": "el", + "timezone": "Europe/Rome", + "email": "Διεύθυνση Email", + "name": "Όνομα", + "phone": "Τηλέφωνο", + "phone-helper": "Το τηλέφωνό σας πρέπει να είναι στη μορφή '+12345678' με τον τηλεφωνικό κωδικό.", + "artists": "Καλλιτέχνες", + "country": "Χώρα", + "city": "Πόλη", + "when": "Πότε", + "related": "Άλλα επεισόδια από τους φιλοξενούμενους μας", + "episodes": "Ακούστε τα επεισόδια αυτής της εκδήλωσης", + "back": "Πίσω στις εκδηλώσεις", + "countdown": "Αντίστροφη μέτρηση", + "photos": "Φωτογραφίες", + "local": "Τοπική ώρα", + "already": "Έχετε ήδη εγγραφεί σε αυτήν την εκδήλωση, ελπίζουμε να σας δούμε εκεί!", + "register": "Κάντε κλικ εδώ για να προσθέσετε το όνομά σας στη λίστα", + "buy": "Κάντε κλικ εδώ για να αγοράσετε εισιτήρια", + "calendar": "Προσθήκη στο ημερολόγιο", + "or": "Ή, προσθέστε το όνομά σας στη λίστα έκπτωσης της εκδήλωσης:", + "reset": "Επαναφορά φίλτρων", + "countries": "Χώρες", + "events": "Εκδηλώσεις", + "eventsDescription": "Λίστα με τις εκδηλώσεις μας. Φέρνοντας με αγάπη στις γειτονιές σας.", + "D": "Ημέρα", + "W": "Εβδομάδα", + "Q": "Τρίμηνο", + "M": "Μήνας", + "timeframe": "Χρονικό πλαίσιο", + "space": "Χώρος", + "time": "Ώρα", + "know": "Μάθετε περισσότερα στη διεύθυνση", + "brought": "Φέρνεται από", + "T": "Σήμερα", + "L": "Λίστα", + "allDay": "ολοήμερα", + "terms": "Όροι", + "calendarPrompt": "Θέλετε να προσθέσετε αυτήν την εκδήλωση στο ημερολόγιό σας;", + "redirectPrompt": "Θέλετε να ανακατευθυνθείτε στη σελίδα της εκδήλωσης;", + "ctaMessage": "Δεν βλέπετε την εκδήλωσή σας;", + "sendEmail": "Προσθήκη", + "mode": "Αλλαγή προβολής" + }, + "ko": { + "locale": "ko", + "timezone": "Europe/Rome", + "email": "이메일 주소", + "name": "이름", + "phone": "전화번호", + "phone-helper": "전화번호는 국가 코드가 포함된 '+12345678' 형식이어야 합니다.", + "artists": "아티스트", + "country": "국가", + "city": "도시", + "when": "언제", + "related": "게스트의 다른 에피소드", + "episodes": "이 이벤트의 에피소드 듣기", + "back": "이벤트로 돌아가기", + "countdown": "카운트다운", + "photos": "사진", + "local": "현지 시간", + "already": "당신은 이미이 이벤트에 등록되었습니다. 여기서 만나길 바랍니다!", + "register": "이름을 목록에 추가하려면 여기를 클릭하십시오", + "buy": "여기를 클릭하여 티켓 구매", + "calendar": "캘린더에 추가", + "or": "또는 이벤트 할인 목록에 이름을 추가하십시오:", + "reset": "필터 재설정", + "countries": "국가", + "events": "이벤트", + "eventsDescription": "저희 이벤트 목록. 사랑으로 여러분의 시내에 가져옵니다.", + "D": "일", + "W": "주", + "Q": "분기", + "M": "월", + "timeframe": "시간대", + "space": "공간", + "time": "시간", + "know": "자세한 사항은 여기에서 확인하세요", + "brought": "함께한", + "T": "오늘", + "L": "목록", + "allDay": "하루 종일", + "terms": "약관", + "calendarPrompt": "이 이벤트를 캘린더에 추가하시겠습니까?", + "redirectPrompt": "이벤트 페이지로 이동하시겠습니까?", + "ctaMessage": "귀하의 이벤트를 보지 못하시나요?", + "sendEmail": "추가", + "mode": "보기 전환" + }, "country": { "Brazil": "pt-br", "Italy": "it-it", @@ -1093,6 +1407,24 @@ export const EventLocale = { "Estonia": "et-ee", "Japan": "ja-jp", "Russia": "ru-ru", - "default": "en-us" + "Middle East": "ar", + "Israel": "he", + "China": "zh", + "Netherlands": "nl", + "Denmark": "da", + "Hungary": "hu", + "Catalonia": "ca", + "Basque Country": "eu", + "Galicia": "gl", + "Kenya": "sw", + "India": "hi", + "Malaysia": "ms", + "Bangladesh": "bn", + "Pakistan": "pa", + "Turkey": "tr", + "Finland": "fi", + "Greece": "el", + "South Korea": "ko", + "default": "en-us", } } From ca1c5dc0081cdd6f80b00c7c421930de31424f73 Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 11:49:22 +0100 Subject: [PATCH 13/29] ar(feat) [DPCP-108]: Adding more languages coverage --- locale/event.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/event.js b/locale/event.js index ce9fef8..250e9ce 100644 --- a/locale/event.js +++ b/locale/event.js @@ -898,7 +898,7 @@ export const EventLocale = { "ctaMessage": "No veieu el vostre esdeveniment?", "sendEmail": "Afegiu-ho", "mode": "Canviar vista" - } + }, "eu": { "locale": "eu", "timezone": "Europe/Rome", From 129e6285f64cc848fe7642abe3bb694a48c987ee Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 12:01:40 +0100 Subject: [PATCH 14/29] ar(feat) [DPCP-108]: Adding more languages coverage --- locale/header.js | 252 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 252 insertions(+) diff --git a/locale/header.js b/locale/header.js index deba4a2..c1c826e 100644 --- a/locale/header.js +++ b/locale/header.js @@ -180,5 +180,257 @@ export const HeaderLocale = { "locale": "Язык", "blog": "Блог", "agenda": "Программа" + }, + "ar": { + "home": "الصفحة الرئيسية", + "shows": "العروض", + "episodes": "الحلقات", + "chat": "انضم إلينا", + "events": "الفعاليات", + "label": "ملصق", + "support-us": "دعمنا", + "about": "حولنا", + "privacy": "سياسة الخصوصية", + "locale": "لغة", + "blog": "مدونة", + "agenda": "جدول" + }, + "he": { + "home": "בית", + "shows": "תוכניות", + "episodes": "פרקים", + "chat": "הצטרף אלינו", + "events": "אירועים", + "label": "תווית", + "support-us": "תמוך בנו", + "about": "אודות", + "privacy": "מדיניות פרטיות", + "locale": "שפה", + "blog": "בלוג", + "agenda": "סדר יום" + }, + "zh": { + "home": "主页", + "shows": "节目", + "episodes": "剧集", + "chat": "加入我们", + "events": "活动", + "label": "标签", + "support-us": "支持我们", + "about": "关于我们", + "privacy": "隐私政策", + "locale": "语言", + "blog": "博客", + "agenda": "议程" + }, + "nl": { + "home": "Startpagina", + "shows": "Shows", + "episodes": "Afleveringen", + "chat": "Doe mee", + "events": "Evenementen", + "label": "Label", + "support-us": "Steun ons", + "about": "Over ons", + "privacy": "Privacybeleid", + "locale": "Taal", + "blog": "Blog", + "agenda": "Agenda" + }, + "da": { + "home": "Hjem", + "shows": "Shows", + "episodes": "Episoder", + "chat": "Deltag", + "events": "Begivenheder", + "label": "Mærkat", + "support-us": "Støt os", + "about": "Om os", + "privacy": "Privatlivspolitik", + "locale": "Sprog", + "blog": "Blog", + "agenda": "Dagsorden" + }, + "hu": { + "home": "Kezdőlap", + "shows": "Műsorok", + "episodes": "Epizódok", + "chat": "Csatlakozz hozzánk", + "events": "Események", + "label": "Címke", + "support-us": "Támogatás", + "about": "Rólunk", + "privacy": "Adatvédelmi irányelvek", + "locale": "Nyelv", + "blog": "Blog", + "agenda": "Naptár" + }, + "ca": { + "home": "Inici", + "shows": "Espectacles", + "episodes": "Episodis", + "chat": "Uneix-te a nosaltres", + "events": "Esdeveniments", + "label": "Etiqueta", + "support-us": "Donatius", + "about": "Sobre nosaltres", + "privacy": "Política de privacitat", + "locale": "Idioma", + "blog": "Bloc", + "agenda": "Agenda" + }, + "eu": { + "home": "Etxeko", + "shows": "Ikuskizunak", + "episodes": "Episodioak", + "chat": "Gurekin bat egin", + "events": "Ekitaldiak", + "label": "Etiketa", + "support-us": "Lagun", + "about": "Guri buruz", + "privacy": "Pribatutasun politika", + "locale": "Hizkuntza", + "blog": "Bloga", + "agenda": "Agenda" + }, + "gl": { + "home": "Casa", + "shows": "Espectáculos", + "episodes": "Episodios", + "chat": "Únete a nosotros", + "events": "Eventos", + "label": "Etiqueta", + "support-us": "Apóianos", + "about": "Sobre nós", + "privacy": "Política de privacidade", + "locale": "Idioma", + "blog": "Blog", + "agenda": "Axenda" + }, + "sw": { + "home": "Nyumbani", + "shows": "Maonyesho", + "episodes": "Vipindi", + "chat": "Tutane", + "events": "Matukio", + "label": "Lebo", + "support-us": "Tusaidie", + "about": "Kuhusu sisi", + "privacy": "Sera ya Faragha", + "locale": "Lugha", + "blog": "Blogu", + "agenda": "Ajenda" + }, + "hi": { + "home": "होम", + "shows": "शोज", + "episodes": "एपिसोड्स", + "chat": "हमारे साथ जुड़ें", + "events": "इवेंट्स", + "label": "लेबल", + "support-us": "हमें समर्थन दें", + "about": "हमारे बारे में", + "privacy": "गोपनीयता नीति", + "locale": "स्थानीय", + "blog": "ब्लॉग", + "agenda": "कार्यक्रम" + }, + "ms": { + "home": "Rumah", + "shows": "Tunjukkan", + "episodes": "Episod", + "chat": "Sertai kami", + "events": "Acara", + "label": "Label", + "support-us": "Sokong Kami", + "about": "Mengenai Kami", + "privacy": "Dasar Privasi", + "locale": "Lokaliti", + "blog": "Blog", + "agenda": "Agenda" + }, + "bn": { + "home": "হোম", + "shows": "প্রদর্শনী", + "episodes": "পর্ব", + "chat": "আমাদের সাথে যোগদান করুন", + "events": "ঘটনাগুলি", + "label": "লেবেল", + "support-us": "আমাদেরকে সাহায্য করুন", + "about": "আমাদের সম্পর্কে", + "privacy": "গোপনীয়তা নীতি", + "locale": "অঞ্চল", + "blog": "ব্লগ", + "agenda": "অজেন্ডা" + }, + "pa": { + "home": "ਘਰ", + "shows": "ਸ਼ੋਅਾਂ", + "episodes": "ਐਪੀਸੋਡ", + "chat": "ਸਾਡੇ ਨਾਲ ਸ਼ਾਮਲ ਹੋਵੋ", + "events": "ਇਵੈਂਟਾਂ", + "label": "ਲੇਬਲ", + "support-us": "ਸਾਡੇ ਨੂੰ ਸਹਾਇਤਾ ਕਰੋ", + "about": "ਸਾਡੇ ਬਾਰੇ", + "privacy": "ਗੋਪਨੀਯਤਾ ਨੀਤੀ", + "locale": "ਥਾਂ", + "blog": "ਬਲੌਗ", + "agenda": "ਅਜੇਣਡਾ" + }, + "tr": { + "home": "Anasayfa", + "shows": "Gösteriler", + "episodes": "Bölümler", + "chat": "Bize katılın", + "events": "Etkinlikler", + "label": "Etiket", + "support-us": "Bizi destekle", + "about": "Hakkımızda", + "privacy": "Gizlilik Politikası", + "locale": "Yerel", + "blog": "Blog", + "agenda": "Gündem" + }, + "fi": { + "home": "Koti", + "shows": "Näytökset", + "episodes": "Jaksot", + "chat": "Liity seuraamme", + "events": "Tapahtumat", + "label": "Tunniste", + "support-us": "Tue meitä", + "about": "Tietoa meistä", + "privacy": "Tietosuojakäytäntö", + "locale": "Kieli-asetukset", + "blog": "Blogi", + "agenda": "Ohjelma" + }, + "el": { + "home": "Αρχική", + "shows": "Παραστάσεις", + "episodes": "Επεισόδια", + "chat": "Συμμετέχετε", + "events": "Εκδηλώσεις", + "label": "Ετικέτα", + "support-us": "Υποστηρίξτε μας", + "about": "Σχετικά με εμάς", + "privacy": "Πολιτική απορρήτου", + "locale": "Τοπικές ρυθμίσεις", + "blog": "Ιστολόγιο", + "agenda": "Ατζέντα" + }, + "ko": { + "home": "홈", + "shows": "쇼", + "episodes": "에피소드", + "chat": "우리와 대화", + "events": "이벤트", + "label": "라벨", + "support-us": "지원하기", + "about": "우리에 대해", + "privacy": "개인 정보 보호 정책", + "locale": "로케일", + "blog": "블로그", + "agenda": "약속" } } \ No newline at end of file From d7ad47d458466a778981464e22df70d5ff2fa52f Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 12:03:25 +0100 Subject: [PATCH 15/29] ar(feat) [DPCP-108]: Adding more languages coverage --- locale/home.js | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/locale/home.js b/locale/home.js index 24db3d3..cae2f46 100644 --- a/locale/home.js +++ b/locale/home.js @@ -50,5 +50,77 @@ export const HomeLocale = { "ru-ru": { "locale": "ru-ru", "view": "Просмотреть больше записей" + }, + "ar": { + "locale": "ar", + "view": "عرض المزيد من المشاركات" + }, + "he": { + "locale": "he", + "view": "הצג עוד פוסטים" + }, + "zh": { + "locale": "zh", + "view": "查看更多帖子" + }, + "nl": { + "locale": "nl", + "view": "Meer berichten bekijken" + }, + "da": { + "locale": "da", + "view": "Se flere indlæg" + }, + "hu": { + "locale": "hu", + "view": "További bejegyzések megtekintése" + }, + "ca": { + "locale": "ca", + "view": "Veure més publicacions" + }, + "eu": { + "locale": "eu", + "view": "Ikusi gehiago post" + }, + "gl": { + "locale": "gl", + "view": "Ver máis publicacións" + }, + "sw": { + "locale": "sw", + "view": "Angalia machapisho zaidi" + }, + "hi": { + "locale": "hi", + "view": "और पोस्ट देखें" + }, + "ms": { + "locale": "ms", + "view": "Lihat lagi pos" + }, + "bn": { + "locale": "bn", + "view": "আরও পোস্ট দেখুন" + }, + "pa": { + "locale": "pa", + "view": "ਔਰ ਪੋਸਟ ਵੇਖੋ" + }, + "tr": { + "locale": "tr", + "view": "Daha fazla gönderi görüntüle" + }, + "fi": { + "locale": "fi", + "view": "Näytä lisää viestejä" + }, + "el": { + "locale": "el", + "view": "Προβολή περισσότερων αναρτήσεων" + }, + "ko": { + "locale": "ko", + "view": "더 많은 게시물 보기" } } From a69889b36f38794b8cc29bbacb95ff9550be9838 Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 12:13:23 +0100 Subject: [PATCH 16/29] ar(feat) [DPCP-108]: Adding more languages coverage --- locale/map.js | 90 +++++++++++++++++++ locale/show.js | 234 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 324 insertions(+) diff --git a/locale/map.js b/locale/map.js index 89351ee..f7833ee 100644 --- a/locale/map.js +++ b/locale/map.js @@ -63,5 +63,95 @@ export const MapLocale = { "locale": "ru-ru", "view": "Просмотреть больше", "calendar": "Добавить в календарь" + }, + "ar": { + "locale": "ar", + "view": "عرض المزيد", + "calendar": "أضف إلى التقويم" + }, + "he": { + "locale": "he", + "view": "הצג עוד", + "calendar": "הוסף ללוח שנה" + }, + "zh": { + "locale": "zh", + "view": "查看更多", + "calendar": "添加到日历" + }, + "nl": { + "locale": "nl", + "view": "Bekijk meer", + "calendar": "Toevoegen aan kalender" + }, + "da": { + "locale": "da", + "view": "Se mere", + "calendar": "Tilføj til kalender" + }, + "hu": { + "locale": "hu", + "view": "További megtekintése", + "calendar": "Hozzáadás a naptárhoz" + }, + "ca": { + "locale": "ca", + "view": "Veure'n més", + "calendar": "Afegir al calendari" + }, + "eu": { + "locale": "eu", + "view": "Ikusi gehiago", + "calendar": "Gehitu egutegian" + }, + "gl": { + "locale": "gl", + "view": "Ver máis", + "calendar": "Engadir ao calendario" + }, + "sw": { + "locale": "sw", + "view": "Onyesha zaidi", + "calendar": "Ongeza kwenye kalenda" + }, + "hi": { + "locale": "hi", + "view": "अधिक देखें", + "calendar": "कैलेंडर में जोड़ें" + }, + "ms": { + "locale": "ms", + "view": "Lihat lebih", + "calendar": "Tambah ke kalendar" + }, + "bn": { + "locale": "bn", + "view": "আরও দেখুন", + "calendar": "ক্যালেন্ডারে যোগ করুন" + }, + "pa": { + "locale": "pa", + "view": "ਹੋਰ ਵੇਖੋ", + "calendar": "ਕੈਲੰਡਰ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰੋ" + }, + "tr": { + "locale": "tr", + "view": "Daha fazla görüntüle", + "calendar": "Takvime ekle" + }, + "fi": { + "locale": "fi", + "view": "Näytä enemmän", + "calendar": "Lisää kalenteriin" + }, + "el": { + "locale": "el", + "view": "Προβολή περισσότερων", + "calendar": "Προσθήκη στο ημερολόγιο" + }, + "ko": { + "locale": "ko", + "view": "더 보기", + "calendar": "캘린더에 추가" } } diff --git a/locale/show.js b/locale/show.js index 5f02f7d..2588053 100644 --- a/locale/show.js +++ b/locale/show.js @@ -167,5 +167,239 @@ export const ShowLocale = { "countries": "Страны", "shows": "Шоу", "showsDescription": "Список наших шоу. Представлены с любовью для вашей звуковой системы." + }, + "ar": { + "locale": "ar", + "artist": "الفنانون الذين قدموا", + "next": "الحلقة التالية", + "episodes": "استمع إلى حلقات العرض هذا", + "back": "انظر إلى برامج أخرى", + "country": "البلد", + "calendar": "أضف إلى التقويم", + "reset": "إعادة تعيين الفلاتر", + "countries": "الدول", + "shows": "البرامج", + "showsDescription": "قائمة ببرامجنا. مقدمة بحب لنظام الصوت الخاص بك." + }, + "he": { + "locale": "he", + "artist": "אמנים ששיחקו", + "next": "פרק הבא", + "episodes": "האזינו לפרקי התכנית האלה", + "back": "ראו תכניות אחרות", + "country": "מדינה", + "calendar": "הוסף ללוח שנה", + "reset": "איפוס מסננים", + "countries": "מדינות", + "shows": "תוכניות", + "showsDescription": "רשימת התוכניות שלנו. מובאות באהבה למערכת הצליל שלך." + }, + "zh": { + "locale": "zh", + "artist": "演出的艺术家", + "next": "下一集", + "episodes": "收听此节目的剧集", + "back": "查看其他节目", + "country": "国家", + "calendar": "添加到日历", + "reset": "重置过滤器", + "countries": "国家", + "shows": "节目", + "showsDescription": "我们节目的列表。以爱之心呈现给您的音响系统。" + }, + "nl": { + "locale": "nl", + "artist": "Artiesten die hebben gespeeld", + "next": "Volgende aflevering", + "episodes": "Luister naar de afleveringen van deze show", + "back": "Bekijk andere shows", + "country": "Land", + "calendar": "Toevoegen aan kalender", + "reset": "Filters resetten", + "countries": "Landen", + "shows": "Shows", + "showsDescription": "Een lijst van onze shows. Met liefde gebracht naar jouw geluidssysteem." + }, + "da": { + "locale": "da", + "artist": "Kunstnere der spillede", + "next": "Næste episode", + "episodes": "Lyt til denne shows episoder", + "back": "Se andre shows", + "country": "Land", + "calendar": "Tilføj til kalender", + "reset": "Nulstil filtre", + "countries": "Lande", + "shows": "Shows", + "showsDescription": "En liste over vores shows. Leveret med kærlighed til dit lydsystem." + }, + "hu": { + "locale": "hu", + "artist": "Az előadó művészek", + "next": "Következő epizód", + "episodes": "Hallgasd meg a műsor epizódjait", + "back": "Tekintsd meg a többi műsort", + "country": "Ország", + "calendar": "Hozzáadás a naptárhoz", + "reset": "Szűrők visszaállítása", + "countries": "Országok", + "shows": "Műsorok", + "showsDescription": "Egy lista a műsorainkról. Szeretettel szállítva zenei rendszeredbe." + }, + "ca": { + "locale": "ca", + "artist": "Artistes que han tocat", + "next": "Pròxim episodi", + "episodes": "Escolta els episodis d'aquest programa", + "back": "Veure altres programes", + "country": "País", + "calendar": "Afegir al calendari", + "reset": "Restablir filtres", + "countries": "Països", + "shows": "Espectacles", + "showsDescription": "Una llista dels nostres espectacles. Portats amb amor al teu sistema de so." + }, + "eu": { + "locale": "eu", + "artist": "Erroldatutako artistak", + "next": "Hurrengo episodioa", + "episodes": "Entzun ikuspegiaren episodioak", + "back": "Ikusi beste ikuspegiak", + "country": "Herrialdea", + "calendar": "Gehitu egutegian", + "reset": "Berrezarri iragazkiak", + "countries": "Herriak", + "shows": "Ikuskizunak", + "showsDescription": "Gure ikuskizunen zerrenda. Maitasunez eraman zure soinu sistema." + }, + "gl": { + "locale": "gl", + "artist": "Artistas que tocaron", + "next": "Próximo episodio", + "episodes": "Escoita os episodios deste programa", + "back": "Ver outros programas", + "country": "País", + "calendar": "Engadir ao calendario", + "reset": "Restablecer filtros", + "countries": "Países", + "shows": "Espectáculos", + "showsDescription": "Unha lista dos nosos espectáculos. Traídos co amor ao teu sistema de son." + }, + "sw": { + "locale": "sw", + "artist": "Wasanii waliochezwa", + "next": "Kipindi kinachofuata", + "episodes": "Sikiliza vipindi vya kipindi hiki", + "back": "Angalia vipindi vingine", + "country": "Nchi", + "calendar": "Ongeza kwenye kalenda", + "reset": "Rudisha vichujio", + "countries": "Nchi", + "shows": "Vipindi", + "showsDescription": "Orodha ya vipindi vyetu. Iliyoletwa kwa upendo katika mfumo wako wa sauti." + }, + "hi": { + "locale": "hi", + "artist": "ऐसे कलाकार जिन्होंने अभिनय किया", + "next": "अगला एपिसोड", + "episodes": "इस शो की किस्तों को सुनें", + "back": "अन्य शो देखें", + "country": "देश", + "calendar": "कैलेंडर में जोड़ें", + "reset": "फिल्टरों को रीसेट करें", + "countries": "देशों", + "shows": "शोज", + "showsDescription": "हमारा शोज सूची। आपके साउंड सिस्टम के लिए प्यार के साथ पेश किया गया।" + }, + "ms": { + "locale": "ms", + "artist": "Artis yang telah bermain", + "next": "Episod seterusnya", + "episodes": "Dengar episod rancangan ini", + "back": "Lihat rancangan lain", + "country": "Negara", + "calendar": "Tambah ke kalendar", + "reset": "Tetap semula penapis", + "countries": "Negara", + "shows": "Tunjukkan", + "showsDescription": "Senarai acara kami. Dikirim dengan kasih sayang kepada sistem bunyi anda." + }, + "bn": { + "locale": "bn", + "artist": "যে শিল্পী গায়েছিল", + "next": "পরবর্তী পর্ব", + "episodes": "এই টিভি শোটির পর্বগুলি শুনুন", + "back": "অন্য শো দেখুন", + "country": "দেশ", + "calendar": "ক্যালেন্ডারে যোগ করুন", + "reset": "ফিল্টার রিসেট করুন", + "countries": "দেশগুলি", + "shows": "প্রদর্শনীরা", + "showsDescription": "আমাদের প্রদর্শনীগুলির তালিকা। আপনার শব্দ সিস্টেমে ভালোবাসা নিয়ে পেশ করা।" + }, + "pa": { + "locale": "pa", + "artist": "ਕਲਾਕਾਰ ਜਿਨ੍ਹਾਂ ਇਨ੍ਹਾਂਨੂੰ ਬਿਜਾਰਿਯਾ", + "next": "ਅਗਲਾ ਐਪੀਸੋਡ", + "episodes": "ਇਸ ਸ਼ੋ ਦੇ ਐਪੀਸੋਡ ਸੁਣੋ", + "back": "ਹੋਰ ਸ਼ੋਜ਼ ਵੇਖੋ", + "country": "ਦੇਸ਼", + "calendar": "ਕੈਲੰਡਰ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰੋ", + "reset": "ਫਿਲਟਰ ਰੀਸੈੱਟ ਕਰੋ", + "countries": "ਦੇਸ਼", + "shows": "ਸ਼ੋਜ", + "showsDescription": "ਸਾਡੇ ਸ਼ੋਜ਼ ਦੀ ਸੂਚੀ। ਆਪਣੇ ਧੁਨ ਸਿਸਟਮ ਦੇ ਨਾਲ ਪਿਆਰ ਨਾਲ ਲਿਆਇਆ ਗਿਆ।" + }, + "tr": { + "locale": "tr", + "artist": "Oynayan Sanatçılar", + "next": "Bir Sonraki Bölüm", + "episodes": "Bu yayının bölümlerini dinleyin", + "back": "Diğer gösterilere bak", + "country": "Ülke", + "calendar": "Takvime ekle", + "reset": "Filtreleri sıfırla", + "countries": "Ülkeler", + "shows": "Gösteriler", + "showsDescription": "Gösterilerimizin bir listesi. Sevgiyle ses sisteminize getirildi." + }, + "fi": { + "locale": "fi", + "artist": "Esittäneet taiteilijat", + "next": "Seuraava jakso", + "episodes": "Kuuntele tämän ohjelman jaksot", + "back": "Katso muita ohjelmia", + "country": "Maa", + "calendar": "Lisää kalenteriin", + "reset": "Nollaa suodattimet", + "countries": "Maat", + "shows": "Ohjelmat", + "showsDescription": "Lista ohjelmistamme. Tuotu rakkaudella äänijärjestelmääsi." + }, + "el": { + "locale": "el", + "artist": "Καλλιτέχνες που έπαιξαν", + "next": "Επόμενο επεισόδιο", + "episodes": "Ακούστε τα επεισόδια αυτής της εκπομπής", + "back": "Δείτε άλλες εκπομπές", + "country": "Χώρα", + "calendar": "Προσθήκη στο ημερολόγιο", + "reset": "Επαναφορά φίλτρων", + "countries": "Χώρες", + "shows": "Εκπομπές", + "showsDescription": "Λίστα των εκπομπών μας. Φέρθηκαν με αγάπη στον ήχο του συστήματός σας." + }, + "ko": { + "locale": "ko", + "artist": "연주한 아티스트", + "next": "다음 에피소드", + "episodes": "이 프로그램의 에피소드들을 듣기", + "back": "다른 쇼 보기", + "country": "국가", + "calendar": "캘린더에 추가", + "reset": "필터 초기화", + "countries": "국가", + "shows": "쇼", + "showsDescription": "우리 쇼 목록. 당신의 음향 시스템에 사랑을 담아 제공됩니다." } }; From 019f33b1cc94b89257b7a47c96f17b7d5621c26d Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 12:17:41 +0100 Subject: [PATCH 17/29] ar(feat) [DPCP-108]: Adding more languages coverage --- pages/sitemap/ar.xml/index.js | 10 ++++++++++ pages/sitemap/bn.xml/index.js | 10 ++++++++++ pages/sitemap/ca.xml/index.js | 10 ++++++++++ pages/sitemap/da.xml/index.js | 10 ++++++++++ pages/sitemap/el.xml/index.js | 10 ++++++++++ pages/sitemap/eu.xml/index.js | 10 ++++++++++ pages/sitemap/fi.xml/index.js | 10 ++++++++++ pages/sitemap/gl.xml/index.js | 10 ++++++++++ pages/sitemap/he.xml/index.js | 10 ++++++++++ pages/sitemap/hi.xml/index.js | 10 ++++++++++ pages/sitemap/hu.xml/index.js | 10 ++++++++++ pages/sitemap/ko.xml/index.js | 10 ++++++++++ pages/sitemap/ms.xml/index.js | 10 ++++++++++ pages/sitemap/nl.xml/index.js | 10 ++++++++++ pages/sitemap/pa.xml/index.js | 10 ++++++++++ pages/sitemap/sw.xml/index.js | 10 ++++++++++ pages/sitemap/tr.xml/index.js | 10 ++++++++++ pages/sitemap/zh.xml/index.js | 10 ++++++++++ 18 files changed, 180 insertions(+) create mode 100644 pages/sitemap/ar.xml/index.js create mode 100644 pages/sitemap/bn.xml/index.js create mode 100644 pages/sitemap/ca.xml/index.js create mode 100644 pages/sitemap/da.xml/index.js create mode 100644 pages/sitemap/el.xml/index.js create mode 100644 pages/sitemap/eu.xml/index.js create mode 100644 pages/sitemap/fi.xml/index.js create mode 100644 pages/sitemap/gl.xml/index.js create mode 100644 pages/sitemap/he.xml/index.js create mode 100644 pages/sitemap/hi.xml/index.js create mode 100644 pages/sitemap/hu.xml/index.js create mode 100644 pages/sitemap/ko.xml/index.js create mode 100644 pages/sitemap/ms.xml/index.js create mode 100644 pages/sitemap/nl.xml/index.js create mode 100644 pages/sitemap/pa.xml/index.js create mode 100644 pages/sitemap/sw.xml/index.js create mode 100644 pages/sitemap/tr.xml/index.js create mode 100644 pages/sitemap/zh.xml/index.js diff --git a/pages/sitemap/ar.xml/index.js b/pages/sitemap/ar.xml/index.js new file mode 100644 index 0000000..2988942 --- /dev/null +++ b/pages/sitemap/ar.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'ar' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/bn.xml/index.js b/pages/sitemap/bn.xml/index.js new file mode 100644 index 0000000..7cd2e73 --- /dev/null +++ b/pages/sitemap/bn.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'bn' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/ca.xml/index.js b/pages/sitemap/ca.xml/index.js new file mode 100644 index 0000000..98b832c --- /dev/null +++ b/pages/sitemap/ca.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'ca' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/da.xml/index.js b/pages/sitemap/da.xml/index.js new file mode 100644 index 0000000..9c4e1c2 --- /dev/null +++ b/pages/sitemap/da.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'da' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/el.xml/index.js b/pages/sitemap/el.xml/index.js new file mode 100644 index 0000000..1c1a4e6 --- /dev/null +++ b/pages/sitemap/el.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'el' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/eu.xml/index.js b/pages/sitemap/eu.xml/index.js new file mode 100644 index 0000000..1777031 --- /dev/null +++ b/pages/sitemap/eu.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'eu' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/fi.xml/index.js b/pages/sitemap/fi.xml/index.js new file mode 100644 index 0000000..a97c4d5 --- /dev/null +++ b/pages/sitemap/fi.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'fi' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/gl.xml/index.js b/pages/sitemap/gl.xml/index.js new file mode 100644 index 0000000..6e67f4e --- /dev/null +++ b/pages/sitemap/gl.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'gl' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/he.xml/index.js b/pages/sitemap/he.xml/index.js new file mode 100644 index 0000000..e6ae9cf --- /dev/null +++ b/pages/sitemap/he.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'he' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/hi.xml/index.js b/pages/sitemap/hi.xml/index.js new file mode 100644 index 0000000..6cd94b5 --- /dev/null +++ b/pages/sitemap/hi.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'hi' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/hu.xml/index.js b/pages/sitemap/hu.xml/index.js new file mode 100644 index 0000000..063e7c9 --- /dev/null +++ b/pages/sitemap/hu.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'hu' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/ko.xml/index.js b/pages/sitemap/ko.xml/index.js new file mode 100644 index 0000000..ed03121 --- /dev/null +++ b/pages/sitemap/ko.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'ko' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/ms.xml/index.js b/pages/sitemap/ms.xml/index.js new file mode 100644 index 0000000..b6683c3 --- /dev/null +++ b/pages/sitemap/ms.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'ms' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/nl.xml/index.js b/pages/sitemap/nl.xml/index.js new file mode 100644 index 0000000..0fed380 --- /dev/null +++ b/pages/sitemap/nl.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'nl' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/pa.xml/index.js b/pages/sitemap/pa.xml/index.js new file mode 100644 index 0000000..5acbdfd --- /dev/null +++ b/pages/sitemap/pa.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'pa' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/sw.xml/index.js b/pages/sitemap/sw.xml/index.js new file mode 100644 index 0000000..98473f7 --- /dev/null +++ b/pages/sitemap/sw.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'sw' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/tr.xml/index.js b/pages/sitemap/tr.xml/index.js new file mode 100644 index 0000000..b3acd10 --- /dev/null +++ b/pages/sitemap/tr.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'tr' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file diff --git a/pages/sitemap/zh.xml/index.js b/pages/sitemap/zh.xml/index.js new file mode 100644 index 0000000..d096f89 --- /dev/null +++ b/pages/sitemap/zh.xml/index.js @@ -0,0 +1,10 @@ +import { GenerateSitemap } from '../../../lib/sitemapGenerator' + +const locale = 'zh' + +export const getServerSideProps = async (ctx) => { + return GenerateSitemap(locale, ctx) +} + +// Default export to prevent next.js errors +export default function Sitemap() { } \ No newline at end of file From 50b40ebe39c09d5b6c6157809ae0570e1b70f47a Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 12:24:23 +0100 Subject: [PATCH 18/29] ar(feat) [DPCP-108]: Adding more languages coverage --- pages/index.js | 118 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 107 insertions(+), 11 deletions(-) diff --git a/pages/index.js b/pages/index.js index aa832e6..38d5f74 100644 --- a/pages/index.js +++ b/pages/index.js @@ -22,63 +22,159 @@ const DEFAULT = { const IT = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPip amplifica l’esperienza della felicità, investendo in crowdfunding e beneficenza, connettendo individui e comunità di tutto il mondo, in transazioni che mirano a soddisfare solo la felicità, attraverso una sana competizione.` -} +}; const PT = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPip amplifica a experiência da felicidade, investindo em crowdfunding e caridade, conectando indivíduos e comunidades ao redor do mundo, em transações que buscam nada além da felicidade, por meio de uma competição saudável.` -} +}; const ES = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPip amplifica la experiencia de la felicidad, invirtiendo en crowdfunding y caridad, conectando individuos y comunidades en todo el mundo, en transacciones que buscan cumplir solo con la felicidad, a través de una competencia sana.` -} +}; const DE = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPip verstärkt das Glückserlebnis, investiert in Crowdfunding und Wohltätigkeit und verbindet Menschen und Gemeinschaften auf der ganzen Welt in Transaktionen, die dazu dienen, ausschließlich Glück zu erfüllen, durch gesunden Wettbewerb.` -} +}; const FR = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPip amplifie l’expérience du bonheur, investit dans le crowdfunding et la charité, connectant les individus et les communautés à travers le monde, dans des transactions qui s’efforcent de n’accomplir que le bonheur, au moyen d’une compétition saine.` -} +}; const RO = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPip amplifică experiența fericirii, investind în finanțare participativă și caritate, conectând indivizii și comunitățile din întreaga lume, în tranzacții care tind să îndeplinească doar fericirea, prin intermediul unei competiții sănătoase.` -} +}; const PL = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPip wzmacnia doświadczenie szczęścia, inwestując w crowdfundingu i działalność charytatywną, łącząc jednostki i społeczności na całym świecie, w transakcjach, które dążą do spełnienia jedynie szczęścia, poprzez zdrową konkurencję.` -} +}; const CZ = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPip zesiluje zážitek štěstí investováním do crowdfunding a charity, spojující jednotlivce a komunity po celém světě, v transakcích, které usilují o naplnění pouze štěstím, prostřednictvím zdravé soutěže.` -} +}; const SE = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPip förstärker upplevelsen av lycka genom investeringar i crowdfunding och välgörenhet, som förbinder individer och samhällen över hela världen, genom transaktioner som strävar efter att endast uppfylla lycka genom hälsosam konkurrens.` -} +}; const EE = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPip võimendab õnne kogemust, investeerides rahakogumisse ja heategevusse, ühendades üksikisikuid ja kogukondi kogu maailmas tehingutes, mis püüavad täita vaid õnne, tervisliku konkurentsi kaudu.` -} +}; const JP = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPipは投資クラウドファンディングやチャリティを通じて幸福の経験を拡大し、世界中の個人やコミュニティをつなげ、純粋な幸福だけを追求する取引を行う健全な競争を通じて満足させることをめざしています。` -} +}; const RU = { title: 'DreamPip — Fintech for compassion. 📡', description: `DreamPip усиливает опыт счастья, инвестируя в краудфандинг и благотворительность, связывая людей и сообщества по всему миру в трансакциях, нацеленных лишь на счастье, через здоровое соперничество.` +}; + +const indexLocale = { + ar: { + title: 'DreamPip - التكنولوجيا المالية من أجل الرحمة.', + description: `دريمبيب يعزز تجربة السعادة من خلال الاستثمار في التمويل التشاركي والأعمال الخيرية، ويربط بين الأفراد والمجتمعات في جميع أنحاء العالم، من خلال صفقات تهدف فقط إلى تحقيق السعادة، من خلال منافسة صحية.` + }, + he: { + title: 'דרים פיפ – טכנולוגיה פיננסית לרחמים.', + description: `דרים פיפ מחזק את חוויית האושר, על ידי השקעה במימון המונים ובמעסיקות צדק, חוברת בין אנשים וקהילות מרחבי העולם, בעסקאות שמטרה רק להעשיר את האושר, דרך תחרות בריאה.` + }, + zh: { + title: '梦想片 — 充满同情心的金融科技。', + description: `梦想片通过投资众筹和慈善事业来增强幸福体验,连接世界各地的个人和社区,促进只追求幸福的交易,并通过健康竞争实现。` + }, + nl: { + title: 'DreamPip — Fintech voor mededogen. 📡', + description: `DreamPip versterkt de ervaring van geluk door te investeren in crowdfunding en liefdadigheid, en verbindt individuen en gemeenschappen over de hele wereld in transacties die alleen mikken op geluk, via gezonde competitie.` + }, + da: { + title: 'DreamPip — Fintech for medfølelse. 📡', + description: `DreamPip forstærker glædens oplevelse ved at investere i crowdfunding og velgørenhed, og forbinder enkeltpersoner og samfund over hele verden i transaktioner, der kun sigter mod glæde via sund konkurrence.` + }, + hu: { + title: 'DreamPip — Pénzügyi technológia az együttérzésért. 📡', + description: `A DreamPip erősíti a boldogság élményét, a közösségi finanszírozásba és a jótékonyságba történő befektetéssel, és összeköti az embereket és közösségeket világszerte, olyan tranzakciókat keresve, amelyek csak a boldogságot célozzák meg, egészséges versenyen keresztül.` + }, + ca: { + title: 'DreamPip — Fintech per la compassió. 📡', + description: `DreamPip amplifica l'experiència de la felicitat invertint en finançament col·lectiu i caritat, connectant individus i comunitats d'arreu del món, en transaccions que tenen com a objectiu només la felicitat, a través d'una competició saludable.` + }, + eu: { + title: 'DreamPip — Finantza teknologia aintzindariarentzat. 📡', + description: `DreamPip-ek zoriontasunaren esperientzia indartzen du, crowdfundingean eta ongintzan inbertituz, pertsonak eta munduko komunitateak konektatuz, zoriontasuna bakarrik helburu duen trantsakzioetan parte hartuz, lehiaketa osasungarri baten bidez.` + }, + gl: { + title: 'DreamPip — Fintech para a compaixão. 📡', + description: `DreamPip amplía a experiencia da felicidade ao investir no financiamento colectivo e na caridade, conectando individuos e comunidades de todo o mundo en transaccións que teñen como obxectivo solo a felicidade, mediante unha competición sadia.` + }, + sw: { + title: 'DreamPip — Fintech kwa huruma. 📡', + description: `DreamPip inaimarisha uzoefu wa furaha kwa kuwekeza katika kuchangisha fedha na hisani, kuunganisha watu binafsi na jamii duniani kote kwenye miamala inayolenga furaha tu, kupitia ushindani wa afya.` + }, + hi: { + title: 'ड्रीमपिप — दया के लिए फिनटेक। 📡', + description: `ड्रीमपिप सहअनुभूति से धन प्रौद्योगिकी बढ़ाता है, क्रोडफंडिंग और परोपकार में निवेश करके, विश्व भर में व्यक्तियों और समुदायों को जोड़ता है, सिर्फ खुशी को ही लक्षित करने वाले सौदों में, स्वस्थ प्रतिस्पर्धा के माध्यम से.` + }, + ms: { + title: 'DreamPip — Fintech untuk belas kasihan. 📡', + description: `DreamPip meningkatkan pengalaman kebahagiaan dengan melabur dalam krowdfunding dan amal, menghubungkan individu dan komuniti di seluruh dunia dalam urus niaga yang hanya bertujuan untuk kebahagiaan, melalui saingan yang sihat.` + }, + bn: { + title: 'ড্রিমপিপ — দয়ার জন্য ফিনটেক। 📡', + description: `ড্রিমপিপ ক্রাউডফান্ডিং এবং দানে বিনিয়োগ করে, ধন প्रযোজননখা বৃদ্ধিত হিসেবে, সুস্থ প্রতিযোগিতার মাধ্যমে মাত্র খুশি নির্দিষ্ট মুটি করে বিশ্বব্যাপী ব্যক্তিদের মঞ্চা, যার লক্ষ্য খুশি।` + }, + pa: { + title: 'ਡ੍ਰੀਮਪਿਪ — ਦਯਾ ਲਈ ਫਿੰਟੈਕ। 📡', + description: `ਡ੍ਰੀਮਪਿਪ ਦਾ ਵਿੱਚਾਰ ਖੁਸ਼ੀ ਦੀ ਅਨੁਭਵਣ ਨੂੰ ਤੇਜ਼ ਕਰਨ ਲਈ ਕਰੋੜਪੂਜੀ ਅਤੇ ਪੁੰਜੀ ਵੱਲ ਨਿਵੇਸ਼ ਕਰਕੇ, ਔਰਤਾ ਅਤੇ ਸਮੁੱਦਿਆਂ ਨੂੰ ਵਿਸ਼ਵਵਿੱਚ ਜੋੜਦਾ ਹੈ, ਇਕੋਨਾਤਮਯਕ ਪੜਦੀਆਂ ਵਿੱਚ ਸਿਰਫ ਫਿਕੀ ਨੂੰ ਲਕਲੀ, ਰਾਹੀਂ ਇੱਕ ਸਿਹਤ ਪ੍ਰਤਿਸਪਰਧਾ ਦੁਆਰਾ।` + }, + tr: { + title: 'DreamPip — Merhamet için Fintech. 📡', + description: `DreamPip mutluluğu tecrübesini arttırarak, kalabalık fonlamaya ve hayır işlerine yatırım yaparak, sadece mutluluğu hedefleyen işlemleri teşvik ederek, sağlıklı rekabetle dünya genelinde bireyler ve toplulukları birleştirir.` + }, + fi: { + title: 'DreamPip — Fintech myötätunnolle. 📡', + description: `DreamPip vahvistaa onnen kokemusta sijoittamalla joukkorahoitukseen ja hyväntekeväisyyteen, yhdistäen yksilöitä ja yhteisöjä ympäri maailmaa vain onnea tavoitteleviin kauppoihin terveen kilpailun kautta.` + }, + el: { + title: 'DreamPip — Fintech για συμπόνια. 📡', + description: `Το DreamPip ενισχύει την εμπειρία της ευτυχίας επενδύοντας σε συλλογική χρηματοδότηση και φιλανθρωπία, συνδέοντας ατομικά άτομα και κοινότητες από όλο τον κόσμο σε συναλλαγές που στοχεύουν μόνο στην ευτυχία, μέσω υγιούς ανταγωνισμού.` + }, + ko: { + title: 'DreamPip - 동정심을 위한 핀테크. 📡', + description: `DreamPip은 크라우드펀딩과 자선투자를 통해 행복 경험을 강화하며, 전 세계 개인 및 공동체를 연결하여 오직 행복을 추구하는 거래를 촉진하고 건강한 경쟁을 통해 행복을 실현합니다.` + } } +const AR = indexLocale.ar; +const HE = indexLocale.he; +const ZH = indexLocale.zh; +const NL = indexLocale.nl; +const DA = indexLocale.da; +const HU = indexLocale.hu; +const NL = indexLocale.nl; +const CA = indexLocale.ca; +const EU = indexLocale.eu; +const GL = indexLocale.gl; +const NL = indexLocale.nl; +const SW = indexLocale.sw; +const HI = indexLocale.hi; +const MS = indexLocale.ms; +const BN = indexLocale.bn; +const PA = indexLocale.pa; +const TR = indexLocale.tr; +const FI = indexLocale.fi; +const EL = indexLocale.el; +const KO = indexLocale.ko; + export default function Home(props) { From 6ea54b5f609b416be520e6a8daa40d82c6c11496 Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 12:26:03 +0100 Subject: [PATCH 19/29] ar(feat) [DPCP-108]: Adding more languages coverage --- middleware.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/middleware.js b/middleware.js index 759e3c4..bf46798 100644 --- a/middleware.js +++ b/middleware.js @@ -3,7 +3,7 @@ import { NextResponse } from "next/server"; import { MAP_CENTRES } from "./lib/constants"; import { localeMap } from "./lib/cjs-constants"; -const supportedLocales = ["en", "it-IT", "pt-BR", "it", "pt", "ro", "ru", "pl-PL", "de", "fr", "ja-JP", "sv-SE", "et-EE", "cs-CZ"]; +const supportedLocales = ["en", "it-IT", "pt-BR", "it", "pt", "ro", "ru", "pl-PL", "de", "fr", "ja-JP", "sv-SE", "et-EE", "cs-CZ", "ar", "he", "zh", "nl", "da", "hu", "ca", "eu", "gl", "sw", "hi", "ms", "bn", "pa", "tr", "fi", "el", "ko"]; acceptLanguage.languages(supportedLocales); From 8791d7651166de046b6a23e96d64a1d7933b012d Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 12:27:29 +0100 Subject: [PATCH 20/29] ar(feat) [DPCP-108]: Adding more languages coverage --- middleware.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/middleware.js b/middleware.js index bf46798..5612e28 100644 --- a/middleware.js +++ b/middleware.js @@ -76,6 +76,6 @@ export let middleware = (request) => { export const config = { matcher: [ - '/((?!services|dash|subs|members|app|.well-known|api|favicon.ico|fonts|images|scripts|og-image.png|sitemap|robots|_next|en|it-it|pt-br|es-es|de-de|fr-fr|ro|pl-pl|cs-cz|sv-se|et-ee|ja-jp|ru-ru).*)/', + '/((?!services|dash|subs|members|app|.well-known|api|favicon.ico|fonts|images|scripts|og-image.png|sitemap|robots|_next|en|it-it|pt-br|es-es|de-de|fr-fr|ro|pl-pl|cs-cz|sv-se|et-ee|ja-jp|ru-ru|ar|he|zh|nl|da|hu|ca|eu|gl|sw|hi|ms|bn|pa|tr|fi|el|ko).*)/', ], } From 4a37ec2171a6581c0a251959aa0bb8c4e41b14b9 Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 12:34:39 +0100 Subject: [PATCH 21/29] ar(feat) [DPCP-108]: Adding more languages coverage --- pages/index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pages/index.js b/pages/index.js index 38d5f74..ddc1994 100644 --- a/pages/index.js +++ b/pages/index.js @@ -222,6 +222,24 @@ export default function Home(props) { "et-ee": EE, "ja-jp": JP, "ru-ru": RU, + "ar": AR, + "he": HE, + "zh": ZH, + "nl": NL, + "da": DA, + "hu": HU, + "ca": CA, + "eu": EU, + "gl": GL, + "sw": SW, + "hi": HI, + "ms": MS, + "bn": BN, + "pa": PA, + "tr": TR, + "fi": FI, + "el": EL, + "ko": KO, } const meta = localeMap[locale] || localeMap['en'] From da1e4d487a0f0752b93f3a679cd5a6f32927a015 Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 12:40:38 +0100 Subject: [PATCH 22/29] ar(feat) [DPCP-108]: Adding more languages coverage --- lib/cjs-constants.mjs | 68 +++++++++++++++++++++++++++++++++++++++++++ next.config.mjs | 2 +- pages/index.js | 2 -- 3 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 lib/cjs-constants.mjs diff --git a/lib/cjs-constants.mjs b/lib/cjs-constants.mjs new file mode 100644 index 0000000..3f951e5 --- /dev/null +++ b/lib/cjs-constants.mjs @@ -0,0 +1,68 @@ +export const LOCALES = [ + "en", + "it-it", + "de-de", + "fr-fr", + "ro", + "pl-pl", + "cs-cz", + "sv-se", + "et-ee", + "ja-jp", + "ru-ru", + "pt-br", + "es-es", + "ar", + "he", + "zh", + "nl", + "da", + "hu", + "ca", + "eu", + "gl", + "sw", + "hi", + "ms", + "bn", + "pa", + "tr", + "fi", + "el", + "ko", + "default", +] + + +export const localeMap = { + "it": "it-IT", + "de": "de-DE", + "fr": "fr-FR", + "ro": "ro", + "sv": "sv-SE", + "cs": "cs-CZ", + "pl": "pl-PL", + "et": "et-EE", + "ja": "ja-JP", + "ru": "ru-RU", + "pt": "pt-BR", + "es": "es-ES", + "ar": "ar", + "he": "he", + "zh": "zh", + "nl": "nl", + "da": "da", + "hu": "hu", + "ca": "ca", + "eu": "eu", + "gl": "gl", + "sw": "sw", + "hi": "hi", + "ms": "ms", + "bn": "bn", + "pa": "pa", + "tr": "tr", + "fi": "fi", + "el": "el", + "ko": "ko", +} diff --git a/next.config.mjs b/next.config.mjs index 429ab1c..ada4ad4 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,4 @@ -import { LOCALES } from "./lib/cjs-constants.js" +import { LOCALES } from "./lib/cjs-constants.mjs" const config = { async headers() { diff --git a/pages/index.js b/pages/index.js index ddc1994..9bc6501 100644 --- a/pages/index.js +++ b/pages/index.js @@ -160,11 +160,9 @@ const ZH = indexLocale.zh; const NL = indexLocale.nl; const DA = indexLocale.da; const HU = indexLocale.hu; -const NL = indexLocale.nl; const CA = indexLocale.ca; const EU = indexLocale.eu; const GL = indexLocale.gl; -const NL = indexLocale.nl; const SW = indexLocale.sw; const HI = indexLocale.hi; const MS = indexLocale.ms; From 2af8bbc7780850eee30cfcf8767eb8a4ad05ad1f Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 12:45:40 +0100 Subject: [PATCH 23/29] ar(feat) [DPCP-108]: Adding more languages coverage --- components/Footer.js | 51 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/components/Footer.js b/components/Footer.js index b3ca8f7..a398504 100644 --- a/components/Footer.js +++ b/components/Footer.js @@ -105,7 +105,38 @@ function Footer({ copyrightHolder = 'Company Name' }) { Svenska Eesti Русский - 日本語 + 日本語 + English + Italiano + Português + Español + Română + Deutsch + Français + Polski + Český + Svenska + Eesti + Русский + 日本語 + العربية + עברית + 中文 + Nederlands + Dansk + Magyar + Català + Euskara + Galego + Kiswahili + हिन्दी + Bahasa Melayu + বাংলা + ਪੰਜਾਬੀ + Türkçe + Suomi + Ελληνικά + 한국어 @@ -150,6 +181,24 @@ function Footer({ copyrightHolder = 'Company Name' }) { Eesti Русский 日本語 + العربية + עברית + 中文 + Nederlands + Dansk + Magyar + Català + Euskara + Galego + Kiswahili + हिन्दी + Bahasa Melayu + বাংলা + ਪੰਜਾਬੀ + Türkçe + Suomi + Ελληνικά + 한국어 From abe119369d0ac65073eeefcb84dfcf03852c3ded Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 12:53:36 +0100 Subject: [PATCH 24/29] ar(feat) [DPCP-108]: Adding more languages coverage --- templates/helpers/glow.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/templates/helpers/glow.js b/templates/helpers/glow.js index af177e2..73d06c9 100644 --- a/templates/helpers/glow.js +++ b/templates/helpers/glow.js @@ -190,5 +190,23 @@ export const consentLocales = { analytics: 'UA-53455506-5', acceptBtnTxt: 'Принять', rejectBtnTxt: 'Отклонить' - } + }, + 'ar': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `لإستخدام DreamPip، عليك أن توافق على سياسة الخصوصية وشروط الخدمة لدينا.

في نبذة، شروط خدمتنا:

🧓 يجب أن تكون في الثامنة عشرة أو أكبر؛
📽 لا يمكنك تسجيل/تنزيل أي شيء ليس على Mixcloud
`, bannerLinkText: '
الصفحة القانونية.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

هل توافق؟

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'وافق', rejectBtnTxt: 'ارفض' }, + 'he': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `כדי להשתמש ב-DreamPip עליך להסכים למדיניות הפרטיות ולתנאי השימוש שלנו.

תנאי השימוש שלנו, בקצרה, הם:

🧓 עליך להיות מעל גיל 18;
📽 אינך יכול להקליט/להוריד דברים שאינם ב-Mixcloud
`, bannerLinkText: '
עמוד משפטי.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

האם את/ה מסכים/ה?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'אשר', rejectBtnTxt: 'דחה' }, + 'zh': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `要使用 DreamPip, 你需要同意我们的隐私政策和服务条款。

我们的服务条款概括为:

🧓 你年满18岁以上;
📽 你不能录制/下载不在 Mixcloud 上的任何内容
`, bannerLinkText: '
法律页面。', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

你同意吗?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: '同意', rejectBtnTxt: '拒绝' }, + 'nl': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `Om DreamPip te gebruiken, moet je akkoord gaan met zowel ons Privacybeleid als onze Servicevoorwaarden.

In een notendop zijn onze servicevoorwaarden:

🧓 je bent ouder dan 18 jaar;
📽 je mag niet opnemen/downloaden wat niet op Mixcloud staat
`, bannerLinkText: '
Juridische pagina.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

Accepteer je?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'Accepteren', rejectBtnTxt: 'Weigeren' }, + 'da': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `For at bruge DreamPip skal du acceptere både vores fortrolighedspolitik og servicevilkår.

Vores servicevilkår opsummeret:

🧓 du er over 18 år;
📽 du kan ikke optage/downloade noget, der ikke er på Mixcloud
`, bannerLinkText: '
Juridisk side.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

Accepterer du?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'Accepter', rejectBtnTxt: 'Afvis' }, + 'hu': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `A DreamPip használatához el kell fogadnod az adatvédelmi szabályzatunkat és szolgáltatási feltételeinket is.

Szolgáltatási feltételeink lényegretörően:

🧓 18 éves vagy idősebb vagy;
📽 nem rögzíthetsz/letölthetsz olyan tartalmakat, amelyek nem találhatók a Mixcloud-on
`, bannerLinkText: '
Jogi oldal.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

Elfogadod?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'Elfogad', rejectBtnTxt: 'Elutasít' }, + 'ca': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `Per utilitzar DreamPip, has d'acceptar tant la nostra política de privacitat com els nostres termes de servei.

Els nostres termes de servei, en resum, són:

🧓 tens més de 18 anys;
📽 no pots enregistrar/descarregar res que no sigui a Mixcloud
`, bannerLinkText: '
Pàgina legal.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

Ho acceptes?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'Accepta', rejectBtnTxt: 'Rebutja' }, + 'eu': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `DreamPip erabiltzeko, gure Pribatutasun Politika eta Zerbitzu-aurkibideak onartu behar dituzu.

Gure zerbitzu-baldintzak laburki:

🧓 18 urtetik gora zauden edo;
📽 ezin duzu grabatu/deskargatu zeru ez dagoena Mixcloud-en
`, bannerLinkText: '
Orri legala.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

Onartzen duzu?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'Onartu', rejectBtnTxt: 'Ukatu' }, + 'gl': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `Para usar DreamPip, debes aceptar tanto nuestra Política de privacidad como nuestros Términos de servicio.

Nuestros términos de servicio, en resumen, son:

🧓 tienes más de 18 años;
📽 no puedes grabar/descargar lo que no esté en Mixcloud
`, bannerLinkText: '
Página legal.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

¿Aceptas?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'Aceptar', rejectBtnTxt: 'Rechazar' }, + 'sw': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `Kutumia DreamPip, ni sharti ukubali Sera ya Faragha na Masharti yetu ya Huduma.

Masharti yetu ya Huduma kwa muhtasari:

🧓 una zaidi ya miaka 18;
📽 huwezi kurekodi/kupakua chochote ambacho hakipo kwenye Mixcloud
`, bannerLinkText: '
Ukurasa wa Kisheria.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

Je, unaikubali?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'Kubali', rejectBtnTxt: 'Kataa' }, + 'hi': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `DreamPip का उपयोग करने के लिए, आपको हमारी गोपनीयता नीति और सेवा की शर्तों पर सहमत होना चाहिए।

हमारी सेवा की शर्तें संक्षेप में:

🧓 आप 18 वर्ष से अधिक आयु के हैं;
📽 आप जो कुछ भी Mixcloud पर नहीं है, उसे नहीं रिकॉर्ड/डाउनलोड कर सकते
`, bannerLinkText: '
कानूनी पेज।', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

क्या आप स्वीकार करते हैं?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'स्वीकार करें', rejectBtnTxt: 'अस्वीकार करें' }, + 'ms': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `Untuk menggunakan DreamPip, anda perlu menerima Polisi Privasi dan Terma Perkhidmatan kami.

Terma perkhidmatan kami, secara ringkas, adalah:

🧓 anda berusia lebih dari 18 tahun;
📽 anda tidak boleh merakam/mengunduh apa-apa yang tidak berada di Mixcloud
`, bannerLinkText: '
Halaman Undang-undang.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

Adakah anda menerima?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'Terima', rejectBtnTxt: 'Tolak' }, + 'bn': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `DreamPip ব্যবহার করতে হলে আমাদের গোপনীয়তা নীতি এবং সেবা শর্তাগুলি মানতে হবে।

সেবা শর্তাগুলি, সংক্ষেপে:

🧓 আপনি 18 বছরের বেশি বয়সী;
📽 আপনি যা কিছুই Mixcloud এ নেই, তা রেকর্ড/ডাউনলোড করতে পারবেন না
`, bannerLinkText: '
আইনি পৃষ্ঠা।', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

আপনি স্বীকার করছেন?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'প্রকাশ করুন', rejectBtnTxt: 'প্রত্যাখ্যান করুন' }, + 'pa': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `DreamPip ਵਰਤਣ ਲਈ, ਤੁਹਾਨੂੰ ਸਾਡੀ ਨਿਜਤਾ ਧਾਰਣਾ ਅਤੇ ਸੇਵਾ ਦੀ ਨਿਯਮਾਂ ਦਾ ਸਵੀਕਾਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।

ਸਾਡੇ ਸੇਵਾ ਦੇ ਨਿਯਮ, ਇੱਕ ਵੱਖਰੇ ਦੇੜ, ਹਨ:

🧓 ਤੁਸੀਂ 18 ਸਾਲ ਦੀ ਉਮਰ ਤੋਂ ਅੱਗੇ ਹੋ;
📽 ਤੁਸੀਂ ਜੋ ਕੁਝ ਵੀ Mixcloud ’ਤੇ ਨਹੀਂ ਹੈ, ਉਹ ਰਿਕਾਰਡ/ ਡਾਊਨਲੋਡ ਨਈ ਕਰ ਸਕਦੇ
`, bannerLinkText: '
ਕਾਨੂਨੀ ਪੰਨਾ।', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

ਕੀ ਤੁਸੀਂ ਸਵੀਕਾਰ ਕਰਦੇ ਹੋ?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'ਮਨਜੂਰ ਕਰੋ', rejectBtnTxt: 'ਇਨਕਾਰ ਕਰੋ' }, + 'tr': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `DreamPip'i kullanabilmek için hem Gizlilik Politikamızı hem de Hizmet Şartlarımızı kabul etmelisiniz.

Şartlarımızın özeti şu şekildedir:

🧓 18 yaşınızdan büyüksünüz;
📽 Mixcloud'da olmayan hiçbir şeyi kaydedemez/indiremezsiniz
`, bannerLinkText: '
Hukuki Sayfa.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

Kabul ediyor musunuz?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'Kabul Et', rejectBtnTxt: 'Reddet' }, + 'fi': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `Käyttääksesi DreamPipiä, sinun tulee hyväksyä sekä yksityisyyskäytäntömme että palveluehtomme.

Palveluehtomme tiivistettynä ovat:

🧓 olet yli 18-vuotias;
📽 et voi tallentaa/ladata mitään, mitä ei ole Mixcloudissa
`, bannerLinkText: '
Oikeudellinen sivu.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

Hyväksytkö?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'Hyväksy', rejectBtnTxt: 'Hylkää' }, + 'el': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `Για να χρησιμοποιήσετε το DreamPip πρέπει να αποδεχτείτε τόσο την Πολιτική Απορρήτου όσο και τους Όρους Χρήσης μας.

Οι όροι χρήσης μας, συνοπτικά, είναι:

🧓 είστε άνω των 18 ετών;
📽 δεν μπορείτε να εγγράψετε/κατεβάσετε οτιδήποτε δεν υπάρχει στο Mixcloud
`, bannerLinkText: '
Νομική Σελίδα.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

Αποδέχεστε;

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: 'Αποδοχη', rejectBtnTxt: 'Απόρριψη' }, + 'ko': { policyLink: '/privacy', hideAfterClick: true, bannerDescription: `DreamPip를 사용하려면 개인 정보 보호 정책과 이용 약관 모두에 동의해야 합니다.

우리의 이용 약관은 요약하면 다음과 같습니다:

🧓 18 세 이상이어야 합니다;
📽 Mixcloud에 없는 것은 녹화/다운로드할 수 없습니다
`, bannerLinkText: '
법적 페이지.', bannerBackground: '#1a1a1a', bannerColor: '#ffffff', bannerHeading: '

동의하십니까?

', acceptBtnBackground: '#f8f8f8', acceptBtnColor: '#1a1a1a', analytics: 'UA-53455506-5', acceptBtnTxt: '수락', rejectBtnTxt: '거절' }, }; \ No newline at end of file From 67ad4e1c5a82554418581650af7a0f90c66e704a Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Mon, 2 Sep 2024 21:05:18 +0100 Subject: [PATCH 25/29] ar(feat) [DPCP-108]: Adding more languages coverage --- migrations/exports/sample.json | 2 +- .../helpers/extract-field.js | 2 +- .../helpers/extract-rich-field.js | 2 +- .../helpers/get-data.js | 35 ++++--- .../scripts/0001-translate-episodes/params.js | 12 +-- .../prepareToTranslate.js | 8 +- .../prepareToUpdate.js | 2 +- .../0001-translate-episodes/translate.js | 82 +++------------- .../0001-translate-episodes/updateAll.js | 93 +++++++++++-------- 9 files changed, 100 insertions(+), 138 deletions(-) diff --git a/migrations/exports/sample.json b/migrations/exports/sample.json index fbf86bb..e1df6da 100644 --- a/migrations/exports/sample.json +++ b/migrations/exports/sample.json @@ -1,6 +1,6 @@ { "spaceId": "", - "environmentId": "migration", + "environmentId": "migration-0001", "managementToken": "", "deliveryToken": "", "exportDir": "./migrations/data", diff --git a/migrations/scripts/0001-translate-episodes/helpers/extract-field.js b/migrations/scripts/0001-translate-episodes/helpers/extract-field.js index 80f2c87..7bec2ec 100644 --- a/migrations/scripts/0001-translate-episodes/helpers/extract-field.js +++ b/migrations/scripts/0001-translate-episodes/helpers/extract-field.js @@ -2,7 +2,7 @@ const fs = require('fs'); const { params } = require('../params'); -const extractField = ({ fieldName }) => { +const extractField = ({ fieldName, locale }) => { //const fieldName = params.fieldName function filterTextNodesFromRichText(jsonFilePath) { // Load the exported JSON file diff --git a/migrations/scripts/0001-translate-episodes/helpers/extract-rich-field.js b/migrations/scripts/0001-translate-episodes/helpers/extract-rich-field.js index cf78dde..7d41249 100644 --- a/migrations/scripts/0001-translate-episodes/helpers/extract-rich-field.js +++ b/migrations/scripts/0001-translate-episodes/helpers/extract-rich-field.js @@ -3,7 +3,7 @@ const { params } = require('../params'); -const extractRichField = ({ fieldName }) => { +const extractRichField = ({ fieldName, locale }) => { //const fieldName = params.fieldName // Function to recursively parse the Rich Text nodes function parseNodes(nodes, results = [], dry = [], entryId, path = []) { diff --git a/migrations/scripts/0001-translate-episodes/helpers/get-data.js b/migrations/scripts/0001-translate-episodes/helpers/get-data.js index eef53f9..faccd12 100644 --- a/migrations/scripts/0001-translate-episodes/helpers/get-data.js +++ b/migrations/scripts/0001-translate-episodes/helpers/get-data.js @@ -2,26 +2,33 @@ const { configDotenv } = require("dotenv"); const { params } = require("../params"); const { writeFileSync } = require("fs"); -async function getData({ fieldName }) { +async function getData({ fieldName, isLocalized = true, locale }) { try { configDotenv(); let url - if(!params.slug) { - url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&select=fields.${fieldName},sys.id&limit=1000`; - } else { - url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&fields.${params.slugField}=${params.slug}&select=fields.${fieldName},sys.id` - } - console.log({ url }) - const response = await fetch(url); - const parsed = await response.json(); + if(isLocalized) { + if(!params.slug) { + url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&select=fields.${fieldName},sys.id&limit=1000`; + } else { + url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&fields.${params.slugField}=${params.slug}&select=fields.${fieldName},sys.id` + } + if (locale == 'it') { + url += '&locale=it-IT' + } + console.log({ url, fieldName }) + const response = await fetch(url); + const parsed = await response.json(); - console.log({ response, parsed }) + console.log({ response, parsed }) - console.log(`${parsed.total} ENTRIES WILL BE UPDATED`) - - writeFileSync('./migrations/data/export.json', JSON.stringify(parsed, null, 4), 'utf-8'); - return Promise.resolve('ok'); + console.log(`${parsed.total} ENTRIES WILL BE UPDATED`) + + if (parsed.total > 0) { + writeFileSync('./migrations/data/export.json', JSON.stringify(parsed, null, 4), 'utf-8'); + } + return Promise.resolve(parsed); + } } catch(e) { return Promise.reject(e); } diff --git a/migrations/scripts/0001-translate-episodes/params.js b/migrations/scripts/0001-translate-episodes/params.js index 2012087..fe6ee45 100644 --- a/migrations/scripts/0001-translate-episodes/params.js +++ b/migrations/scripts/0001-translate-episodes/params.js @@ -1,21 +1,21 @@ -ALL_TRANSLATION_LOCALES = ['it', 'pt', 'es', 'de', 'fr', 'ro', 'pl', 'cz', 'se', 'ee', 'jp', 'ru'] +ALL_TRANSLATION_LOCALES = ['it', 'pt', 'es', 'de', 'fr', 'ro', 'pl', 'cz', 'se', 'ee', 'jp', 'ru', 'ar', 'he', 'zh', 'nl', 'da', 'hu', 'ca', 'eu', 'gl', 'sw', 'hi', 'ms', 'bn', 'pa', 'tr', 'fi', 'el', 'ko'] const entry = { - slug: 'guests-only-dreamy-hours-wednesdays-in-london-yang-yoga-self-defense-live', + slug: '', slugField: 'url' } const params = { ...entry, fieldName: ['title'], - richFieldName: [], - locale: entry.slug ? ALL_TRANSLATION_LOCALES : ['it', 'pt', 'es', 'de', 'fr', 'ro', 'pl', 'cz', 'se', 'ee', 'jp', 'ru'], + richFieldName: ['body'], + locale: entry.slug ? ALL_TRANSLATION_LOCALES : ['it'], type: 'events', model: 'gpt-4', chunkSize: 3, limit: 3500, - sourceEnv: 'staging', - targetEnv: 'prod-0010' + sourceEnv: 'migration-0001', + targetEnv: 'migration-0001', } module.exports = { diff --git a/migrations/scripts/0001-translate-episodes/prepareToTranslate.js b/migrations/scripts/0001-translate-episodes/prepareToTranslate.js index 59cdfd6..21f1fe0 100644 --- a/migrations/scripts/0001-translate-episodes/prepareToTranslate.js +++ b/migrations/scripts/0001-translate-episodes/prepareToTranslate.js @@ -5,12 +5,12 @@ const { getData } = require("./helpers/get-data"); const { params } = require("./params"); -const prepareToTranslate = ({ isRichText, fieldName }) => { +const prepareToTranslate = ({ isRichText, fieldName, locale }) => { if (isRichText) { - extractRichField({ fieldName }); - flatResults() + extractRichField({ fieldName, locale }); + flatResults(); } else { - extractField({ fieldName }); + extractField({ fieldName, locale }); } } diff --git a/migrations/scripts/0001-translate-episodes/prepareToUpdate.js b/migrations/scripts/0001-translate-episodes/prepareToUpdate.js index 4a31eb0..b6ee293 100644 --- a/migrations/scripts/0001-translate-episodes/prepareToUpdate.js +++ b/migrations/scripts/0001-translate-episodes/prepareToUpdate.js @@ -14,7 +14,7 @@ const prepareToUpdate = ({ isRichText, locale, fieldName }) => { } } -//prepareToUpdate() +// prepareToUpdate() module.exports = { prepareToUpdate diff --git a/migrations/scripts/0001-translate-episodes/translate.js b/migrations/scripts/0001-translate-episodes/translate.js index 6943148..d44e05a 100644 --- a/migrations/scripts/0001-translate-episodes/translate.js +++ b/migrations/scripts/0001-translate-episodes/translate.js @@ -120,44 +120,29 @@ const getChat = async ({ prompt, temperature, context }) => { const translate = async ({ array, length, locale, fieldName }) => { if (!array?.length) throw new Error("No prompt") let answer - try { - //const translatePrompt = `can you please help me translate this array \`\`\`${JSON.stringify(array)}\`\`\` from "en-US" to "${params.locale}" and please make sure your output returns a javascript array (square brackets and strings in double quotes)? as in an actual array e.g. \`\`\`["Translated string 1", "Translated string 2"]\`\`\`` - const context = length ? 'youre missing an element. try again making sure the length of the original and translated arrays match, return the verified translated array' : '' + try { const context = length ? 'youre missing an element. try again making sure the length of the original and translated arrays match, return the verified translated array' : '' const translatePrompt = `Array to Translate: \`\`\`${JSON.stringify(array)}\`\`\` from "en-US" to "${localeMap[locale] || locale} p.s. please don't include the original array in your answer, keep double quotes as the array elements delimiter, don't allow double quotes inside array elements, preserve the array lengths even if they're empty strings or urls.` let completion = await getChat({ prompt: translatePrompt, context, temperature: 0.5 }) console.log(completion) - const reply = completion.choices[0].message?.content - - // console.log({ reply }) - // if (reply.includes("I apologize")) { - // throw new Error("try again") - // } - - //answer = safeArray('"' + reply.replace(/\n/g, "\\n").replace(/(?<=\w)"(?=\w)/g, "'").split('["')[1].split('"]')[0] + '"') - console.log("before split", {translatePrompt, reply, answer, array}) - const split = `["` + reply.split(`["`)[1].split(`"]`)[0] + `"]` - console.log( {split}) - answer = JSON.parse(split) + console.log("before split", {translatePrompt, reply, answer, array}) + const split = `["` + reply.split(`["`)[1].split(`"]`)[0] + `"]` + console.log( {split}) + answer = JSON.parse(split) if(answer.length !== array.length) { console.log( {translatePrompt, reply, answer, array}) return translate({ array, length: true}) } - //answer = JSON.parse(reply.replace("\\n", "\n").split('```')[1]) } catch (e) { throw new Error(e) } return answer - - //console.log({ answer }) - } const getTranslations = async ({ array, locale, fieldName }) => { - //console.log({array}) if (!array?.length) return new Error("No array") const translated = [] let retries = 5 @@ -176,80 +161,35 @@ const getTranslations = async ({ array, locale, fieldName }) => { } } - - - // for (const string in array) { - // const response = await translate({ prompt: string }) - // if(!!response) { - // translated.push(response) - // } - // } return { answer: response.answer, retry: response.retry, error: response.error } } const doTranslations = async ({ locale, fieldName }) => { + const localizedFieldName = `${fieldName}${localeMap[locale]}`; + const translatedField = JSON.parse(fs.readFileSync(`./migrations/data/results-${locale}.json`, 'utf-8')); return new Promise((resolve, reject) => { const strArray = JSON.parse(fs.readFileSync(`./migrations/data/results-flat.json`, 'utf-8')); - //const strArray = TEST_PROMPT - const chunks = chunkArray(strArray, params?.chunkSize); progressBar = new ProgressBar(chunks.length); const promises = chunks.map((e) => getTranslations({ array: e, locale, fieldName })) - // console.log({ chunks }) let translated = []; - - + Promise.all(promises) .then(results => { - const flat = results.flat(1) - - //console.log({ flat }) - + const flat = results.flat(1); fs.writeFileSync(`./migrations/data/src-${locale}.json`, JSON.stringify(flat, null, 4), 'utf-8'); console.log('All promises have been fulfilled!', results); - resolve() + resolve(); }) .catch(error => { console.error('One of the promises was rejected.', error); - reject() + reject(); }); - - //const progressBar = new ProgressBar(chunks.length); - - // let counter = 0 - // let time = new Date().getTime() - // for (let i = 0; i < chunks.length - 1;) { - // console.log("\npointer at", i) - // const result = await getTranslations({ array: chunks[i] }) - // if (!result.retry) { - // console.log("\nprogressing") - // progressBar.update() - // translated = [...translated, result.answer] - // i++ - // } - // counter++ - // const current = new Date().getTime() - // const delta = current - time - // if (delta > 1000 * 50 && counter === params?.limit - 1) { - // let wait = (1000 * 60) - delta + 1000 - // if (result?.error?.code === 'rate_limit_exceeded') { - // wait = 21000 - // } - // console.log("\nWaiting....") - // await sleep(wait) - // time = new Date().getTime() - // counter = 0 - // } - // } - - //console.log({ translated }) }) } -//doTranslations() - module.exports = { doTranslations } diff --git a/migrations/scripts/0001-translate-episodes/updateAll.js b/migrations/scripts/0001-translate-episodes/updateAll.js index 4597d3a..33f24d5 100644 --- a/migrations/scripts/0001-translate-episodes/updateAll.js +++ b/migrations/scripts/0001-translate-episodes/updateAll.js @@ -1,4 +1,5 @@ -require('dotenv').config() +require('dotenv').config(); +const lodash = require('lodash'); const fs = require('fs'); const contentfulManagement = require('contentful-management'); const { params } = require('./params'); @@ -34,47 +35,59 @@ function sleep(ms) { } -async function updateEntries({ locale, fieldName, isRichText }) { - const localizedFieldName = `${fieldName}${localeMap[locale]}`; - await getData({ fieldName }) - prepareToTranslate({ locale, fieldName, isRichText }) - await doTranslations({ locale, fieldName }) - prepareToUpdate({ locale, fieldName, isRichText }) +async function updateEntries({ locale, fieldName, dataValue, isRichText }) { + const dataField = 'superContent'; + const memo = {} - const entriesToUpdate = JSON.parse(fs.readFileSync(`./migrations/data/destination-${locale}.json`, 'utf-8')); + if (localeMap[locale]) { + const localizedFieldName = `${fieldName}${localeMap[locale]}`; + memo.results = await getData({ fieldName: localizedFieldName, isLocalized: true, locale }); + } - const space = await client.getSpace(spaceId); - const environment = await space.getEnvironment(environmentId); + if (memo.results.total > 0) { + // await getData({ fieldName }); - for (const entryToUpdate of entriesToUpdate['items']) { - const entryId = entryToUpdate?.sys?.id - const newValue = entryToUpdate?.fields && entryToUpdate?.fields[fieldName] && entryToUpdate?.fields[fieldName] + // prepareToTranslate({ locale, fieldName, isRichText }); - if (!newValue || !entryId) { - console.log("Err: Nothing to update with") - return; - } + // await doTranslations({ locale, fieldName }); - let contentfulLocale = 'en-US' - if (locale === 'it') contentfulLocale = 'it-IT' - - try { - const entry = await environment.getEntry(entryId); - if (!(entry?.fields && entry.fields[localizedFieldName] && entry.fields[localizedFieldName][contentfulLocale])) { - console.log("adding missing locale field") - if(locale === "it") { - entry.fields[localizedFieldName] = { 'en-US': {...entry.fields[localizedFieldName]['en-US']}, [contentfulLocale]: { ...newValue } } - } else { - entry.fields[localizedFieldName] = { [contentfulLocale]: { ...newValue } } - } - } - entry.fields[localizedFieldName][contentfulLocale] = newValue; // assuming 'en-US' locale; adjust if different - await entry.update(); - console.log(`SUCCESS Updated entry ${entryId} on the field ${localizedFieldName} with new value: ${JSON.stringify(newValue)}.`); + // prepareToUpdate({ locale, fieldName, isRichText }); - } catch (error) { - console.error(`Error updating entry ${entryId}:`, error); - } + // const entriesToUpdate = JSON.parse(fs.readFileSync(`./migrations/data/destination-${locale}.json`, 'utf-8')); + + // const space = await client.getSpace(spaceId); + // const environment = await space.getEnvironment(environmentId); + + // for (const entryToUpdate of entriesToUpdate['items']) { + // const entryId = entryToUpdate?.sys?.id + // const newValue = entryToUpdate?.fields && entryToUpdate?.fields[fieldName] && entryToUpdate?.fields[fieldName] + + // if (!newValue || !entryId) { + // console.log("Err: Nothing to update with") + // return; + // } + + // let contentfulLocale = 'en-US' + // if (locale === 'it') contentfulLocale = 'it-IT' + + // try { + // const entry = await environment.getEntry(entryId); + // if (!(entry?.fields && entry.fields[localizedFieldName] && entry.fields[localizedFieldName][contentfulLocale])) { + // console.log("adding missing locale field") + // if(locale === "it") { + // entry.fields[localizedFieldName] = { 'en-US': {...entry.fields[localizedFieldName]['en-US']}, [contentfulLocale]: { ...newValue } } + // } else { + // entry.fields[localizedFieldName] = { [contentfulLocale]: { ...newValue } } + // } + // } + // entry.fields[localizedFieldName][contentfulLocale] = newValue; // assuming 'en-US' locale; adjust if different + // await entry.update(); + // console.log(`SUCCESS Updated entry ${entryId} on the field ${localizedFieldName} with new value: ${JSON.stringify(newValue)}.`); + + // } catch (error) { + // console.error(`Error updating entry ${entryId}:`, error); + // } + // } } } @@ -82,7 +95,7 @@ async function updateEntries({ locale, fieldName, isRichText }) { const updateAll = async () => { if(!params.slug) { console.log("-------- WARNING: UPDATING ALL CONTENT! ----------\nWaiting 15s for you to be sure......") - await sleep(15000) + await sleep(1500) } else { console.log(`-------- UPDATING ${params.slug} CONTENT! ----------\nWaiting 2s for you to be sure......`) await sleep(2000) @@ -91,15 +104,17 @@ const updateAll = async () => { for (const locale of params.locale) { // update rich texts if (params?.richFieldName?.length) { + const dataValue = {}; for (const fieldName of params.richFieldName) { - await updateEntries({ fieldName, locale, isRichText: true }) + await updateEntries({ fieldName, locale, dataValue, isRichText: true }) } } // update other fields if (params?.fieldName?.length) { + const dataValue = {}; for (const fieldName of params.fieldName) { - await updateEntries({ fieldName, locale, isRichText: false }) + await updateEntries({ fieldName, locale, dataValue, isRichText: false }) } } } From 473202f29303f3ba5b005a056f81830e87d89435 Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Sun, 8 Sep 2024 02:53:23 +0100 Subject: [PATCH 26/29] ar(feat) [DPCP-108]: working script --- .../helpers/get-data.js | 22 +++-- .../prepareToTranslate.js | 2 +- .../0001-translate-episodes/updateAll.js | 94 +++++++++---------- 3 files changed, 61 insertions(+), 57 deletions(-) diff --git a/migrations/scripts/0001-translate-episodes/helpers/get-data.js b/migrations/scripts/0001-translate-episodes/helpers/get-data.js index faccd12..176e4f3 100644 --- a/migrations/scripts/0001-translate-episodes/helpers/get-data.js +++ b/migrations/scripts/0001-translate-episodes/helpers/get-data.js @@ -1,33 +1,41 @@ const { configDotenv } = require("dotenv"); const { params } = require("../params"); const { writeFileSync } = require("fs"); +const _ = require("lodash"); -async function getData({ fieldName, isLocalized = true, locale }) { +async function getData({ fieldName, isLocalized = false, locale, isRichText = false, memo = {} }) { try { configDotenv(); let url if(isLocalized) { if(!params.slug) { - url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&select=fields.${fieldName},sys.id&limit=1000`; + url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&select=fields.superData,fields.${fieldName},sys.id&limit=1000`; } else { - url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&fields.${params.slugField}=${params.slug}&select=fields.${fieldName},sys.id` + url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&fields.${params.slugField}=${params.slug}&select=fields.superData,fields.${fieldName},sys.id` } if (locale == 'it') { url += '&locale=it-IT' } - console.log({ url, fieldName }) const response = await fetch(url); const parsed = await response.json(); - console.log({ response, parsed }) - + if (isLocalized) { + const nextItems = _.map(parsed.items, (item) => { + const nextData = _.merge({}, item.fields.superData, { [locale]: { [fieldName]: item.fields[fieldName] } }); + item.fields = { superData: { 'en-US' : nextData } } + return item + }) + const nextQuery = parsed + nextQuery.items = nextItems + writeFileSync(`./migrations/data/destination-${locale}.json`, JSON.stringify(nextQuery, null, 4), 'utf-8'); + } console.log(`${parsed.total} ENTRIES WILL BE UPDATED`) if (parsed.total > 0) { writeFileSync('./migrations/data/export.json', JSON.stringify(parsed, null, 4), 'utf-8'); } - return Promise.resolve(parsed); + return Promise.resolve(memo); } } catch(e) { return Promise.reject(e); diff --git a/migrations/scripts/0001-translate-episodes/prepareToTranslate.js b/migrations/scripts/0001-translate-episodes/prepareToTranslate.js index 21f1fe0..494f18c 100644 --- a/migrations/scripts/0001-translate-episodes/prepareToTranslate.js +++ b/migrations/scripts/0001-translate-episodes/prepareToTranslate.js @@ -8,7 +8,7 @@ const { params } = require("./params"); const prepareToTranslate = ({ isRichText, fieldName, locale }) => { if (isRichText) { extractRichField({ fieldName, locale }); - flatResults(); + flatResults() } else { extractField({ fieldName, locale }); } diff --git a/migrations/scripts/0001-translate-episodes/updateAll.js b/migrations/scripts/0001-translate-episodes/updateAll.js index 33f24d5..0d51975 100644 --- a/migrations/scripts/0001-translate-episodes/updateAll.js +++ b/migrations/scripts/0001-translate-episodes/updateAll.js @@ -7,6 +7,7 @@ const { prepareToTranslate } = require('./prepareToTranslate'); const { doTranslations } = require('./translate'); const { prepareToUpdate } = require('./prepareToUpdate'); const { getData } = require('./helpers/get-data'); +const _ = require("lodash"); localeMap = { 'pt': 'Pt', @@ -35,59 +36,54 @@ function sleep(ms) { } -async function updateEntries({ locale, fieldName, dataValue, isRichText }) { +async function updateEntries({ locale, fieldName, superData, isRichText }) { + const localizedFieldName = `${fieldName}${localeMap[locale]}`; const dataField = 'superContent'; - const memo = {} + const memo = { results: { total : 0 } } - if (localeMap[locale]) { - const localizedFieldName = `${fieldName}${localeMap[locale]}`; - memo.results = await getData({ fieldName: localizedFieldName, isLocalized: true, locale }); - } - - if (memo.results.total > 0) { - // await getData({ fieldName }); - - // prepareToTranslate({ locale, fieldName, isRichText }); - - // await doTranslations({ locale, fieldName }); + if (localeMap[locale] || locale === 'it') { + memo.results.data = await getData({ superData, fieldName: localizedFieldName, isLocalized: true, locale, isRichText, memo: memo.results }); + } else { + await getData({ fieldName }); - // prepareToUpdate({ locale, fieldName, isRichText }); + prepareToTranslate({ locale, fieldName, isRichText }); - // const entriesToUpdate = JSON.parse(fs.readFileSync(`./migrations/data/destination-${locale}.json`, 'utf-8')); + await doTranslations({ locale, fieldName }); - // const space = await client.getSpace(spaceId); - // const environment = await space.getEnvironment(environmentId); + prepareToUpdate({ locale, fieldName, isRichText }); + } - // for (const entryToUpdate of entriesToUpdate['items']) { - // const entryId = entryToUpdate?.sys?.id - // const newValue = entryToUpdate?.fields && entryToUpdate?.fields[fieldName] && entryToUpdate?.fields[fieldName] + const entriesToUpdate = JSON.parse(fs.readFileSync(`./migrations/data/destination-${locale}.json`, 'utf-8')); - // if (!newValue || !entryId) { - // console.log("Err: Nothing to update with") - // return; - // } + const space = await client.getSpace(spaceId); + const environment = await space.getEnvironment(environmentId); - // let contentfulLocale = 'en-US' - // if (locale === 'it') contentfulLocale = 'it-IT' + for (const entryToUpdate of entriesToUpdate['items']) { + const entryId = entryToUpdate?.sys?.id; + const newValue = entryToUpdate.fields.superData; - // try { - // const entry = await environment.getEntry(entryId); - // if (!(entry?.fields && entry.fields[localizedFieldName] && entry.fields[localizedFieldName][contentfulLocale])) { - // console.log("adding missing locale field") - // if(locale === "it") { - // entry.fields[localizedFieldName] = { 'en-US': {...entry.fields[localizedFieldName]['en-US']}, [contentfulLocale]: { ...newValue } } - // } else { - // entry.fields[localizedFieldName] = { [contentfulLocale]: { ...newValue } } - // } - // } - // entry.fields[localizedFieldName][contentfulLocale] = newValue; // assuming 'en-US' locale; adjust if different - // await entry.update(); - // console.log(`SUCCESS Updated entry ${entryId} on the field ${localizedFieldName} with new value: ${JSON.stringify(newValue)}.`); + if (!entryId && !newValue) { + console.log("Err: Nothing to update with") + return; + } - // } catch (error) { - // console.error(`Error updating entry ${entryId}:`, error); - // } - // } + let contentfulLocale = 'en-US' + if (locale === 'it') contentfulLocale = 'it-IT' + + try { + let dest = fieldName + const entry = await environment.getEntry(entryId); + fs.writeFileSync(`./migrations/data/src-next-${locale}.json`, JSON.stringify(entry, null, 4), 'utf-8'); + const nextEntryFields = _.merge({}, entry.fields, entryToUpdate.fields) + entry.fields = nextEntryFields + dest = 'superData' + fs.writeFileSync(`./migrations/data/next-${locale}.json`, JSON.stringify(entry, null, 4), 'utf-8'); + await entry.update(); + console.log(`SUCCESS Updated entry ${entryId} on the field ${dest}.`); + + } catch (error) { + console.error(`Error updating entry ${entryId}:`, error); + } } } @@ -95,26 +91,26 @@ async function updateEntries({ locale, fieldName, dataValue, isRichText }) { const updateAll = async () => { if(!params.slug) { console.log("-------- WARNING: UPDATING ALL CONTENT! ----------\nWaiting 15s for you to be sure......") - await sleep(1500) + await sleep(2000) } else { - console.log(`-------- UPDATING ${params.slug} CONTENT! ----------\nWaiting 2s for you to be sure......`) + console.log(`-------- UPDATING ${params.slug} CONTENT! ----------\nWaiting 2s for you to be sure......`) await sleep(2000) } for (const locale of params.locale) { // update rich texts if (params?.richFieldName?.length) { - const dataValue = {}; + const superData = {}; for (const fieldName of params.richFieldName) { - await updateEntries({ fieldName, locale, dataValue, isRichText: true }) + await updateEntries({ fieldName, locale, superData, isRichText: true }) } } // update other fields if (params?.fieldName?.length) { - const dataValue = {}; + const superData = {}; for (const fieldName of params.fieldName) { - await updateEntries({ fieldName, locale, dataValue, isRichText: false }) + await updateEntries({ fieldName, locale, superData, isRichText: false }) } } } From 56664d792fd703ec48e459e58e35681b90f20ecf Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Sun, 8 Sep 2024 03:00:11 +0100 Subject: [PATCH 27/29] ar(feat) [DPCP-108]: working script --- migrations/scripts/0001-translate-episodes/helpers/get-data.js | 3 ++- migrations/scripts/0001-translate-episodes/params.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/migrations/scripts/0001-translate-episodes/helpers/get-data.js b/migrations/scripts/0001-translate-episodes/helpers/get-data.js index 176e4f3..f3bc6f2 100644 --- a/migrations/scripts/0001-translate-episodes/helpers/get-data.js +++ b/migrations/scripts/0001-translate-episodes/helpers/get-data.js @@ -21,8 +21,9 @@ async function getData({ fieldName, isLocalized = false, locale, isRichText = fa const parsed = await response.json(); if (isLocalized) { + const newField = locale == 'it' || locale == 'en' ? fieldName : fieldName..slice(0, -2) const nextItems = _.map(parsed.items, (item) => { - const nextData = _.merge({}, item.fields.superData, { [locale]: { [fieldName]: item.fields[fieldName] } }); + const nextData = _.merge({}, item.fields.superData, { [locale]: { [fieldName.slice(0,-2)]: item.fields[fieldName] } }); item.fields = { superData: { 'en-US' : nextData } } return item }) diff --git a/migrations/scripts/0001-translate-episodes/params.js b/migrations/scripts/0001-translate-episodes/params.js index fe6ee45..efee284 100644 --- a/migrations/scripts/0001-translate-episodes/params.js +++ b/migrations/scripts/0001-translate-episodes/params.js @@ -9,7 +9,7 @@ const params = { ...entry, fieldName: ['title'], richFieldName: ['body'], - locale: entry.slug ? ALL_TRANSLATION_LOCALES : ['it'], + locale: ALL_TRANSLATION_LOCALES, type: 'events', model: 'gpt-4', chunkSize: 3, From 68fd789e6c64f84e8a3c48ac606f503c75b6f56b Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Sun, 8 Sep 2024 03:08:43 +0100 Subject: [PATCH 28/29] ar(feat) [DPCP-108]: working script --- .../scripts/0001-translate-episodes/helpers/get-data.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/migrations/scripts/0001-translate-episodes/helpers/get-data.js b/migrations/scripts/0001-translate-episodes/helpers/get-data.js index f3bc6f2..2b49537 100644 --- a/migrations/scripts/0001-translate-episodes/helpers/get-data.js +++ b/migrations/scripts/0001-translate-episodes/helpers/get-data.js @@ -21,9 +21,9 @@ async function getData({ fieldName, isLocalized = false, locale, isRichText = fa const parsed = await response.json(); if (isLocalized) { - const newField = locale == 'it' || locale == 'en' ? fieldName : fieldName..slice(0, -2) + const newField = locale == 'it' || locale == 'en' ? fieldName : fieldName.slice(0, -2) const nextItems = _.map(parsed.items, (item) => { - const nextData = _.merge({}, item.fields.superData, { [locale]: { [fieldName.slice(0,-2)]: item.fields[fieldName] } }); + const nextData = _.merge({}, item.fields.superData, { [locale]: { [newField]: item.fields[fieldName] } }); item.fields = { superData: { 'en-US' : nextData } } return item }) From d71edc038d06e3b5a8137173a4e0eeeb16dab655 Mon Sep 17 00:00:00 2001 From: Angelo Reale <12191809+angeloreale@users.noreply.github.com> Date: Sun, 8 Sep 2024 05:10:41 +0100 Subject: [PATCH 29/29] ar(feat) [DPCP-108]: working script --- .../helpers/get-data.js | 49 ++++++++++--------- .../helpers/reinsert-field.js | 11 ++++- .../helpers/reinsert-rich-field.js | 16 ++++-- .../scripts/0001-translate-episodes/params.js | 2 +- .../0001-translate-episodes/translate.js | 2 +- 5 files changed, 49 insertions(+), 31 deletions(-) diff --git a/migrations/scripts/0001-translate-episodes/helpers/get-data.js b/migrations/scripts/0001-translate-episodes/helpers/get-data.js index 2b49537..385836c 100644 --- a/migrations/scripts/0001-translate-episodes/helpers/get-data.js +++ b/migrations/scripts/0001-translate-episodes/helpers/get-data.js @@ -7,37 +7,38 @@ async function getData({ fieldName, isLocalized = false, locale, isRichText = fa try { configDotenv(); let url + if(!params.slug) { + url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&select=fields.superData,fields.${fieldName},sys.id&limit=1000`; + } else { + url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&fields.${params.slugField}=${params.slug}&select=fields.superData,fields.${fieldName},sys.id` + } if(isLocalized) { - if(!params.slug) { - url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&select=fields.superData,fields.${fieldName},sys.id&limit=1000`; - } else { - url = `https://preview.contentful.com/spaces/${process.env.CONTENTFUL_SPACE_ID}/environments/${params?.sourceEnv}/entries?access_token=${process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN}&content_type=${params.type}&fields.${fieldName}[exists]=true&fields.${params.slugField}=${params.slug}&select=fields.superData,fields.${fieldName},sys.id` - } if (locale == 'it') { url += '&locale=it-IT' } - const response = await fetch(url); - const parsed = await response.json(); + } + const response = await fetch(url); + const parsed = await response.json(); - if (isLocalized) { - const newField = locale == 'it' || locale == 'en' ? fieldName : fieldName.slice(0, -2) - const nextItems = _.map(parsed.items, (item) => { - const nextData = _.merge({}, item.fields.superData, { [locale]: { [newField]: item.fields[fieldName] } }); - item.fields = { superData: { 'en-US' : nextData } } - return item - }) - const nextQuery = parsed - nextQuery.items = nextItems - writeFileSync(`./migrations/data/destination-${locale}.json`, JSON.stringify(nextQuery, null, 4), 'utf-8'); - } - console.log(`${parsed.total} ENTRIES WILL BE UPDATED`) - - if (parsed.total > 0) { - writeFileSync('./migrations/data/export.json', JSON.stringify(parsed, null, 4), 'utf-8'); - } - return Promise.resolve(memo); + if (isLocalized) { + const newField = locale == 'it' || locale == 'en' ? fieldName : fieldName.slice(0, -2) + const nextItems = _.map(parsed.items, (item) => { + const nextData = _.merge({}, item.fields.superData, { [locale]: { [newField]: item.fields[fieldName] } }); + item.fields = { superData: { 'en-US' : nextData } } + return item + }) + const nextQuery = parsed + nextQuery.items = nextItems + writeFileSync(`./migrations/data/destination-${locale}.json`, JSON.stringify(nextQuery, null, 4), 'utf-8'); + } + console.log({ parsed }) + console.log(`${parsed.total} ENTRIES WILL BE UPDATED`) + + if (parsed.total > 0) { + writeFileSync('./migrations/data/export.json', JSON.stringify(parsed, null, 4), 'utf-8'); } + return Promise.resolve(memo); } catch(e) { return Promise.reject(e); } diff --git a/migrations/scripts/0001-translate-episodes/helpers/reinsert-field.js b/migrations/scripts/0001-translate-episodes/helpers/reinsert-field.js index 7df90ea..caf1a30 100644 --- a/migrations/scripts/0001-translate-episodes/helpers/reinsert-field.js +++ b/migrations/scripts/0001-translate-episodes/helpers/reinsert-field.js @@ -1,4 +1,5 @@ const fs = require('fs'); +const _ = require('lodash'); const { params } = require('../params'); @@ -13,12 +14,18 @@ const reinsertField = ({ locale, fieldName }) => { // For each filtered data item, navigate to the original entry and replace const result = filteredData.map((dataItem, i) => { const result = { ...originalData } - if (result?.items && result.items[i] && result.items[i].fields && result.items[i].fields[fieldName]) { - result.items[i].fields[fieldName] = dataItem + if (result?.items && result.items[i] && result.items[i].fields) { + const nextData = _.merge({}, result.items[i].fields.superData, { [locale]: { [fieldName]: dataItem } }); + result.items[i].fields = {} + // console.log({ result: result.items[0], next: JSON.stringify(nextData['ar'])}) + result.items[i].fields.superData = { 'en-US': nextData } } + return result })[0]; + console.log({ result: result.items[0].fields.superData }) + // Save the updated data back to the original file fs.writeFileSync(`./migrations/data/destination-${locale}.json`, JSON.stringify(result, null, 4), 'utf-8'); console.log("Updated the original data with filtered results."); diff --git a/migrations/scripts/0001-translate-episodes/helpers/reinsert-rich-field.js b/migrations/scripts/0001-translate-episodes/helpers/reinsert-rich-field.js index 5362ee5..6e2f9d1 100644 --- a/migrations/scripts/0001-translate-episodes/helpers/reinsert-rich-field.js +++ b/migrations/scripts/0001-translate-episodes/helpers/reinsert-rich-field.js @@ -1,4 +1,5 @@ const fs = require('fs'); +const _ = require('lodash'); const { params } = require('../params'); @@ -11,6 +12,7 @@ const reinsertRichField = ({ locale, fieldName }) => { const filteredData = JSON.parse(fs.readFileSync(filteredDataPath, 'utf-8')); function replaceNode(content, path, value) { + console.log({ path, content }) // Base case: If the path is empty or the content is undefined, just return. if (!path.length || !content) return; @@ -32,12 +34,20 @@ const reinsertRichField = ({ locale, fieldName }) => { } // For each filtered data item, navigate to the original entry and replace - filteredData.forEach(dataItem => { + filteredData.map(dataItem => { const entry = originalData.items.find(entry => entry.sys.id === dataItem.entryId); - if (entry && entry.fields && entry.fields[fieldName]) { - replaceNode(entry.fields[fieldName].content, dataItem.path, dataItem.value); + if (entry && entry.fields) { + const nextData = _.merge({}, entry.fields.superData, { [locale]: { [fieldName]: entry.fields[fieldName] } }); + entry.fields.superData = nextData + replaceNode(entry.fields.superData[locale][fieldName].content, dataItem.path, dataItem.value); } }); + const nextItems = originalData.items.map(item => { + item.fields = { superData: { ['en-US']: item.fields.superData } } + return item + }) + originalData.items = nextItems + console.log({ sd: nextItems }) // Save the updated data back to the original file fs.writeFileSync(`./migrations/data/destination-${locale}.json`, JSON.stringify(originalData, null, 4), 'utf-8'); diff --git a/migrations/scripts/0001-translate-episodes/params.js b/migrations/scripts/0001-translate-episodes/params.js index efee284..bc9e620 100644 --- a/migrations/scripts/0001-translate-episodes/params.js +++ b/migrations/scripts/0001-translate-episodes/params.js @@ -9,7 +9,7 @@ const params = { ...entry, fieldName: ['title'], richFieldName: ['body'], - locale: ALL_TRANSLATION_LOCALES, + locale: ['hi', 'ms', 'bn', 'pa', 'tr', 'fi', 'el', 'ko'], type: 'events', model: 'gpt-4', chunkSize: 3, diff --git a/migrations/scripts/0001-translate-episodes/translate.js b/migrations/scripts/0001-translate-episodes/translate.js index d44e05a..90f9a13 100644 --- a/migrations/scripts/0001-translate-episodes/translate.js +++ b/migrations/scripts/0001-translate-episodes/translate.js @@ -166,7 +166,7 @@ const getTranslations = async ({ array, locale, fieldName }) => { const doTranslations = async ({ locale, fieldName }) => { const localizedFieldName = `${fieldName}${localeMap[locale]}`; - const translatedField = JSON.parse(fs.readFileSync(`./migrations/data/results-${locale}.json`, 'utf-8')); + const translatedField = JSON.parse(fs.readFileSync(`./migrations/data/results.json`, 'utf-8')); return new Promise((resolve, reject) => { const strArray = JSON.parse(fs.readFileSync(`./migrations/data/results-flat.json`, 'utf-8')); const chunks = chunkArray(strArray, params?.chunkSize);