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': 'ඔබට {target} වෙතින් ඉවත් වීමට අවශ්ය බව විශ්වාසද?', 'confirm-remove': 'ඔබට {target} ඉවත් කිරීමට අවශ්ය බව විශ්වාසද?', 'delete-team-warning': 'කණ්ඩායමක් මකා දැමීමෙන් එහි සියලු වෙබ් අඩවි ද මැකෙනු ඇත.', 'delete-website-warning': 'සියලුම වෙබ් අඩවි දත්ත මකා දැමෙනු ඇත.', 'error': 'යමක් වැරදී ගියා.', 'event-log': '{url} හි {event}', '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 හි
... කොටස තුළ තබන්න.', 'transfer-team-website-to-user': 'මෙම වෙබ් අඩවිය ඔබේ ගිණුමට මාරු කරන්නද?', 'transfer-user-website-to-team': 'මෙම වෙබ් අඩවිය මාරු කිරීමට කණ්ඩායම තෝරන්න.', 'transfer-website': 'වෙබ් අඩවියේ හිමිකාරිත්වය ඔබේ ගිණුමට හෝ වෙනත් කණ්ඩායමකට මාරු කරන්න.', 'triggered-event': 'අවුලුවන ලද සිදුවීම', 'unauthorized': 'අනවසරයි', 'user-deleted': 'පරිශීලකයා මකා දමන ලදි.', 'viewed-page': 'නැරඹූ පිටුව', 'visitor-log': '{country} සිට {os} {device} හි {browser} භාවිතා කරන නරඹන්නා', } } }; 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'); }