fluffychat merge

This commit is contained in:
ggurdin 2026-02-03 11:37:35 -05:00
commit 100fb4bfbc
No known key found for this signature in database
GPG key ID: A01CB41737CBB478
13 changed files with 1998 additions and 4941 deletions

View file

@ -2592,7 +2592,7 @@
}
}
},
"inviteGroupChat": "📨 Kutsu vestlusrühma",
"inviteGroupChat": "📨 Kutse vestlusrühma",
"@inviteGroupChat": {},
"invitePrivateChat": "📨 Kutsu omavahelisele vestlusele",
"@invitePrivateChat": {},

View file

@ -3362,7 +3362,7 @@
}
}
},
"sentVoiceMessage": "🎙️ {duration} - {sender}",
"sentVoiceMessage": "🎙️ {duration} - {sender}(r)en ahots-mezua",
"@sentVoiceMessage": {
"type": "String",
"placeholders": {
@ -3374,8 +3374,12 @@
}
}
},
"commandHint_logout": "Saioa itxi zure gailu honetan",
"commandHint_logoutall": "Saioa itxi gailu aktibo guztietan",
"commandHint_logout": "Amaitu saioa gailu honetan",
"@commandHint_logout": {},
"commandHint_logoutall": "Amaitu saioa aktibo dauden gailu guztietan",
"@commandHint_logoutall": {},
"moreEvents": "Gertaera gehiago",
"@moreEvents": {},
"displayNavigationRail": "Erakutsi nabigazio errail txikian",
"customReaction": "Erreakzio pertsonalizatua",
"writeAMessageLangCodes": "Idatzi {l1} edo {l2}...",
@ -4505,14 +4509,6 @@
"inviteYourFriends": "Gonbidatu zure lagunak",
"playWithAI": "Jolastu AIrekin orain",
"courseStartDesc": "Pangea Bot prest dago noiznahi joateko!\n\n...baina ikastea lagunekin hobe da!",
"@commandHint_logout": {
"type": "String",
"placeholders": {}
},
"@commandHint_logoutall": {
"type": "String",
"placeholders": {}
},
"@displayNavigationRail": {
"type": "String",
"placeholders": {}
@ -10970,4 +10966,4 @@
"type": "String",
"placeholders": {}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -3018,7 +3018,7 @@
"@searchMore": {},
"gallery": "Gailearaí",
"@gallery": {},
"alwaysUse24HourFormat": "",
"alwaysUse24HourFormat": "bréagach",
"@alwaysUse24HourFormat": {
"description": "Set to true to always display time of day in 24 hour format."
},
@ -3385,7 +3385,10 @@
"@commandHint_logout": {},
"commandHint_logoutall": "Logáil amach gach gléas gníomhach",
"@commandHint_logoutall": {},
"customReaction": "Freagairt shaincheaptha",
"customReaction": "Imoibriú saincheaptha",
"@customReaction": {},
"moreEvents": "Tuilleadh imeachtaí",
"@moreEvents": {},
"writeAMessageLangCodes": "Clóscríobh i {l1} nó {l2}...",
"requests": "Iarratais",
"holdForInfo": "Bain triail as agus coinnigh síos le haghaidh eolas faoin bhfocal.",
@ -4515,10 +4518,6 @@
"courseStartDesc": "Tá Bot Pangea réidh chun dul am ar bith!\n\n...ach is fearr foghlaim le cairde!",
"@@locale": "ga",
"@@last_modified": "2026-01-29 15:25:25.078471",
"@customReaction": {
"type": "String",
"placeholders": {}
},
"@writeAMessageLangCodes": {
"type": "String",
"placeholders": {
@ -10968,4 +10967,4 @@
"type": "String",
"placeholders": {}
}
}
}

View file

@ -3379,7 +3379,10 @@
"@commandHint_logoutall": {},
"displayNavigationRail": "Tampilkan jalur navigasi pada ponsel",
"@displayNavigationRail": {},
"customReaction": "Reaksi Kustom",
"customReaction": "Reaksi khusus",
"@customReaction": {},
"moreEvents": "Peristiwa tambahan",
"@moreEvents": {},
"writeAMessageLangCodes": "Ketik dalam {l1} atau {l2}...",
"requests": "Permintaan",
"holdForInfo": "Klik dan tahan untuk info kata.",
@ -4508,10 +4511,6 @@
"playWithAI": "Main dengan AI untuk saat ini",
"courseStartDesc": "Pangea Bot siap digunakan kapan saja!\n\n...tapi belajar lebih baik dengan teman!",
"@@locale": "id",
"@customReaction": {
"type": "String",
"placeholders": {}
},
"@writeAMessageLangCodes": {
"type": "String",
"placeholders": {
@ -10961,4 +10960,4 @@
"type": "String",
"placeholders": {}
}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-29 15:24:48.551043",
"@@last_modified": "2021-08-14 12:41:09.992206",
"about": "Informazioni",
"@about": {
"type": "String",
@ -2805,7 +2805,7 @@
"@noOneCanJoin": {},
"usersMustKnock": "Gli utenti devono bussare",
"@usersMustKnock": {},
"alwaysUse24HourFormat": "",
"alwaysUse24HourFormat": "disattivato",
"@alwaysUse24HourFormat": {
"description": "Set to true to always display time of day in 24 hour format."
},
@ -3350,13 +3350,39 @@
"@youHaveKnocked": {},
"pleaseWaitUntilInvited": "Ora attendi, finché qualcuno dalla stanza non ti invita.",
"@pleaseWaitUntilInvited": {},
"checkList": "Elenco di controllo",
"checkList": "Checklist",
"@checkList": {},
"countInvited": "{count} invitati",
"@countInvited": {
"type": "String",
"placeholders": {
"count": {
"type": "int"
}
}
},
"sentVoiceMessage": "🎙️ {duration} - Messaggio vocale da {sender}",
"commandHint_logout": "Disconnetti il dispositivo corrente",
"@sentVoiceMessage": {
"type": "String",
"placeholders": {
"sender": {
"type": "String"
},
"duration": {
"type": "String"
}
}
},
"commandHint_logout": "Disconnetti questo dispositivo",
"@commandHint_logout": {},
"commandHint_logoutall": "Disconnetti tutti i dispositivi attivi",
"displayNavigationRail": "Mostra la barra di navigazione su mobile",
"@commandHint_logoutall": {},
"displayNavigationRail": "Mostra barra di navigazione su mobile",
"@displayNavigationRail": {},
"customReaction": "Reazione personalizzata",
"@customReaction": {},
"moreEvents": "Altri eventi",
"@moreEvents": {},
"writeAMessageLangCodes": "Scrivi in {l1} o {l2}...",
"requests": "Richieste",
"holdForInfo": "Tieni premuto per informazioni sulla parola.",
@ -4485,45 +4511,6 @@
"playWithAI": "Gioca con l'IA per ora",
"courseStartDesc": "Pangea Bot è pronto in qualsiasi momento!\n\n...ma imparare è meglio con gli amici!",
"@@locale": "it",
"@checkList": {
"type": "String",
"placeholders": {}
},
"@countInvited": {
"type": "String",
"placeholders": {
"count": {
"type": "int"
}
}
},
"@sentVoiceMessage": {
"type": "String",
"placeholders": {
"duration": {
"type": "String"
},
"sender": {
"type": "String"
}
}
},
"@commandHint_logout": {
"type": "String",
"placeholders": {}
},
"@commandHint_logoutall": {
"type": "String",
"placeholders": {}
},
"@displayNavigationRail": {
"type": "String",
"placeholders": {}
},
"@customReaction": {
"type": "String",
"placeholders": {}
},
"@writeAMessageLangCodes": {
"type": "String",
"placeholders": {

View file

@ -1250,7 +1250,7 @@
}
}
},
"waitingPartnerEmoji": "Gaida, līdz biedrs apstiprinās emocijzīmi…",
"waitingPartnerEmoji": "Gaida, līdz biedrs apstiprinās emocijzīmes…",
"@waitingPartnerEmoji": {
"type": "String",
"placeholders": {}
@ -2256,7 +2256,7 @@
"type": "String",
"placeholders": {}
},
"noGoogleServicesWarning": "Izskatās, ka Firebase mākoņziņojumapmaiņa nav pieejama šajā ierīcē. Lai joprojām saņemtu pašpiegādes paziņojumus, mēs iesakām uzstādīt ntfy. Ar ntfy vai citu Vienotās pašpiegādes nodrošinātāju ir iespējams saņemt pašpiegādes paziņojumus drošā veidā. ntfy var lejupielādēt no PlayStore vai F-Droid.",
"noGoogleServicesWarning": "Izskatās, ka Firebase mākoņziņojumapmaiņa nav pieejama šajā ierīcē. Lai joprojām saņemtu pašpiegādes paziņojumus, mēs iesakām uzstādīt ntfy. Ar ntfy vai citu UnifiedPush nodrošinātāju ir iespējams saņemt pašpiegādes paziņojumus drošā veidā. ntfy var lejupielādēt no Play Store vai F-Droid.",
"@noGoogleServicesWarning": {
"type": "String",
"placeholders": {}
@ -2993,7 +2993,7 @@
"@sendRoomNotifications": {},
"changeTheDescriptionOfTheGroup": "Mainīt tērzēšanas aprakstu",
"@changeTheDescriptionOfTheGroup": {},
"alwaysUse24HourFormat": "",
"alwaysUse24HourFormat": "",
"@alwaysUse24HourFormat": {
"description": "Set to true to always display time of day in 24 hour format."
},
@ -3364,6 +3364,9 @@
"displayNavigationRail": "Rādīt pārvietošanās sliedi viedierīcēs",
"@displayNavigationRail": {},
"customReaction": "Pielāgota reakcija",
"@customReaction": {},
"moreEvents": "Vairāk notikumu",
"@moreEvents": {},
"ignore": "Bloķēt",
"ignoredUsers": "Bloķētie lietotāji",
"writeAMessageLangCodes": "Rakstiet {l1} vai {l2}...",
@ -4495,10 +4498,6 @@
"editCourseLater": "Jūs varat vēlāk rediģēt šablona nosaukumu, aprakstus un kursa attēlu.",
"createCourse": "Izveidot kursu",
"stats": "Statistika",
"@customReaction": {
"type": "String",
"placeholders": {}
},
"@ignore": {
"type": "String",
"placeholders": {}
@ -10956,4 +10955,4 @@
"type": "String",
"placeholders": {}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -3374,10 +3374,16 @@
"@youHaveKnocked": {},
"pleaseWaitUntilInvited": "Proszę zaczekać na zaproszenie przez kogoś z pokoju.",
"@pleaseWaitUntilInvited": {},
"commandHint_logout": "Wyloguj się z aktualnego urządzenia",
"commandHint_logoutall": "Wyloguj się ze wszystkich aktywnych urządzeń",
"displayNavigationRail": "Pokaż pasek nawigacji na telefonie",
"customReaction": "Niestandardowa reakcja",
"commandHint_logout": "Wyloguj bieżące urządzenie",
"@commandHint_logout": {},
"commandHint_logoutall": "Wyloguj wszystkie aktywne urządzenia",
"@commandHint_logoutall": {},
"displayNavigationRail": "Pokazuj pasek nawigacyjny na urządzeniach mobilnych",
"@displayNavigationRail": {},
"customReaction": "Własna reakcja",
"@customReaction": {},
"moreEvents": "Więcej zdarzeń",
"@moreEvents": {},
"writeAMessageLangCodes": "Piszesz w {l1} lub {l2}...",
"requests": "Prośby",
"holdForInfo": "Kliknij i przytrzymaj, aby uzyskać informacje o słowie.",
@ -4505,22 +4511,6 @@
"inviteYourFriends": "Zaproś swoich znajomych",
"playWithAI": "Na razie pobaw się AI",
"courseStartDesc": "Pangea Bot jest gotowy do działania w każdej chwili!\n\n...ale nauka jest lepsza z przyjaciółmi!",
"@commandHint_logout": {
"type": "String",
"placeholders": {}
},
"@commandHint_logoutall": {
"type": "String",
"placeholders": {}
},
"@displayNavigationRail": {
"type": "String",
"placeholders": {}
},
"@customReaction": {
"type": "String",
"placeholders": {}
},
"@writeAMessageLangCodes": {
"type": "String",
"placeholders": {
@ -10968,4 +10958,4 @@
"type": "String",
"placeholders": {}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -145,7 +145,7 @@
"type": "String",
"placeholders": {}
},
"banned": "Banido",
"banned": "Banidos",
"@banned": {
"type": "String",
"placeholders": {}
@ -2589,7 +2589,7 @@
}
}
},
"inviteGroupChat": "📨 Convidar conversa em grupo",
"inviteGroupChat": "📨 Convidar grupo",
"@inviteGroupChat": {},
"invitePrivateChat": "📨 Convidar conversa privada",
"@invitePrivateChat": {},
@ -2950,7 +2950,7 @@
"@createNewAddress": {},
"knock": "Bater na porta",
"@knock": {},
"searchIn": "Pesquisar em {chat}...",
"searchIn": "Procurar na conversa {chat}...",
"@searchIn": {
"type": "String",
"placeholders": {
@ -3377,7 +3377,7 @@
"@displayNavigationRail": {},
"previous": "Anterior",
"@previous": {},
"otherPartyNotLoggedIn": "A outra pessoa não nenhum dispositivo conectado no momento e portanto não consegue receber mensagens!",
"otherPartyNotLoggedIn": "A outra pessoa não tem nenhum dispositivo conectado no momento e portanto não consegue receber mensagens!",
"@otherPartyNotLoggedIn": {},
"customReaction": "Reação personalizada",
"@customReaction": {},

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2026-01-29 15:25:06.783614",
"@@last_modified": "2021-08-14 12:41:09.826673",
"acceptedTheInvitation": "👍 {username} அழைப்பை ஏற்றுக்கொண்டது",
"@acceptedTheInvitation": {
"type": "String",
@ -618,7 +618,7 @@
"type": "String",
"placeholders": {}
},
"noEmotesFound": "உணர்ச்சிகள் எதுவும் காணப்படவில்லை. .",
"noEmotesFound": "உணர்ச்சிகள் எதுவும் காணப்படவில்லை. 😕",
"@noEmotesFound": {
"type": "String",
"placeholders": {}
@ -774,7 +774,7 @@
}
}
},
"unpin": "Unpin",
"unpin": "மூள்நீக்கு",
"@unpin": {
"type": "String",
"placeholders": {}
@ -802,7 +802,7 @@
"type": "String",
"placeholders": {}
},
"messageInfo": "செய்தி செய்தி",
"messageInfo": "செய்தி தகவல்",
"@messageInfo": {},
"sentAFile": "📁 {username} கோப்பை அனுப்பியுள்ளார்",
"@sentAFile": {
@ -1046,7 +1046,7 @@
}
}
},
"placeCall": "அழைப்பு அழைப்பு",
"placeCall": "அழைப்பு இடு",
"@placeCall": {},
"videoCallsBetaWarning": "வீடியோ அழைப்புகள் தற்போது பீட்டாவில் உள்ளன என்பதை நினைவில் கொள்க. அவர்கள் எதிர்பார்த்தபடி வேலை செய்யக்கூடாது அல்லது எல்லா தளங்களிலும் வேலை செய்யக்கூடாது.",
"@videoCallsBetaWarning": {},
@ -1662,7 +1662,7 @@
}
}
},
"noChatsFoundHere": "இங்கே அரட்டைகள் எதுவும் காணப்படவில்லை. கீழே உள்ள பொத்தானைப் பயன்படுத்தி ஒருவருடன் புதிய அரட்டையைத் தொடங்கவும். .",
"noChatsFoundHere": "இங்கே அரட்டைகள் எதுவும் காணப்படவில்லை. கீழே உள்ள பொத்தானைப் பயன்படுத்தி ஒருவருடன் புதிய அரட்டையைத் தொடங்கவும். ⤵️",
"@noChatsFoundHere": {},
"space": "இடைவெளி",
"@space": {},
@ -2148,7 +2148,7 @@
"type": "String",
"placeholders": {}
},
"play": "Play {fileName}",
"play": "{fileName} இயக்கு",
"@play": {
"type": "String",
"placeholders": {
@ -2689,9 +2689,9 @@
"@formattedMessagesDescription": {},
"verifyOtherUser": "Poser மற்ற பயனரை சரிபார்க்கவும்",
"@verifyOtherUser": {},
"verifyOtherUserDescription": "நீங்கள் மற்றொரு பயனரைச் சரிபார்த்தால், நீங்கள் உண்மையில் யாருக்கு எழுதுகிறீர்கள் என்பது உங்களுக்குத் தெரியும் என்பதை நீங்கள் உறுதியாக நம்பலாம். .\n\n நீங்கள் ஒரு சரிபார்ப்பைத் தொடங்கும்போது, நீங்களும் மற்ற பயனரும் பயன்பாட்டில் ஒரு பாப்அப்பைக் காண்பீர்கள். நீங்கள் ஒருவருக்கொருவர் ஒப்பிட வேண்டிய தொடர்ச்சியான ஈமோசிகள் அல்லது எண்களைக் காண்பீர்கள்.\n\n இதைச் செய்வதற்கான சிறந்த வழி வீடியோ அழைப்பைச் சந்திப்பது அல்லது தொடங்குவது. .",
"verifyOtherUserDescription": "நீங்கள் மற்றொரு பயனரைச் சரிபார்த்தால், நீங்கள் உண்மையில் யாருக்கு எழுதுகிறீர்கள் என்பது உங்களுக்குத் தெரியும் என்பதை நீங்கள் உறுதியாக நம்பலாம். 💪\n\nநீங்கள் ஒரு சரிபார்ப்பைத் தொடங்கும்போது, நீங்களும் மற்ற பயனரும் பயன்பாட்டில் ஒரு பாப்அப்பைக் காண்பீர்கள். நீங்கள் ஒருவருக்கொருவர் ஒப்பிட வேண்டிய தொடர்ச்சியான ஈமோசிகள் அல்லது எண்களைக் காண்பீர்கள்.\n\nஇதைச் செய்வதற்கான சிறந்த வழி வீடியோ அழைப்பைச் சந்திப்பது அல்லது தொடங்குவது. 👭",
"@verifyOtherUserDescription": {},
"verifyOtherDeviceDescription": "நீங்கள் மற்றொரு சாதனத்தை சரிபார்க்கும்போது, அந்த சாதனங்கள் விசைகளை பரிமாறிக்கொள்ளலாம், உங்கள் ஒட்டுமொத்த பாதுகாப்பை அதிகரிக்கும். So நீங்கள் ஒரு சரிபார்ப்பைத் தொடங்கும்போது, இரண்டு சாதனங்களிலும் பயன்பாட்டில் ஒரு பாப்அப் தோன்றும். நீங்கள் ஒருவருக்கொருவர் ஒப்பிட வேண்டிய தொடர்ச்சியான ஈமோசிகள் அல்லது எண்களைக் காண்பீர்கள். நீங்கள் சரிபார்ப்பைத் தொடங்குவதற்கு முன்பு இரண்டு சாதனங்களையும் எளிதில் வைத்திருப்பது நல்லது. .",
"verifyOtherDeviceDescription": "நீங்கள் மற்றொரு சாதனத்தைச் சரிபார்க்கும்போது, அந்தச் சாதனங்கள் விசைகளைப் பரிமாறிக்கொள்ளலாம், உங்கள் ஒட்டுமொத்த பாதுகாப்பை அதிகரிக்கும். 💪 நீங்கள் ஒரு சரிபார்ப்பைத் தொடங்கும்போது, இரண்டு சாதனங்களிலும் பயன்பாட்டில் ஒரு பாப்அப் தோன்றும். நீங்கள் ஒருவருக்கொருவர் ஒப்பிட வேண்டிய தொடர்ச்சியான ஈமோசிகள் அல்லது எண்களைக் காண்பீர்கள். நீங்கள் சரிபார்ப்பைத் தொடங்குவதற்கு முன்பு இரண்டு சாதனங்களையும் எளிதில் வைத்திருப்பது நல்லது. 🤳",
"@verifyOtherDeviceDescription": {},
"canceledKeyVerification": "{sender} ரத்து செய்யப்பட்ட விசை சரிபார்ப்பு",
"@canceledKeyVerification": {
@ -2828,7 +2828,7 @@
"@website": {},
"compress": "சுருக்க",
"@compress": {},
"alwaysUse24HourFormat": "",
"alwaysUse24HourFormat": "தவறு",
"@alwaysUse24HourFormat": {
"description": "Set to true to always display time of day in 24 hour format."
},
@ -3169,89 +3169,212 @@
"type": "String",
"placeholders": {}
},
"setCustomPermissionLevel": "தனிப்பயன் அனுமதி நிலையை அமைக்கவும்",
"setPermissionsLevelDescription": "தயவுசெய்து கீழே ஒரு முன்பே நிர்ணயிக்கப்பட்ட பாத்திரத்தை தேர்ந்தெடுக்கவும் அல்லது 0 முதல் 100 வரை தனிப்பயன் அனுமதி நிலையை உள்ளிடவும்.",
"setCustomPermissionLevel": "தனிப்பயன் இசைவு அளவை அமைக்கவும்",
"@setCustomPermissionLevel": {},
"setPermissionsLevelDescription": "தயவுசெய்து கீழே ஒரு முன் வரையறுக்கப்பட்ட பாத்திரத்தைத் தேர்வுசெய்க அல்லது 0 மற்றும் 100 க்கு இடையில் தனிப்பயன் இசைவு நிலையை உள்ளிடவும்.",
"@setPermissionsLevelDescription": {},
"ignoreUser": "பயனரை புறக்கணிக்கவும்",
"@ignoreUser": {},
"normalUser": "சாதாரண பயனர்",
"commandHint_roomupgrade": "இந்த அறையை கொடுக்கப்பட்ட அறை பதிப்புக்கு மேம்படுத்தவும்",
"checkList": "பரிசோதனை பட்டியல்",
"countInvited": "{count} அழைக்கப்பட்டவர்கள்",
"synchronizingPleaseWaitCounter": "செயலாக்கம் நடைபெற்று வருகிறது… ({percentage}%)",
"previous": "முன்னையது",
"otherPartyNotLoggedIn": "மற்ற பக்கம் தற்போது உள்நுழையவில்லை, ஆகையால் செய்திகள் பெற முடியாது!",
"appWantsToUseForLogin": "'{server}' ஐ உள்நுழைய பயன்படுத்தவும்",
"appWantsToUseForLoginDescription": "நீங்கள் இப்போது செயலி மற்றும் இணையதளத்திற்கு உங்களது தகவலை பகிர அனுமதிக்கின்றீர்கள்.",
"open": "திறக்கவும்",
"waitingForServer": "சேவையகத்திற்காக காத்திருக்கிறது...",
"appIntroduction": "FluffyChat உங்கள் நண்பர்களுடன் பல்வேறு செய்தியாளர்களில் பேச அனுமதிக்கிறது. மேலும் அறிய https://matrix.org இல் கற்றுக்கொள்ளவும் அல்லது *தொடரவும்* என்பதைக் கிளிக் செய்யவும்.",
"newChatRequest": "📩 புதிய உரையாடல் கோரிக்கை",
"@normalUser": {},
"commandHint_roomupgrade": "கொடுக்கப்பட்ட அறை பதிப்பிற்கு இந்த அறையை மேம்படுத்தவும்",
"@commandHint_roomupgrade": {},
"checkList": "சரிபார்ப்பு பட்டியல்",
"@checkList": {},
"countInvited": "{count} அழைக்கப்பட்டது",
"@countInvited": {
"type": "String",
"placeholders": {
"count": {
"type": "int"
}
}
},
"synchronizingPleaseWaitCounter": " ஒத்திசைத்தல்… ({percentage}%)",
"@synchronizingPleaseWaitCounter": {
"type": "String",
"placeholders": {
"percentage": {
"type": "String"
}
}
},
"previous": "முந்தைய",
"@previous": {},
"otherPartyNotLoggedIn": "மற்ற கட்சி தற்போது உள்நுழைந்திருக்கவில்லை, எனவே செய்திகளைப் பெற முடியாது!",
"@otherPartyNotLoggedIn": {},
"appWantsToUseForLogin": "உள்நுழைய '{server}' ஐப் பயன்படுத்தவும்",
"@appWantsToUseForLogin": {
"type": "String",
"placeholders": {
"server": {
"type": "String"
}
}
},
"appWantsToUseForLoginDescription": "உங்களைப் பற்றிய தகவல்களைப் பகிர பயன்பாடு மற்றும் வலைத்தளத்தை இதன்மூலம் அனுமதிக்கிறீர்கள்.",
"@appWantsToUseForLoginDescription": {},
"open": "திற",
"@open": {},
"waitingForServer": "சேவையகத்திற்காக காத்திருக்கிறது ...",
"@waitingForServer": {},
"appIntroduction": "வெவ்வேறு தூதர்களில் உங்கள் நண்பர்களுடன் அரட்டையடிக்க உங்களை பஞ்சுபோன்றது உங்களை அனுமதிக்கிறது. Https://matrix.org இல் மேலும் அறிக அல்லது *தொடரவும் *தட்டவும்.",
"@appIntroduction": {},
"newChatRequest": "அரட்டை கோரிக்கை",
"@newChatRequest": {},
"contentNotificationSettings": "உள்ளடக்க அறிவிப்பு அமைப்புகள்",
"generalNotificationSettings": "பொதுவான அறிவிப்பு அமைப்புகள்",
"@contentNotificationSettings": {},
"generalNotificationSettings": "பொது அறிவிப்பு அமைப்புகள்",
"@generalNotificationSettings": {},
"roomNotificationSettings": "அறை அறிவிப்பு அமைப்புகள்",
"@roomNotificationSettings": {},
"userSpecificNotificationSettings": "பயனர் குறிப்பிட்ட அறிவிப்பு அமைப்புகள்",
"otherNotificationSettings": "மற்ற அறிவிப்பு அமைப்புகள்",
"notificationRuleContainsUserName": "பயனர் பெயரை உள்ளடக்கியது",
"notificationRuleContainsUserNameDescription": "ஒரு செய்தி அவர்களின் பயனர் பெயரை உள்ளடக்கிய போது பயனருக்கு அறிவிக்கிறது.",
"notificationRuleMaster": "அனைத்து அறிவிப்புகளையும் மௌனம்",
"notificationRuleMasterDescription": "அனைத்து விதிகளையும் மீறி அனைத்து அறிவிப்புகளையும் முடக்குகிறது.",
"notificationRuleSuppressNotices": "தானாக இயங்கும் செய்திகள் தடுக்கவும்",
"notificationRuleSuppressNoticesDescription": "போட்டிகள் போன்ற தானாக இயங்கும் கிளையண்டுகளிலிருந்து அறிவிப்புகளை தடுக்கிறது.",
"notificationRuleInviteForMe": "எனக்கான அழைப்பு",
"@userSpecificNotificationSettings": {},
"otherNotificationSettings": "பிற அறிவிப்பு அமைப்புகள்",
"@otherNotificationSettings": {},
"notificationRuleContainsUserName": "பயனர் பெயரைக் கொண்டுள்ளது",
"@notificationRuleContainsUserName": {},
"notificationRuleContainsUserNameDescription": "ஒரு செய்தியில் அவற்றின் பயனர்பெயர் இருக்கும்போது பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleContainsUserNameDescription": {},
"notificationRuleMaster": "அனைத்து அறிவிப்புகளையும் முடக்குகிறது",
"@notificationRuleMaster": {},
"notificationRuleMasterDescription": "மற்ற எல்லா விதிகளையும் மீறி அனைத்து அறிவிப்புகளையும் முடக்குகிறது.",
"@notificationRuleMasterDescription": {},
"notificationRuleSuppressNotices": "தானியங்கு செய்திகளை அடக்கவும்",
"@notificationRuleSuppressNotices": {},
"notificationRuleSuppressNoticesDescription": "போட்ச் போன்ற தானியங்கி வாடிக்கையாளர்களிடமிருந்து அறிவிப்புகளை அடக்குகிறது.",
"@notificationRuleSuppressNoticesDescription": {},
"notificationRuleInviteForMe": "எனக்கு அழைக்கவும்",
"@notificationRuleInviteForMe": {},
"notificationRuleInviteForMeDescription": "ஒரு அறைக்கு அழைக்கப்படும்போது பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleInviteForMeDescription": {},
"notificationRuleMemberEvent": "உறுப்பினர் நிகழ்வு",
"notificationRuleMemberEventDescription": "உறுப்பினர் நிகழ்வுகளுக்கான அறிவிப்புகளை தடுக்கிறது.",
"notificationRuleIsUserMention": "பயனர் குறிப்பிடல்",
"notificationRuleIsUserMentionDescription": "ஒரு செய்தியில் நேரடியாக குறிப்பிடப்பட்டால் பயனருக்கு அறிவிக்கிறது.",
"notificationRuleContainsDisplayName": "காண்பிப்பு பெயரை உள்ளடக்கியது",
"notificationRuleContainsDisplayNameDescription": "ஒரு செய்தியில் அவர்களின் காண்பிப்பு பெயர் உள்ளடக்கியால் பயனருக்கு அறிவிக்கிறது.",
"notificationRuleIsRoomMention": "அறை குறிப்பிடல்",
"notificationRuleIsRoomMentionDescription": "ஒரு அறை குறிப்பிடல் இருந்தால் பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleMemberEvent": {},
"notificationRuleMemberEventDescription": "உறுப்பினர் நிகழ்வுகளுக்கான அறிவிப்புகளை அடக்குகிறது.",
"@notificationRuleMemberEventDescription": {},
"notificationRuleIsUserMention": "பயனர் குறிப்பு",
"@notificationRuleIsUserMention": {},
"notificationRuleIsUserMentionDescription": "ஒரு செய்தியில் நேரடியாக குறிப்பிடப்படும்போது பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleIsUserMentionDescription": {},
"notificationRuleContainsDisplayName": "காட்சி பெயரைக் கொண்டுள்ளது",
"@notificationRuleContainsDisplayName": {},
"notificationRuleContainsDisplayNameDescription": "ஒரு செய்தியில் அவற்றின் காட்சி பெயர் இருக்கும்போது பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleContainsDisplayNameDescription": {},
"notificationRuleIsRoomMention": "அறை குறிப்பு",
"@notificationRuleIsRoomMention": {},
"notificationRuleIsRoomMentionDescription": "ஒரு அறை குறிப்பு இருக்கும்போது பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleIsRoomMentionDescription": {},
"notificationRuleRoomnotif": "அறை அறிவிப்பு",
"notificationRuleRoomnotifDescription": "ஒரு செய்தியில் '@room' உள்ளடக்கியால் பயனருக்கு அறிவிக்கிறது.",
"notificationRuleTombstone": "தொம்ப்ஸ்டோன்",
"notificationRuleTombstoneDescription": "பயனருக்கு அறை செயலிழக்கும் செய்திகளைக் குறித்து அறிவிக்கிறது.",
"notificationRuleReaction": "பிரதிக்ரியா",
"notificationRuleReactionDescription": "பிரதிக்ரியைகளுக்கான அறிவிப்புகளை தடுக்கிறது.",
"notificationRuleRoomServerAcl": "அறை சேவையக ACL",
"notificationRuleRoomServerAclDescription": "அறை சேவையக அணுகல் கட்டுப்பாட்டு பட்டியல்களுக்கு (ACL) அறிவிப்புகளை தடுக்கிறது.",
"notificationRuleSuppressEdits": "தொகுப்புகளை தடுக்கவும்",
"notificationRuleSuppressEditsDescription": "தொகுக்கப்பட்ட செய்திகளுக்கான அறிவிப்புகளை தடுக்கிறது.",
"notificationRuleCall": "அழைப்பு",
"notificationRuleCallDescription": "பயனருக்கு அழைப்புகள் பற்றி அறிவிக்கிறது.",
"notificationRuleEncryptedRoomOneToOne": "குறியாக்கப்பட்ட அறை ஒன்று-க்கு-ஒரு",
"notificationRuleEncryptedRoomOneToOneDescription": "குறியாக்கப்பட்ட ஒன்று-க்கு-ஒரு அறைகளில் உள்ள செய்திகளைக் குறித்து பயனருக்கு அறிவிக்கிறது.",
"notificationRuleRoomOneToOne": "அறை ஒன்று-க்கு-ஒரு",
"notificationRuleRoomOneToOneDescription": "ஒரு-க்கு-ஒரு அறைகளில் உள்ள செய்திகளைக் குறித்து பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleRoomnotif": {},
"notificationRuleRoomnotifDescription": "ஒரு செய்தியில் '@ROOM' இருக்கும்போது பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleRoomnotifDescription": {},
"notificationRuleTombstone": "கல்லறை",
"@notificationRuleTombstone": {},
"notificationRuleTombstoneDescription": "அறை செயலிழக்கச் செய்திகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleTombstoneDescription": {},
"notificationRuleReaction": "எதிர்வினை",
"@notificationRuleReaction": {},
"notificationRuleReactionDescription": "எதிர்வினைகளுக்கான அறிவிப்புகளை அடக்குகிறது.",
"@notificationRuleReactionDescription": {},
"notificationRuleRoomServerAcl": "அறை சேவையகம் ACL",
"@notificationRuleRoomServerAcl": {},
"notificationRuleRoomServerAclDescription": "அறை சேவையக அணுகல் கட்டுப்பாட்டு பட்டியல்களுக்கான (ACL) அறிவிப்புகளை அடக்குகிறது.",
"@notificationRuleRoomServerAclDescription": {},
"notificationRuleSuppressEdits": "திருத்தங்களை அடக்கவும்",
"@notificationRuleSuppressEdits": {},
"notificationRuleSuppressEditsDescription": "திருத்தப்பட்ட செய்திகளுக்கான அறிவிப்புகளை அடக்குகிறது.",
"@notificationRuleSuppressEditsDescription": {},
"notificationRuleCall": "அழை",
"@notificationRuleCall": {},
"notificationRuleCallDescription": "அழைப்புகள் பற்றி பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleCallDescription": {},
"notificationRuleEncryptedRoomOneToOne": "மறைகுறியாக்கப்பட்ட அறை ஒன்றுக்கு ஒன்று",
"@notificationRuleEncryptedRoomOneToOne": {},
"notificationRuleEncryptedRoomOneToOneDescription": "மறைகுறியாக்கப்பட்ட ஒன்றுக்கு ஒன்று அறைகளில் செய்திகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleEncryptedRoomOneToOneDescription": {},
"notificationRuleRoomOneToOne": "அறை ஒன்று",
"@notificationRuleRoomOneToOne": {},
"notificationRuleRoomOneToOneDescription": "ஒருவருக்கு ஒன்று அறைகளில் செய்திகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleRoomOneToOneDescription": {},
"notificationRuleMessage": "செய்தி",
"notificationRuleMessageDescription": "பொது செய்திகளுக்கான அறிவிப்புகளை வழங்குகிறது.",
"@notificationRuleMessage": {},
"notificationRuleMessageDescription": "பொதுவான செய்திகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleMessageDescription": {},
"notificationRuleEncrypted": "குறியாக்கப்பட்டது",
"notificationRuleEncryptedDescription": "குறியாக்கப்பட்ட அறைகளில் உள்ள செய்திகளைக் குறித்து பயனருக்கு அறிவிக்கிறது.",
"notificationRuleJitsi": "ஜிட்சி",
"notificationRuleJitsiDescription": "ஜிட்சி விகித்டு நிகழ்வுகள் பற்றி பயனருக்கு அறிவிக்கிறது.",
"notificationRuleServerAcl": "சேவையக ACL நிகழ்வுகளை தடுக்கவும்",
"notificationRuleServerAclDescription": "சேவையக ACL நிகழ்வுகளுக்கான அறிவிப்புகளை தடுக்கிறது.",
"unknownPushRule": "அறியப்படாத புஷ் விதி '{rule}'",
"sentVoiceMessage": "🎙️ {duration} - {sender} இல் இருந்து குரல் செய்தி",
"deletePushRuleCanNotBeUndone": "இந்த அறிவிப்பு அமைப்பை நீக்கினால், அதை மீட்டமைக்க முடியாது.",
"@notificationRuleEncrypted": {},
"notificationRuleEncryptedDescription": "மறைகுறியாக்கப்பட்ட அறைகளில் செய்திகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleEncryptedDescription": {},
"notificationRuleJitsi": "சியோட்ச்",
"@notificationRuleJitsi": {},
"notificationRuleJitsiDescription": "சிட்சி விட்செட் நிகழ்வுகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.",
"@notificationRuleJitsiDescription": {},
"notificationRuleServerAcl": "சேவையக ACL நிகழ்வுகளை அடக்கவும்",
"@notificationRuleServerAcl": {},
"notificationRuleServerAclDescription": "சேவையக ACL நிகழ்வுகளுக்கான அறிவிப்புகளை அடக்குகிறது.",
"@notificationRuleServerAclDescription": {},
"unknownPushRule": "அறியப்படாத புச் விதி '{rule}'",
"@unknownPushRule": {
"type": "String",
"placeholders": {
"rule": {
"type": "String"
}
}
},
"sentVoiceMessage": "🎙️{duration} - {sender} இலிருந்து குரல் செய்தி",
"@sentVoiceMessage": {
"type": "String",
"placeholders": {
"sender": {
"type": "String"
},
"duration": {
"type": "String"
}
}
},
"deletePushRuleCanNotBeUndone": "இந்த அறிவிப்பு அமைப்பை நீங்கள் நீக்கினால், இதை செயல்தவிர்க்க முடியாது.",
"@deletePushRuleCanNotBeUndone": {},
"more": "மேலும்",
"shareKeysWith": "முக்கியங்களை பகிரவும்...",
"shareKeysWithDescription": "எந்த சாதனங்கள் நம்பிக்கையுடன் இருக்க வேண்டும், அவை உங்கள் குறியாக்கப்பட்ட உரையாடல்களில் உங்கள் செய்திகள் படிக்க முடியுமா?",
"allDevices": "அனைத்து சாதனங்கள்",
"crossVerifiedDevicesIfEnabled": "இணையம் சரிபார்க்கப்பட்ட சாதனங்கள் இயலுமையாக இருந்தால்",
"crossVerifiedDevices": "இணையம் சரிபார்க்கப்பட்ட சாதனங்கள்",
"verifiedDevicesOnly": "சரிபார்க்கப்பட்ட சாதனங்கள் மட்டும்",
"takeAPhoto": "படம் எடு",
"recordAVideo": "வீடியோ பதிவு செய்",
"optionalMessage": "(விருப்பமான) செய்தி...",
"@more": {},
"shareKeysWith": "விசைகளைப் பகிரவும் ...",
"@shareKeysWith": {},
"shareKeysWithDescription": "மறைகுறியாக்கப்பட்ட அரட்டைகளில் உங்கள் செய்திகளுடன் படிக்க எந்த சாதனங்களை நம்ப வேண்டும்?",
"@shareKeysWithDescription": {},
"allDevices": "அனைத்து சாதனங்களும்",
"@allDevices": {},
"crossVerifiedDevicesIfEnabled": "இயக்கப்பட்டால் சரிபார்க்கப்பட்ட சாதனங்களை குறுக்கு",
"@crossVerifiedDevicesIfEnabled": {},
"crossVerifiedDevices": "குறுக்கு சரிபார்க்கப்பட்ட சாதனங்கள்",
"@crossVerifiedDevices": {},
"verifiedDevicesOnly": "சரிபார்க்கப்பட்ட சாதனங்கள் மட்டுமே",
"@verifiedDevicesOnly": {},
"takeAPhoto": "புகைப்படம் எடுக்கவும்",
"@takeAPhoto": {},
"recordAVideo": "வீடியோவைப் பதிவுசெய்க",
"@recordAVideo": {},
"optionalMessage": "(விரும்பினால்) செய்தி ...",
"@optionalMessage": {},
"notSupportedOnThisDevice": "இந்த சாதனத்தில் ஆதரிக்கப்படவில்லை",
"enterNewChat": "புதிய உரையாடலில் நுழையவும்",
"approve": "அனுமதி அளி",
"youHaveKnocked": "நீங்கள் தட்டினீர்கள்",
"pleaseWaitUntilInvited": "தயவுசெய்து காத்திருக்கவும், அறையில் இருந்து யாரும் உங்களை அழைக்கும்வரை.",
"commandHint_logout": "உங்கள் தற்போதைய சாதனத்தை வெளியேறவும்",
"commandHint_logoutall": "அனைத்து செயல்படும் சாதனங்களிலிருந்தும் வெளியேறவும்",
"displayNavigationRail": "மொபைலில் வழிசெலுத்தல் ரெய்லை காட்டவும்",
"@notSupportedOnThisDevice": {},
"enterNewChat": "புதிய அரட்டையை உள்ளிடவும்",
"@enterNewChat": {},
"approve": "ஒப்புதல்",
"@approve": {},
"youHaveKnocked": "நீங்கள் தட்டிவிட்டீர்கள்",
"@youHaveKnocked": {},
"pleaseWaitUntilInvited": "அறையில் இருந்து யாராவது உங்களை அழைக்கும் வரை தயவுசெய்து இப்போது காத்திருங்கள்.",
"@pleaseWaitUntilInvited": {},
"commandHint_logout": "உங்கள் தற்போதைய சாதனத்தை பதிவு செய்க",
"@commandHint_logout": {},
"commandHint_logoutall": "அனைத்து செயலில் உள்ள சாதனங்களையும் அனுப்புகிறது",
"@commandHint_logoutall": {},
"displayNavigationRail": "மொபைலில் வழிசெலுத்தல் ரெயிலைக் காட்டு",
"@displayNavigationRail": {},
"customReaction": "தனிப்பயன் எதிர்வினை",
"@customReaction": {},
"moreEvents": "மேலும் நிகழ்வுகள்",
"@moreEvents": {},
"ignore": "தடுக்கும்",
"ignoredUsers": "தடுக்கும் பயனர்கள்",
"writeAMessageLangCodes": "{l1} அல்லது {l2} இல் எழுதவும்...",
@ -4382,361 +4505,6 @@
"playWithAI": "தற்காலிகமாக AI உடன் விளையாடவும்",
"courseStartDesc": "பங்கேயா பாட்டி எப்போதும் தயாராக உள்ளது!\n\n...ஆனால் நண்பர்களுடன் கற்றல் சிறந்தது!",
"@@locale": "ta",
"@setCustomPermissionLevel": {
"type": "String",
"placeholders": {}
},
"@setPermissionsLevelDescription": {
"type": "String",
"placeholders": {}
},
"@ignoreUser": {
"type": "String",
"placeholders": {}
},
"@normalUser": {
"type": "String",
"placeholders": {}
},
"@commandHint_roomupgrade": {
"type": "String",
"placeholders": {}
},
"@checkList": {
"type": "String",
"placeholders": {}
},
"@countInvited": {
"type": "String",
"placeholders": {
"count": {
"type": "int"
}
}
},
"@synchronizingPleaseWaitCounter": {
"type": "String",
"placeholders": {
"percentage": {
"type": "String"
}
}
},
"@previous": {
"type": "String",
"placeholders": {}
},
"@otherPartyNotLoggedIn": {
"type": "String",
"placeholders": {}
},
"@appWantsToUseForLogin": {
"type": "String",
"placeholders": {
"server": {
"type": "String"
}
}
},
"@appWantsToUseForLoginDescription": {
"type": "String",
"placeholders": {}
},
"@open": {
"type": "String",
"placeholders": {}
},
"@waitingForServer": {
"type": "String",
"placeholders": {}
},
"@appIntroduction": {
"type": "String",
"placeholders": {}
},
"@newChatRequest": {
"type": "String",
"placeholders": {}
},
"@contentNotificationSettings": {
"type": "String",
"placeholders": {}
},
"@generalNotificationSettings": {
"type": "String",
"placeholders": {}
},
"@roomNotificationSettings": {
"type": "String",
"placeholders": {}
},
"@userSpecificNotificationSettings": {
"type": "String",
"placeholders": {}
},
"@otherNotificationSettings": {
"type": "String",
"placeholders": {}
},
"@notificationRuleContainsUserName": {
"type": "String",
"placeholders": {}
},
"@notificationRuleContainsUserNameDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleMaster": {
"type": "String",
"placeholders": {}
},
"@notificationRuleMasterDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleSuppressNotices": {
"type": "String",
"placeholders": {}
},
"@notificationRuleSuppressNoticesDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleInviteForMe": {
"type": "String",
"placeholders": {}
},
"@notificationRuleInviteForMeDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleMemberEvent": {
"type": "String",
"placeholders": {}
},
"@notificationRuleMemberEventDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleIsUserMention": {
"type": "String",
"placeholders": {}
},
"@notificationRuleIsUserMentionDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleContainsDisplayName": {
"type": "String",
"placeholders": {}
},
"@notificationRuleContainsDisplayNameDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleIsRoomMention": {
"type": "String",
"placeholders": {}
},
"@notificationRuleIsRoomMentionDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleRoomnotif": {
"type": "String",
"placeholders": {}
},
"@notificationRuleRoomnotifDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleTombstone": {
"type": "String",
"placeholders": {}
},
"@notificationRuleTombstoneDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleReaction": {
"type": "String",
"placeholders": {}
},
"@notificationRuleReactionDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleRoomServerAcl": {
"type": "String",
"placeholders": {}
},
"@notificationRuleRoomServerAclDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleSuppressEdits": {
"type": "String",
"placeholders": {}
},
"@notificationRuleSuppressEditsDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleCall": {
"type": "String",
"placeholders": {}
},
"@notificationRuleCallDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleEncryptedRoomOneToOne": {
"type": "String",
"placeholders": {}
},
"@notificationRuleEncryptedRoomOneToOneDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleRoomOneToOne": {
"type": "String",
"placeholders": {}
},
"@notificationRuleRoomOneToOneDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleMessage": {
"type": "String",
"placeholders": {}
},
"@notificationRuleMessageDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleEncrypted": {
"type": "String",
"placeholders": {}
},
"@notificationRuleEncryptedDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleJitsi": {
"type": "String",
"placeholders": {}
},
"@notificationRuleJitsiDescription": {
"type": "String",
"placeholders": {}
},
"@notificationRuleServerAcl": {
"type": "String",
"placeholders": {}
},
"@notificationRuleServerAclDescription": {
"type": "String",
"placeholders": {}
},
"@unknownPushRule": {
"type": "String",
"placeholders": {
"rule": {
"type": "String"
}
}
},
"@sentVoiceMessage": {
"type": "String",
"placeholders": {
"duration": {
"type": "String"
},
"sender": {
"type": "String"
}
}
},
"@deletePushRuleCanNotBeUndone": {
"type": "String",
"placeholders": {}
},
"@more": {
"type": "String",
"placeholders": {}
},
"@shareKeysWith": {
"type": "String",
"placeholders": {}
},
"@shareKeysWithDescription": {
"type": "String",
"placeholders": {}
},
"@allDevices": {
"type": "String",
"placeholders": {}
},
"@crossVerifiedDevicesIfEnabled": {
"type": "String",
"placeholders": {}
},
"@crossVerifiedDevices": {
"type": "String",
"placeholders": {}
},
"@verifiedDevicesOnly": {
"type": "String",
"placeholders": {}
},
"@takeAPhoto": {
"type": "String",
"placeholders": {}
},
"@recordAVideo": {
"type": "String",
"placeholders": {}
},
"@optionalMessage": {
"type": "String",
"placeholders": {}
},
"@notSupportedOnThisDevice": {
"type": "String",
"placeholders": {}
},
"@enterNewChat": {
"type": "String",
"placeholders": {}
},
"@approve": {
"type": "String",
"placeholders": {}
},
"@youHaveKnocked": {
"type": "String",
"placeholders": {}
},
"@pleaseWaitUntilInvited": {
"type": "String",
"placeholders": {}
},
"@commandHint_logout": {
"type": "String",
"placeholders": {}
},
"@commandHint_logoutall": {
"type": "String",
"placeholders": {}
},
"@displayNavigationRail": {
"type": "String",
"placeholders": {}
},
"@customReaction": {
"type": "String",
"placeholders": {}
},
"@ignore": {
"type": "String",
"placeholders": {}

View file

@ -0,0 +1,85 @@
#!/usr/bin/env python3
"""
Script to remove all translation keys from one .arb file that exist in another .arb file.
This script:
1. Takes two .arb files as input:
- A source file containing keys to remove
- A target file to clean
2. Removes all matching keys from the target file
3. Removes corresponding metadata entries (keys starting with @)
4. Preserves key order and file structure
Usage:
python3 scripts/remove_intl_keys_from_file.py <source.arb> <target.arb>
Example:
python3 scripts/remove_intl_keys_from_file.py app_en.arb app_es.arb
"""
import json
import sys
from pathlib import Path
from collections import OrderedDict
def load_arb(path: Path) -> OrderedDict:
with open(path, "r", encoding="utf-8") as f:
return json.load(f, object_pairs_hook=OrderedDict)
def remove_keys(source_arb: OrderedDict, target_arb: OrderedDict) -> int:
"""
Remove all keys from target_arb that exist in source_arb.
Includes both normal keys and metadata keys.
"""
keys_to_remove = set(source_arb.keys())
removed = 0
for key in list(target_arb.keys()):
if key in keys_to_remove:
del target_arb[key]
removed += 1
return removed
def main() -> int:
if len(sys.argv) != 3:
print("Usage: python3 scripts/remove_intl_keys_from_file.py <source.arb> <target.arb>")
return 1
repo_path = Path(__file__).parent.parent.absolute()
l10n_dir = repo_path / 'lib' / 'l10n'
source_path = l10n_dir / sys.argv[1]
target_path = l10n_dir / sys.argv[2]
if not source_path.exists():
print(f"Error: Source file not found: {source_path}")
return 1
if not target_path.exists():
print(f"Error: Target file not found: {target_path}")
return 1
source_arb = load_arb(source_path)
target_arb = load_arb(target_path)
removed_count = remove_keys(source_arb, target_arb)
if removed_count == 0:
print("No matching keys found. Target file unchanged.")
return 0
with open(target_path, "w", encoding="utf-8") as f:
json.dump(target_arb, f, indent=2, ensure_ascii=False)
f.write("\n")
print(f"Removed {removed_count} entries from {target_path.name}")
return 0
if __name__ == "__main__":
sys.exit(main())