mirror of
https://github.com/umami-software/umami.git
synced 2026-02-11 16:17:13 +01:00
Translate all 51 locale files, reducing untranslated keys from 6,017 to 862.
Some checks are pending
Node.js CI / build (push) Waiting to run
Some checks are pending
Node.js CI / build (push) Waiting to run
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>
This commit is contained in:
parent
a954824f65
commit
e1ee5eba27
63 changed files with 11747 additions and 5180 deletions
332
scripts/translate-9-tamil.cjs
Normal file
332
scripts/translate-9-tamil.cjs
Normal file
|
|
@ -0,0 +1,332 @@
|
|||
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');
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue