From e175979092147bf6eb3fa1e60c78635db3eafcdc Mon Sep 17 00:00:00 2001 From: Sourabh Mishra <51873245+OxSourabh@users.noreply.github.com> Date: Mon, 10 Feb 2025 02:01:59 +0530 Subject: [PATCH] i18n(hi): Add Hindi Translation (#167) --- README.md | 1 + mobile/src/modules/i18n/constants.ts | 1 + mobile/src/modules/i18n/index.ts | 2 + mobile/src/modules/i18n/translations/hi.json | 244 +++++++++++++++++++ 4 files changed, 248 insertions(+) create mode 100644 mobile/src/modules/i18n/translations/hi.json diff --git a/README.md b/README.md index d89a631d..eb81f71e 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,7 @@ Read the [Translations](./docs/translations.md) documentation for a rundown of h | Русский | [@klinoff0](https://www.github.com/klinoff0) | | Türkçe | [@mikropsoft](https://www.github.com/mikropsoft) | | Català | [@T-K-Y-M](https://www.github.com/T-K-Y-M) | +| हिंदी | [@OxSourabh](https://www.github.com/OxSourabh) | # Legal diff --git a/mobile/src/modules/i18n/constants.ts b/mobile/src/modules/i18n/constants.ts index 8ceca2ac..6281779c 100644 --- a/mobile/src/modules/i18n/constants.ts +++ b/mobile/src/modules/i18n/constants.ts @@ -5,6 +5,7 @@ export const LANGUAGES = [ { code: "en", name: "English" }, { code: "es", name: "Español" }, { code: "fr", name: "Français" }, + { code: "hi", name: "हिंदी" }, { code: "id", name: "Indonesia" }, { code: "ja", name: "日本語" }, { code: "ru", name: "Русский" }, diff --git a/mobile/src/modules/i18n/index.ts b/mobile/src/modules/i18n/index.ts index 84cb32b7..5d5ba567 100644 --- a/mobile/src/modules/i18n/index.ts +++ b/mobile/src/modules/i18n/index.ts @@ -6,6 +6,7 @@ import de from "./translations/de.json"; import en from "./translations/en.json"; import es from "./translations/es.json"; import fr from "./translations/fr.json"; +import hi from "./translations/hi.json"; import id from "./translations/id.json"; import ja from "./translations/ja.json"; import ru from "./translations/ru.json"; @@ -18,6 +19,7 @@ const resources = { en: { translation: en }, es: { translation: es }, fr: { translation: fr }, + hi: { translation: hi }, id: { translation: id }, ja: { translation: ja }, ru: { translation: ru }, diff --git a/mobile/src/modules/i18n/translations/hi.json b/mobile/src/modules/i18n/translations/hi.json new file mode 100644 index 00000000..184d1690 --- /dev/null +++ b/mobile/src/modules/i18n/translations/hi.json @@ -0,0 +1,244 @@ +{ + "language": "हिंदी", + + "common": { + "album": "एल्बम", + "albums": "एल्बम्स", + "artist": "कलाकार", + "artists": "कलाकार", + "folder": "फोल्डर", + "folders": "फोल्डर्स", + "playlist": "प्लेलिस्ट", + "playlists": "प्लेलिस्ट्स", + "track": "ट्रैक", + "tracks": "ट्रैक्स", + + "play": "चलाएँ", + "pause": "रोकें", + "prev": "पिछला", + "next": "अगला", + "shuffle": "मिश्रित करें", + "repeat": "दोहराएँ", + "repeatOne": "एक दोहराएँ", + + "favorite": "पसंदीदा", + "unFavorite": "पसंदीदा हटाएँ", + "favoriteTracks": "पसंदीदा ट्रैक्स", + + "disc": "डिस्क {{count}}", + "vinyl": "विनाइल", + "plain": "साधारण" + }, + + "header": { + "home": "होम", + "search": "खोज", + + "settings": "सेटिंग्स", + "appUpdate": "ऐप अपडेट", + "appearance": "दिखावट", + "insights": "अंतर्दृष्टि", + "saveErrors": "त्रुटियाँ सहेजें", + "scanning": "स्कैनिंग", + "thirdParty": "थर्ड-पार्टी सॉफ्टवेयर" + }, + "title": { + "language": "भाषा", + "backup": "बैकअप", + "font": "अक्षर शैली", + "theme": "थीम", + "homeTabsOrder": "होम टैब्स क्रम", + "nowPlayingDesign": "अभी चल रहा स्क्रीन डिज़ाइन", + "listAllow": "अनुमति सूची", + "listBlock": "ब्लॉक सूची", + "ignoreDuration": "छोटे ऑडियो को अनदेखा करें", + "sort": "क्रम", + "musicAdd": "संगीत जोड़ें", + "upcoming": "आगामी" + }, + + "playlist": { + "create": "प्लेलिस्ट बनाएँ", + "edit": "प्लेलिस्ट संपादित करें", + "delete": "प्लेलिस्ट हटाएँ", + + "add": "प्लेलिस्ट में जोड़ें", + "artworkChange": "आर्टवर्क बदलें", + "artworkRemove": "आर्टवर्क हटाएँ" + }, + + "home": { + "playedRecent": "हाल ही में चलाए गए", + "favorites": "पसंदीदा" + }, + + "settings": { + "interactions": "कोई इंटरैक्शन नहीं", + "scanning": "स्कैनिंग", + "rescan": "पुनः स्कैन करें", + "deepRescan": "गहरा पुनः स्कैन", + "translate": "अनुवाद में योगदान दें", + "code": "GitHub रिपॉजिटरी", + "license": "लाइसेंस", + "privacy": "गोपनीयता नीति", + "version": "संस्करण", + + "brief": { + "appUpdate": "एक नया अपडेट उपलब्ध है!", + "appearance": "ऐप की दिखावट को व्यक्तिगत बनाएं।", + "homeTabsOrder": "टैब्स के क्रम और दृश्यता को अनुकूलित करें।", + "backup": "डिवाइस के बीच डेटा स्थानांतरित करें।", + "insights": "ऐप उपयोग और सांख्यिकी।", + "saveErrors": "कुछ ट्रैक्स क्यों नहीं सहेजे गए, इसका कारण देखें।", + "interactions": "समर्थित 'कुछ भी नहीं' विशेषताएँ।", + "scanning": "संगीत खोज विकल्प।", + "rescan": "किसी भी नए मीडिया को खोजें।", + "deepRescan": "सामान्य पुनः स्कैन फीचर को तेज करने वाले किसी भी छोड़ने वाले उपायों को अनदेखा करता है।", + "translate": "ऐप को अन्य भाषाओं में अनुवाद करने में मदद करें।", + "code": "समस्याएँ रिपोर्ट करें, योगदान दें या नई विशेषताएँ अनुरोध करें।", + "thirdParty": "ऐप को संभव बनाने वाला क्या है।" + }, + + "description": { + "homeTabsOrder": "\"होम\" टैब के बाद टैब्स को खींचकर और छोड़कर पुनः क्रमबद्ध करें। आँख के आइकन का उपयोग करके टैब दृश्यता को टॉगल करें।\n\nचेतावनी: छिपे हुए टैब पर नेविगेट करते समय अप्रत्याशित व्यवहार हो सकता है।", + "backup": "एक `music_backup.json` फ़ाइल के माध्यम से इस ऐप के डेटा को डिवाइस के बीच स्थानांतरित करें।", + "listAllow": "यदि खाली हो, तो निम्नलिखित पर डिफ़ॉल्ट:", + "listBlock": "अनुमति सूची में प्रविष्टियों पर उच्च प्राथमिकता है।", + "ignoreDuration": "ऑडियो की अवधि (सेकंड में) जिसे हम सहेजना नहीं चाहते।" + }, + + "related": { + "appDownload": "नवीनतम APK डाउनलोड करें", + "appUpdate": "Play Store के माध्यम से अपडेट करें", + + "light": "हल्का", + "dark": "गहरा", + "system": "सिस्टम", + + "export": "निर्यात करें", + "import": "आयात करें", + + "images": "छवियाँ", + "database": "डेटाबेस", + "other": "अन्य", + "cache": "कैश", + "total": "कुल", + "totalDuration": "कुल अवधि", + + "pathAdd": "डायरेक्टरी जोड़ें।", + "pathSelect": "डायरेक्टरी चुनें।" + } + }, + + "errorScreen": { + "unmatched": "मेल नहीं खाने वाला मार्ग", + "unmatchedBrief": "आप किसी अमान्य मार्ग पर नेविगेट हो गए हैं।", + "missing": "लापता", + "from": "से", + + "generic": "कुछ गड़बड़ हो गई", + "genericBrief": "आपको एक अप्रत्याशित त्रुटि का सामना करना पड़ा।", + + "report": "समस्या रिपोर्ट करें", + "screenshot": "इस स्क्रीन का स्क्रीनशॉट शामिल करें।" + }, + + "onboardingScreen": { + "preprocess": "पूर्व-प्रसंस्करण", + "preprocessBrief": "सुनिश्चित कर रहा है कि मौजूदा डेटा किसी भी परिवर्तन के साथ अनुपालन में है।", + + "track": "ट्रैक्स सहेज रहा है", + "prevSaved": "{{amount}} पहले से सहेजा गया", + "saved": "{{amount}}/{{total}} सहेजा/अपडेट किया गया", + "errors": "{{amount}} त्रुटियाँ", + + "image": "छवियाँ सहेज रहा है", + "checked": "{{amount}}/{{total}} जाँचा गया", + "found": "{{amount}} पाया गया" + }, + + "sortModal": { + "asc": "आरोही क्रम", + "alphabetical": "वर्णमाला क्रम", + "modified": "अंतिम बदलाव" + }, + "trackModal": { + "bitrate": "बिटरेट", + "sampleRate": "सैंपल रेट", + "size": "आकार", + "modified": "$t(sortModal.modified)", + "filePath": "फ़ाइल पथ", + + "playlistAdd": "$t(playlist.add)", + "queueAdd": "कतार में जोड़ें" + }, + + "form": { + "apply": "परिवर्तन लागू करें", + "back": "वापस", + "cancel": "रद्द करें", + "confirm": "पुष्टि करें", + + "unsaved": "आपके पास कुछ असहेजित परिवर्तन हो सकते हैं।", + "stay": "रहें", + "leave": "छोड़ें", + + "placeholder": { + "playlistName": "प्लेलिस्ट नाम", + "searchMedia": "मीडिया खोजें" + }, + + "validation": { + "unique": "अद्वितीय" + } + }, + + "template": { + "entryAdded": "`{{- name}}` जोड़ा गया।", + "entryRemove": "`{{- name}}` हटाएँ।", + "entryRemoved": "`{{- name}}` हटा दिया गया।", + "entrySeeMore": "`{{- name}}` के बारे में और देखें।", + "notFound": "`{{- name}}` मौजूद नहीं है।", + "showEntry": "{{- name}} दिखाएँ", + "hideEntry": "{{- name}} छुपाएँ" + }, + + "plural": { + "entry_one": "{{count}} प्रविष्टि", + "entry_other": "{{count}} प्रविष्टियाँ", + "second_one": "{{count}} सेकंड", + "second_other": "{{count}} सेकंड", + "track_one": "{{count}} $t(common.track)", + "track_other": "{{count}} $t(common.tracks)" + }, + + "response": { + "noRecents": "आपने अभी तक कुछ भी नहीं चलाया है!", + "noErrors": "कोई त्रुटि नहीं मिली।", + "noFilters": "कोई फ़िल्टर नहीं मिला।", + "noResults": "कोई परिणाम नहीं मिला।", + "noContent": "कोई सामग्री नहीं मिली।", + + "noAlbums": "कोई एल्बम नहीं मिला।", + "noArtists": "कोई कलाकार नहीं मिला।", + "noPlaylists": "कोई प्लेलिस्ट नहीं मिली।", + "noTracks": "कोई ट्रैक नहीं मिला।", + "noDirectory": "कोई डायरेक्टरी नहीं मिली।", + + "queueAdd": "`{{- name}}` कतार में जोड़ा गया।", + + "exportSuccess": "बैकअप सफलतापूर्वक बनाया गया।", + "importSuccess": "बैकअप आयात पूरा हुआ।", + + "scanStart": "लाइब्रेरी को पुनः स्कैन किया जा रहा है...", + "scanSuccess": "लाइब्रेरी को पुनः स्कैन करना पूरा हुआ।", + "scanFail": "लाइब्रेरी को पुनः स्कैन करने में विफल।", + + "pathSelectFail": "कोई डायरेक्टरी चयनित नहीं है।", + + "actionCancel": "कार्रवाई रद्द कर दी गई।", + "noSelect": "कुछ भी चयनित नहीं है।", + "invalidStructure": "अमान्य संरचना।", + "usedName": "यह नाम उपयोग नहीं किया जा सकता।" + } +}