mirror of
https://github.com/umami-software/umami.git
synced 2026-02-09 07:07:17 +01:00
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>
358 lines
20 KiB
JavaScript
358 lines
20 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 = {
|
|
'si-LK': {
|
|
label: {
|
|
// A
|
|
'access-code': 'ප්රවේශ කේතය',
|
|
'account': 'ගිණුම',
|
|
'action': 'ක්රියාව',
|
|
'actions': 'ක්රියා',
|
|
'add': 'එකතු කරන්න',
|
|
'add-board': 'පුවරුව එකතු කරන්න',
|
|
'add-description': 'විස්තරය එකතු කරන්න',
|
|
'add-link': 'සබැඳිය එකතු කරන්න',
|
|
'add-member': 'සාමාජිකයා එකතු කරන්න',
|
|
'add-pixel': 'පික්සලය එකතු කරන්න',
|
|
'add-step': 'පියවර එකතු කරන්න',
|
|
'affiliate': 'අනුබද්ධ',
|
|
'after': 'පසුව',
|
|
'analysis': 'විශ්ලේෂණය',
|
|
'analytics': 'විශ්ලේෂණ',
|
|
'application': 'යෙදුම',
|
|
'apply': 'යොදන්න',
|
|
'attribution': 'ආරෝපණය',
|
|
'attribution-description': 'පරිශීලකයින් ඔබේ අලෙවිකරණය සමඟ කටයුතු කරන ආකාරය සහ පරිවර්තන මෙහෙයවන දේ බලන්න.',
|
|
'audience': 'ප්රේක්ෂකයින්',
|
|
'average': 'සාමාන්ය',
|
|
'before': 'පෙර',
|
|
'boards': 'පුවරු',
|
|
'bounce-rate': 'ප්රතිචිප්ත අනුපාතය',
|
|
'breakdown': 'බිඳීම',
|
|
'browser': 'බ්රවුසරය',
|
|
'browsers': 'බ්රවුසර',
|
|
'campaign': 'ව්යාපාරය',
|
|
'campaigns': 'ව්යාපාර',
|
|
'channel': 'නාලිකාව',
|
|
'channels': 'නාලිකා',
|
|
'chart': 'ප්රස්ථාරය',
|
|
'cities': 'නගර',
|
|
'city': 'නගරය',
|
|
'clear-all': 'සියල්ල හිස් කරන්න',
|
|
'cohort': 'සමූහය',
|
|
'cohorts': 'සමූහ',
|
|
'compare': 'සංසන්දනය',
|
|
'compare-dates': 'දින සංසන්දනය',
|
|
'confirm': 'තහවුරු කරන්න',
|
|
'contains': 'අඩංගු වේ',
|
|
'content': 'අන්තර්ගතය',
|
|
'continue': 'ඉදිරියට',
|
|
'conversion': 'පරිවර්තනය',
|
|
'conversion-rate': 'පරිවර්තන අනුපාතය',
|
|
'conversion-step': 'පරිවර්තන පියවර',
|
|
'count': 'ගණන',
|
|
'countries': 'රටවල්',
|
|
'country': 'රට',
|
|
'create': 'සාදන්න',
|
|
'create-report': 'වාර්තාව සාදන්න',
|
|
'create-team': 'කණ්ඩායම සාදන්න',
|
|
'create-user': 'පරිශීලකයා සාදන්න',
|
|
'created': 'සාදන ලදි',
|
|
'created-by': 'සාදන ලද්දේ',
|
|
'criteria': 'නිර්ණායක',
|
|
'currency': 'මුදල් ඒකකය',
|
|
'current': 'වත්මන්',
|
|
'data': 'දත්ත',
|
|
'date': 'දිනය',
|
|
'day': 'දිනය',
|
|
'delete-report': 'වාර්තාව මකන්න',
|
|
'delete-team': 'කණ්ඩායම මකන්න',
|
|
'delete-user': 'පරිශීලකයා මකන්න',
|
|
'description': 'විස්තරය',
|
|
'desktop': 'ඩෙස්ක්ටොප්',
|
|
'destination-url': 'ගමනාන්ත URL',
|
|
'details': 'විස්තර',
|
|
'device': 'උපාංගය',
|
|
'devices': 'උපාංග',
|
|
'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-name': 'සිදුවීම් නාමය',
|
|
'events': 'සිදුවීම්',
|
|
'exclude-bounce': 'ප්රතිචිප්ත බැහැර කරන්න',
|
|
'exists': 'පවතී',
|
|
'false': 'අසත්ය',
|
|
'field': 'ක්ෂේත්රය',
|
|
'fields': 'ක්ෂේත්ර',
|
|
'filter': 'පෙරහන',
|
|
'filter-combined': 'ඒකාබද්ධ',
|
|
'filter-raw': 'අමු',
|
|
'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': 'ගමන්',
|
|
'languages': 'භාෂා',
|
|
'laptop': 'ලැප්ටොප්',
|
|
'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': 'මිනිත්තුව',
|
|
'mobile': 'ජංගම',
|
|
'model': 'ආදර්ශය',
|
|
'month': 'මාසය',
|
|
'my-account': 'මගේ ගිණුම',
|
|
'my-websites': 'මගේ වෙබ් අඩවි',
|
|
'number-of-records': '{x} {x, plural, one {වාර්තාව} other {වාර්තා}}',
|
|
'ok': 'OK',
|
|
'online': 'සබැඳි',
|
|
'organic-search': 'කාබනික සෙවීම',
|
|
'organic-shopping': 'කාබනික සාප්පු සවාරි',
|
|
'organic-social': 'කාබනික සමාජ',
|
|
'organic-video': 'කාබනික වීඩියෝ',
|
|
'os': 'OS',
|
|
'other': 'වෙනත්',
|
|
'overview': 'දළ විసුරුම',
|
|
'page': 'පිටුව',
|
|
'page-of': 'පිටුව {current} / {total}',
|
|
'page-views': 'පිටු නැරඹීම්',
|
|
'pageTitle': 'පිටු මාතෘකාව',
|
|
'pages': 'පිටු',
|
|
'paid-ads': 'ගෙවූ දැන්වීම්',
|
|
'paid-search': 'ගෙවූ සෙවීම',
|
|
'paid-shopping': 'ගෙවූ සාප්පු සවාරි',
|
|
'paid-social': 'ගෙවූ සමාජ',
|
|
'paid-video': 'ගෙවූ වීඩියෝ',
|
|
'path': 'මාර්ගය',
|
|
'paths': 'මාර්ග',
|
|
'pixel': 'පික්සලය',
|
|
'pixels': 'පික්සල',
|
|
'powered-by': '{name} මඟින් බලගැන්වේ',
|
|
'preferences': 'මනාප',
|
|
'previous': 'පෙර',
|
|
'previous-period': 'පෙර කාලය',
|
|
'previous-year': 'පෙර වසර',
|
|
'profiles': 'පැතිකඩ',
|
|
'properties': 'ගුණාංග',
|
|
'property': 'ගුණාංගය',
|
|
'queries': 'විමසීම්',
|
|
'query': 'විමසුම',
|
|
'query-parameters': 'විමසුම් පරාමිති',
|
|
'referral': 'යොමු කිරීම',
|
|
'referrer': 'යොමු කරන්නා',
|
|
'referrers': 'යොමු කරන්නන්',
|
|
'regenerate': 'නැවත උත්පාදනය',
|
|
'region': 'කලාපය',
|
|
'regions': 'කලාප',
|
|
'remaining': 'ඉතිරි',
|
|
'remove': 'ඉවත් කරන්න',
|
|
'remove-member': 'සාමාජිකයා ඉවත් කරන්න',
|
|
'reports': 'වාර්තා',
|
|
'retention': 'රඳවා ගැනීම',
|
|
'retention-description': 'පරිශීලකයින් කොපමණ වාරයක් නැවත පැමිණෙනවාද යන්න නිරීක්ෂණය කර ඔබේ වෙබ් අඩවියේ ඇලෙන සුළුබව මනින්න.',
|
|
'revenue': 'ආදායම',
|
|
'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': 'බෙදාගන්න',
|
|
'sms': 'SMS',
|
|
'source': 'මූලාශ්රය',
|
|
'sources': 'මූලාශ්ර',
|
|
'start-step': 'ආරම්භක පියවර',
|
|
'steps': 'පියවර',
|
|
'sum': 'එකතුව',
|
|
'support': 'සහාය',
|
|
'switch-account': 'ගිණුම මාරු කරන්න',
|
|
'table': 'වගුව',
|
|
'tablet': 'ටැබ්ලටය',
|
|
'tag': 'ටැගය',
|
|
'tags': 'ටැග්',
|
|
'team': 'කණ්ඩායම',
|
|
'team-id': 'කණ්ඩායම් ID',
|
|
'team-manager': 'කණ්ඩායම් කළමනාකරු',
|
|
'team-member': 'කණ්ඩායම් සාමාජිකයා',
|
|
'team-name': 'කණ්ඩායම් නම',
|
|
'team-owner': 'කණ්ඩායම් හිමිකරු',
|
|
'team-settings': 'කණ්ඩායම් සැකසුම්',
|
|
'team-view-only': 'කණ්ඩායම් බැලීම පමණි',
|
|
'team-websites': 'කණ්ඩායම් වෙබ් අඩවි',
|
|
'teams': 'කණ්ඩායම්',
|
|
'term': 'යෙදුම',
|
|
'terms': 'නියම',
|
|
'title': 'මාතෘකාව',
|
|
'toggle-charts': 'ප්රස්ථාර ටොගල් කරන්න',
|
|
'total': 'මුළු',
|
|
'total-records': 'මුළු වාර්තා',
|
|
'traffic': 'ගමනාගමනය',
|
|
'transactions': 'ගනුදෙනු',
|
|
'transfer': 'මාරු කරන්න',
|
|
'transfer-website': 'වෙබ් අඩවිය මාරු කරන්න',
|
|
'true': 'සත්ය',
|
|
'type': 'වර්ගය',
|
|
'unique': 'අනන්ය',
|
|
'unique-events': 'අනන්ය සිදුවීම්',
|
|
'unique-visitors': 'අනන්ය නරඹන්නන්',
|
|
'uniqueCustomers': 'අනන්ය ගනුදෙනුකරුවන්',
|
|
'untitled': 'නම් නොකළ',
|
|
'update': 'යාවත්කාලීන කරන්න',
|
|
'url': 'URL',
|
|
'user': 'පරිශීලකයා',
|
|
'users': 'පරිශීලකයින්',
|
|
'utm': 'UTM',
|
|
'utm-campaign': 'UTM ව්යාපාරය',
|
|
'utm-content': 'UTM අන්තර්ගතය',
|
|
'utm-description': 'UTM පරාමිති හරහා ඔබේ ව්යාපාර නිරීක්ෂණය කරන්න.',
|
|
'utm-medium': 'UTM මාධ්යය',
|
|
'utm-source': 'UTM මූලාශ්රය',
|
|
'utm-term': 'UTM යෙදුම',
|
|
'value': 'අගය',
|
|
'version': 'අනුවාදය',
|
|
'view': 'බලන්න',
|
|
'view-only': 'බැලීම පමණි',
|
|
'views': 'නැරඹීම්',
|
|
'views-per-visit': 'සංචාරයකට නැරඹීම්',
|
|
'visit-duration': 'සංචාර කාලය',
|
|
'visitors': 'නරඹන්නන්',
|
|
'visits': 'සංචාර',
|
|
'website': 'වෙබ් අඩවිය',
|
|
'website-id': 'වෙබ් අඩවි ID',
|
|
'window': 'කවුළුව',
|
|
},
|
|
message: {
|
|
'action-confirmation': 'තහවුරු කිරීමට පහත කොටුවේ {confirmation} ටයිප් කරන්න.',
|
|
'bad-request': 'වලංගු නොවන ඉල්ලීමක්',
|
|
'collected-data': 'එකතු කළ දත්ත',
|
|
'confirm-leave': 'ඔබට <b>{target}</b> වෙතින් ඉවත් වීමට අවශ්ය බව විශ්වාසද?',
|
|
'confirm-remove': 'ඔබට <b>{target}</b> ඉවත් කිරීමට අවශ්ය බව විශ්වාසද?',
|
|
'delete-team-warning': 'කණ්ඩායමක් මකා දැමීමෙන් එහි සියලු වෙබ් අඩවි ද මැකෙනු ඇත.',
|
|
'delete-website-warning': 'සියලුම වෙබ් අඩවි දත්ත මකා දැමෙනු ඇත.',
|
|
'error': 'යමක් වැරදී ගියා.',
|
|
'event-log': '<a>{url}</a> හි <b>{event}</b>',
|
|
'forbidden': 'තහනම්',
|
|
'invalid-domain': 'වලංගු නොවන ඩොමේනයකි. http/https ඇතුළත් නොකරන්න.',
|
|
'min-password-length': 'අවම {n} අක්ෂර දිග',
|
|
'new-version-available': 'Umami හි නව අනුවාදයක් {version} ලබා ගත හැකිය!',
|
|
'no-event-data': 'සිදුවීම් දත්ත නොමැත.',
|
|
'no-match-password': 'මුරපද නොගැළපේ.',
|
|
'no-team-websites': 'මෙම කණ්ඩායමට වෙබ් අඩවි නොමැත.',
|
|
'no-teams': 'ඔබ කිසිදු කණ්ඩායමක් සාදා නැත.',
|
|
'no-users': 'පරිශීලකයින් නොමැත.',
|
|
'no-websites-configured': 'ඔබ වෙබ් අඩවි කිසිවක් සකසා නැත.',
|
|
'not-found': 'සොයා ගත නොහැක',
|
|
'nothing-selected': 'කිසිවක් තෝරා නැත.',
|
|
'reset-website': 'මෙම වෙබ් අඩවිය නැවත පිහිටුවීමට, පහත කොටුවේ {confirmation} ටයිප් කර තහවුරු කරන්න.',
|
|
'reset-website-warning': 'මෙම වෙබ් අඩවියට අදාල සියලු සංඛ්යාලේඛන මකා දැමෙනු ඇත, නමුත් ඔබේ සැකසුම් නොවෙනස්ව පවතිනු ඇත.',
|
|
'saved': 'සුරකින ලදි.',
|
|
'sever-error': 'සේවාදායක දෝෂයකි',
|
|
'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': 'නැරඹූ පිටුව',
|
|
'visitor-log': '<b>{country}</b> සිට <b>{os}</b> <b>{device}</b> හි <b>{browser}</b> භාවිතා කරන නරඹන්නා',
|
|
}
|
|
}
|
|
};
|
|
|
|
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');
|
|
}
|