umami/scripts/translate-9-tamil.cjs
Mike Cao e1ee5eba27
Some checks are pending
Node.js CI / build (push) Waiting to run
Translate all 51 locale files, reducing untranslated keys from 6,017 to 862.
12 batch translation scripts covering all language families: East Asian, Romance,
Germanic, Nordic, Slavic, Other European, South/Southeast Asian, Tamil, Sinhala,
Urdu, and Burmese. Remaining untranslated keys are intentional loanwords (URL, UTM,
SMS, etc.) and en-GB which is intentionally identical to en-US.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 13:04:45 -08:00

332 lines
21 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const dir = path.join(__dirname, '..', 'public', 'intl', 'messages');
const enUS = JSON.parse(fs.readFileSync(path.join(dir, 'en-US.json'), 'utf8'));
const translations = {
'ta-IN': {
label: {
// Keys where ta-IN value === en-US value (untranslated)
'access-code': 'அணுகல் குறியீடு',
'account': 'கணக்கு',
'action': 'செயல்',
'activity': 'செயல்பாடு',
'add': 'சேர்',
'add-board': 'பலகையைச் சேர்',
'add-description': 'விளக்கத்தைச் சேர்',
'add-link': 'இணைப்பைச் சேர்',
'add-member': 'உறுப்பினரைச் சேர்',
'add-pixel': 'பிக்சலைச் சேர்',
'add-step': 'படியைச் சேர்',
'affiliate': 'இணைத்திட்டம்',
'after': 'பிறகு',
'all-time': 'எல்லா நேரமும்',
'analysis': 'பகுப்பாய்வு',
'analytics': 'பகுப்பாய்வு',
'application': 'பயன்பாடு',
'apply': 'பயன்படுத்து',
'attribution': 'காரணிப்பு',
'attribution-description': 'பயனர்கள் உங்கள் சந்தைப்படுத்தலுடன் எவ்வாறு ஈடுபடுகிறார்கள் மற்றும் மாற்றங்களை எது ஊக்குவிக்கிறது என்பதைப் பாருங்கள்.',
'audience': 'பார்வையாளர்',
'average': 'சராசரி',
'before': 'முன்',
'boards': 'பலகைகள்',
'breakdown': 'விரிவாக்கம்',
'browser': 'உலாவி',
'campaign': 'பிரச்சாரம்',
'campaigns': 'பிரச்சாரங்கள்',
'channel': 'சேனல்',
'channels': 'சேனல்கள்',
'chart': 'வரைபடம்',
'cities': 'நகரங்கள்',
'city': 'நகரம்',
'clear-all': 'அனைத்தையும் அழி',
'cohort': 'குழு',
'cohorts': 'குழுக்கள்',
'compare': 'ஒப்பிடு',
'compare-dates': 'தேதிகளை ஒப்பிடு',
'confirm': 'உறுதிப்படுத்து',
'contains': 'உள்ளடக்கியது',
'content': 'உள்ளடக்கம்',
'continue': 'தொடர்',
'conversion': 'மாற்றம்',
'conversion-rate': 'மாற்ற விகிதம்',
'conversion-step': 'மாற்றப் படி',
'count': 'எண்ணிக்கை',
'country': 'நாடு',
'create': 'உருவாக்கு',
'create-report': 'அறிக்கையை உருவாக்கு',
'create-team': 'குழுவை உருவாக்கு',
'create-user': 'பயனரை உருவாக்கு',
'created': 'உருவாக்கப்பட்டது',
'created-by': 'உருவாக்கியவர்',
'criteria': 'அளவுகோல்',
'currency': 'நாணயம்',
'current': 'தற்போதைய',
'data': 'தரவு',
'date': 'தேதி',
'day': 'நாள்',
'delete-report': 'அறிக்கையை நீக்கு',
'delete-team': 'குழுவை நீக்கு',
'delete-user': 'பயனரை நீக்கு',
'description': 'விளக்கம்',
'destination-url': 'இலக்கு URL',
'details': 'விவரங்கள்',
'device': 'சாதனம்',
'direct': 'நேரடி',
'distinct-id': 'தனித்துவ ID',
'documentation': 'ஆவணங்கள்',
'does-not-contain': 'உள்ளடக்கவில்லை',
'does-not-include': 'சேர்க்கவில்லை',
'doest-not-exist': 'இல்லை',
'download': 'பதிவிறக்கு',
'dropoff': 'விலகல்',
'edit-dashboard': 'முகப்பைத் திருத்து',
'edit-member': 'உறுப்பினரைத் திருத்து',
'email': 'மின்னஞ்சல்',
'end-step': 'இறுதிப் படி',
'environment': 'சூழல்',
'event': 'நிகழ்வு',
'event-data': 'நிகழ்வுத் தரவு',
'event-name': 'நிகழ்வு பெயர்',
'exclude-bounce': 'துள்ளலை விலக்கு',
'exists': 'உள்ளது',
'false': 'தவறு',
'field': 'புலம்',
'fields': 'புலங்கள்',
'filter': 'வடிகட்டி',
'filters': 'வடிகட்டிகள்',
'first-click': 'முதல் கிளிக்',
'first-seen': 'முதலில் பார்த்தது',
'funnel': 'புனல்',
'funnel-description': 'பயனர்களின் மாற்ற மற்றும் விலகல் விகிதத்தைப் புரிந்துகொள்ளுங்கள்.',
'funnels': 'புனல்கள்',
'goal': 'இலக்கு',
'goals': 'இலக்குகள்',
'goals-description': 'பக்க காட்சிகள் மற்றும் நிகழ்வுகளுக்கான உங்கள் இலக்குகளைக் கண்காணிக்கவும்.',
'greater-than': 'பெரியது',
'greater-than-equals': 'பெரியது அல்லது சமம்',
'grouped': 'தொகுக்கப்பட்டது',
'growth': 'வளர்ச்சி',
'hostname': 'புரவலன் பெயர்',
'hour': 'மணி',
'includes': 'சேர்க்கிறது',
'insight': 'நுண்ணறிவு',
'insights': 'நுண்ணறிவுகள்',
'insights-description': 'பிரிவுகள் மற்றும் வடிகட்டிகளைப் பயன்படுத்தி உங்கள் தரவில் ஆழமாக முழுகுங்கள்.',
'invalid-url': 'தவறான URL',
'is': 'ஆகும்',
'is-false': 'தவறு',
'is-not': 'அல்ல',
'is-not-set': 'அமைக்கப்படவில்லை',
'is-set': 'அமைக்கப்பட்டுள்ளது',
'is-true': 'உண்மை',
'join': 'சேர்',
'join-team': 'குழுவில் சேர்',
'journey': 'பயணம்',
'journey-description': 'பயனர்கள் உங்கள் வலைத்தளத்தில் எவ்வாறு வழிசெல்கிறார்கள் என்பதைப் புரிந்துகொள்ளுங்கள்.',
'journeys': 'பயணங்கள்',
'language': 'மொழி',
'languages': 'மொழிகள்',
'last-click': 'கடைசி கிளிக்',
'last-months': 'முந்தைய {x} மாதங்கள்',
'last-seen': 'கடைசியாகப் பார்த்தது',
'leave': 'வெளியேறு',
'leave-team': 'குழுவை விட்டு வெளியேறு',
'less-than': 'சிறியது',
'less-than-equals': 'சிறியது அல்லது சமம்',
'link': 'இணைப்பு',
'links': 'இணைப்புகள்',
'location': 'இடம்',
'manage': 'நிர்வகி',
'manager': 'மேலாளர்',
'max': 'அதிகபட்சம்',
'medium': 'ஊடகம்',
'member': 'உறுப்பினர்',
'members': 'உறுப்பினர்கள்',
'min': 'குறைந்தபட்சம்',
'minute': 'நிமிடம்',
'model': 'மாதிரி',
'month': 'மாதம்',
'my-account': 'எனது கணக்கு',
'my-websites': 'எனது வலைத்தளங்கள்',
'none': 'எதுவுமில்லை',
'number-of-records': '{x} {x, plural, one {பதிவு} other {பதிவுகள்}}',
'online': 'நிகழ்நிலை',
'organic-search': 'இயற்கையான தேடல்',
'organic-shopping': 'இயற்கையான ஷாப்பிங்',
'organic-social': 'இயற்கையான சமூக ஊடகம்',
'organic-video': 'இயற்கையான வீடியோ',
'other': 'பிற',
'overview': 'மேலோட்டம்',
'owner': 'உரிமையாளர்',
'page': 'பக்கம்',
'page-of': 'பக்கம் {current} / {total}',
'pageTitle': 'பக்கத் தலைப்பு',
'paid-ads': 'கட்டண விளம்பரங்கள்',
'paid-search': 'கட்டணத் தேடல்',
'paid-shopping': 'கட்டண ஷாப்பிங்',
'paid-social': 'கட்டண சமூக ஊடகம்',
'paid-video': 'கட்டண வீடியோ',
'path': 'பாதை',
'paths': 'பாதைகள்',
'pixel': 'பிக்சல்',
'pixels': 'பிக்சல்கள்',
'preferences': 'விருப்பத்தேர்வுகள்',
'previous': 'முந்தைய',
'previous-period': 'முந்தைய காலம்',
'previous-year': 'முந்தைய ஆண்டு',
'profiles': 'சுயவிவரங்கள்',
'properties': 'பண்புகள்',
'property': 'பண்பு',
'queries': 'வினவல்கள்',
'query': 'வினவல்',
'query-parameters': 'வினவல் அளவுருக்கள்',
'referral': 'பரிந்துரை',
'referrer': 'பரிந்துரையாளர்',
'regenerate': 'மீண்டும் உருவாக்கு',
'region': 'பிராந்தியம்',
'regions': 'பிராந்தியங்கள்',
'remaining': 'மீதம்',
'remove': 'நீக்கு',
'remove-member': 'உறுப்பினரை நீக்கு',
'reports': 'அறிக்கைகள்',
'retention': 'தக்கவைப்பு',
'retention-description': 'பயனர்கள் எவ்வளவு அடிக்கடி திரும்பி வருகிறார்கள் என்பதைக் கண்காணித்து உங்கள் வலைத்தளத்தின் ஒட்டுதலை அளவிடுங்கள்.',
'revenue': 'வருவாய்',
'revenue-description': 'உங்கள் வருவாய் தரவையும் பயனர்கள் எவ்வாறு செலவிடுகிறார்கள் என்பதையும் ஆராயுங்கள்.',
'role': 'பங்கு',
'run-query': 'வினவலை இயக்கு',
'save-cohort': 'குழுவைச் சேமி',
'save-segment': 'பிரிவைச் சேமி',
'screen': 'திரை',
'screens': 'திரைகள்',
'search': 'தேடு',
'segment': 'பிரிவு',
'segments': 'பிரிவுகள்',
'select': 'தேர்ந்தெடு',
'select-date': 'தேதியைத் தேர்ந்தெடு',
'select-filter': 'வடிகட்டியைத் தேர்ந்தெடு',
'select-role': 'பங்கைத் தேர்ந்தெடு',
'select-website': 'வலைத்தளத்தைத் தேர்ந்தெடு',
'session': 'அமர்வு',
'session-data': 'அமர்வுத் தரவு',
'sessions': 'அமர்வுகள்',
'share': 'பகிர்',
'source': 'மூலம்',
'sources': 'மூலங்கள்',
'start-step': 'தொடக்கப் படி',
'steps': 'படிகள்',
'sum': 'கூட்டுத்தொகை',
'support': 'ஆதரவு',
'switch-account': 'கணக்கை மாற்று',
'table': 'அட்டவணை',
'tag': 'குறிச்சொல்',
'tags': 'குறிச்சொற்கள்',
'team': 'குழு',
'team-id': 'குழு ID',
'team-manager': 'குழு மேலாளர்',
'team-member': 'குழு உறுப்பினர்',
'team-name': 'குழுவின் பெயர்',
'team-owner': 'குழு உரிமையாளர்',
'team-settings': 'குழு அமைப்புகள்',
'team-view-only': 'குழு பார்வை மட்டும்',
'team-websites': 'குழு வலைத்தளங்கள்',
'teams': 'குழுக்கள்',
'term': 'சொல்',
'terms': 'விதிமுறைகள்',
'theme': 'தீம்',
'title': 'தலைப்பு',
'toggle-charts': 'வரைபடங்களை மாற்று',
'total': 'மொத்தம்',
'total-records': 'மொத்தப் பதிவுகள்',
'traffic': 'பார்வையாளர் போக்குவரத்து',
'transactions': 'பரிவர்த்தனைகள்',
'transfer': 'மாற்றம்',
'transfer-website': 'வலைத்தளத்தை மாற்று',
'true': 'உண்மை',
'type': 'வகை',
'unique': 'தனித்துவ',
'unique-events': 'தனித்துவ நிகழ்வுகள்',
'uniqueCustomers': 'தனித்துவ வாடிக்கையாளர்கள்',
'untitled': 'தலைப்பில்லாத',
'update': 'புதுப்பி',
'user': 'பயனர்',
'users': 'பயனர்கள்',
'utm-description': 'UTM அளவுருக்கள் மூலம் உங்கள் பிரச்சாரங்களைக் கண்காணிக்கவும்.',
'value': 'மதிப்பு',
'version': 'பதிப்பு',
'view': 'பார்',
'view-only': 'பார்வை மட்டும்',
'views-per-visit': 'ஒரு வருகைக்கான பார்வைகள்',
'visits': 'வருகைகள்',
'website': 'வலைத்தளம்',
'website-id': 'வலைத்தள ID',
'window': 'சாளரம்',
'yesterday': 'நேற்று'
},
message: {
'action-confirmation': 'உறுதிப்படுத்த கீழே உள்ள பெட்டியில் {confirmation} என்று தட்டச்சு செய்யவும்.',
'bad-request': 'தவறான கோரிக்கை',
'collected-data': 'சேகரிக்கப்பட்ட தரவு',
'confirm-leave': '<b>{target}</b> விட்டு வெளியேற விரும்புகிறீர்களா?',
'confirm-remove': '<b>{target}</b> நீக்க விரும்புகிறீர்களா?',
'delete-team-warning': 'ஒரு குழுவை நீக்கினால் அனைத்து குழு வலைத்தளங்களும் நீக்கப்படும்.',
'event-log': '<b>{event}</b> <a>{url}</a> இல்',
'forbidden': 'தடைசெய்யப்பட்டது',
'min-password-length': 'குறைந்தபட்சம் {n} எழுத்துகள் தேவை',
'new-version-available': 'Umami {version} புதிய பதிப்பு கிடைக்கிறது!',
'no-event-data': 'நிகழ்வுத் தரவு எதுவும் கிடைக்கவில்லை.',
'no-results-found': 'முடிவுகள் எதுவும் கிடைக்கவில்லை.',
'no-team-websites': 'இந்தக் குழுவில் வலைத்தளங்கள் எதுவும் இல்லை.',
'no-teams': 'நீங்கள் எந்தக் குழுவையும் உருவாக்கவில்லை.',
'no-users': 'பயனர்கள் யாரும் இல்லை.',
'not-found': 'கிடைக்கவில்லை',
'nothing-selected': 'எதுவும் தேர்ந்தெடுக்கப்படவில்லை.',
'reset-website': 'இந்த வலைத்தளத்தை மீட்டமைக்க, கீழே உள்ள பெட்டியில் {confirmation} என்று தட்டச்சு செய்து உறுதிப்படுத்தவும்.',
'reset-website-warning': 'இந்த வலைத்தளத்தின் அனைத்து புள்ளிவிவரங்களும் நீக்கப்படும், ஆனால் உங்கள் அமைப்புகள் அப்படியே இருக்கும்.',
'sever-error': 'சேவையக பிழை',
'share-url': 'உங்கள் வலைத்தள புள்ளிவிவரங்கள் பின்வரும் URL இல் பொதுவாகக் கிடைக்கும்:',
'team-already-member': 'நீங்கள் ஏற்கனவே இந்தக் குழுவின் உறுப்பினர்.',
'team-not-found': 'குழு கிடைக்கவில்லை.',
'team-websites-info': 'குழுவில் உள்ள எவரும் வலைத்தளங்களைப் பார்க்கலாம்.',
'tracking-code': 'இந்த வலைத்தளத்தின் புள்ளிவிவரங்களைக் கண்காணிக்க, பின்வரும் குறியீட்டை உங்கள் HTML இன் <head>...</head> பகுதியில் வைக்கவும்.',
'transfer-team-website-to-user': 'இந்த வலைத்தளத்தை உங்கள் கணக்கிற்கு மாற்ற விரும்புகிறீர்களா?',
'transfer-user-website-to-team': 'இந்த வலைத்தளத்தை மாற்ற குழுவைத் தேர்ந்தெடுக்கவும்.',
'transfer-website': 'வலைத்தள உரிமையை உங்கள் கணக்கிற்கு அல்லது மற்றொரு குழுவிற்கு மாற்றவும்.',
'triggered-event': 'தூண்டப்பட்ட நிகழ்வு',
'unauthorized': 'அங்கீகரிக்கப்படவில்லை',
'user-deleted': 'பயனர் நீக்கப்பட்டார்.',
'viewed-page': 'பார்வையிட்ட பக்கம்'
}
}
};
for (const [locale, trans] of Object.entries(translations)) {
const filePath = path.join(dir, locale + '.json');
const data = JSON.parse(fs.readFileSync(filePath, 'utf8'));
let count = 0;
for (const [section, keys] of Object.entries(trans)) {
for (const [key, value] of Object.entries(keys)) {
if (data[section] && key in data[section]) {
data[section][key] = value;
count++;
}
}
}
const sorted = {};
for (const section of Object.keys(enUS)) {
if (data[section]) {
sorted[section] = {};
for (const key of Object.keys(enUS[section])) {
if (key in data[section]) sorted[section][key] = data[section][key];
}
for (const key of Object.keys(data[section])) {
if (!(key in sorted[section])) sorted[section][key] = data[section][key];
}
}
}
fs.writeFileSync(filePath, JSON.stringify(sorted, null, 2) + '\n', 'utf8');
console.log('Updated ' + locale + ': ' + count + ' keys');
}