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

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:
Mike Cao 2026-02-07 13:04:45 -08:00
parent a954824f65
commit e1ee5eba27
63 changed files with 11747 additions and 5180 deletions

View file

@ -0,0 +1,349 @@
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 = {
'zh-CN': {
label: {
'campaign': '推广活动',
'exclude-bounce': '排除跳出',
'hour': '小时',
'minute': '分钟',
'month': '月',
'number-of-records': '{x} {x, plural, one {条记录} other {条记录}}',
'sms': '短信',
'source': '来源',
'term': '搜索词',
'unique-events': '独立事件',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM 推广活动',
'utm-content': 'UTM 内容',
'utm-medium': 'UTM 媒介',
'utm-source': 'UTM 来源',
'utm-term': 'UTM 关键词',
'version': '版本'
},
message: {}
},
'zh-TW': {
label: {
'account': '帳號',
'action': '動作',
'add-link': '新增連結',
'add-pixel': '新增像素',
'analysis': '分析',
'application': '應用程式',
'audience': '受眾',
'campaign': '活動',
'channel': '頻道',
'channels': '頻道',
'chart': '圖表',
'cohorts': '群組',
'criteria': '條件',
'currency': '貨幣',
'destination-url': '目標網址',
'direct': '直接',
'distinct-id': '唯一識別碼',
'documentation': '說明文件',
'does-not-include': '不包含',
'doest-not-exist': '不存在',
'download': '下載',
'email': '電子郵件',
'environment': '環境',
'event-name': '事件名稱',
'exclude-bounce': '排除跳出',
'exists': '存在',
'first-click': '首次點擊',
'funnels': '漏斗',
'grouped': '已分組',
'growth': '成長',
'hostname': '主機名稱',
'hour': '小時',
'includes': '包含',
'insight': '洞察',
'invalid-url': '無效的網址',
'is-false': '為否',
'is-true': '為是',
'journeys': '使用者旅程',
'last-click': '最後點擊',
'link': '連結',
'links': '連結',
'location': '位置',
'medium': '媒介',
'minute': '分鐘',
'model': '型號',
'month': '月',
'ok': '確定',
'online': '線上',
'organic-search': '自然搜尋',
'organic-shopping': '自然購物',
'organic-social': '自然社群',
'organic-video': '自然影片',
'other': '其他',
'page': '頁面',
'paid-ads': '付費廣告',
'paid-search': '付費搜尋',
'paid-shopping': '付費購物',
'paid-social': '付費社群',
'paid-video': '付費影片',
'pixel': '像素',
'pixels': '像素',
'preferences': '偏好設定',
'profiles': '個人檔案',
'referral': '推薦',
'remaining': '剩餘',
'save-cohort': '儲存群組',
'save-segment': '儲存區段',
'screen': '螢幕',
'segment': '區段',
'segments': '區段',
'select-filter': '選取篩選條件',
'session-data': '工作階段資料',
'share': '分享',
'sms': '簡訊',
'source': '來源',
'sources': '來源',
'support': '支援',
'switch-account': '切換帳號',
'table': '表格',
'tag': '標籤',
'tags': '標籤',
'team-settings': '團隊設定',
'term': '搜尋詞',
'terms': '條款',
'traffic': '流量',
'unique-events': '不重複事件',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM 活動',
'utm-content': 'UTM 內容',
'utm-medium': 'UTM 媒介',
'utm-source': 'UTM 來源',
'utm-term': 'UTM 關鍵字',
'version': '版本'
},
message: {
'bad-request': '錯誤的請求',
'forbidden': '禁止存取',
'not-found': '找不到',
'nothing-selected': '尚未選取任何項目。',
'sever-error': '伺服器錯誤',
'unauthorized': '未經授權'
}
},
'ja-JP': {
label: {
'account': 'アカウント',
'action': 'アクション',
'add-link': 'リンクを追加',
'add-pixel': 'ピクセルを追加',
'analysis': '分析',
'application': 'アプリケーション',
'audience': 'オーディエンス',
'campaign': 'キャンペーン',
'channel': 'チャネル',
'chart': 'チャート',
'cohorts': 'コホート',
'criteria': '条件',
'destination-url': '遷移先URL',
'documentation': 'ドキュメント',
'download': 'ダウンロード',
'environment': '環境',
'exclude-bounce': '直帰を除外',
'growth': '成長',
'hour': '時間',
'invalid-url': '無効なURL',
'link': 'リンク',
'location': '場所',
'minute': '分',
'month': '月',
'number-of-records': '{x} {x, plural, one {件} other {件}}',
'ok': 'OK',
'online': 'オンライン',
'os': 'OS',
'pixel': 'ピクセル',
'powered-by': '{name} 提供',
'preferences': '環境設定',
'profiles': 'プロフィール',
'referral': 'リファラル',
'save-cohort': 'コホートを保存',
'save-segment': 'セグメントを保存',
'screen': 'スクリーン',
'segment': 'セグメント',
'segments': 'セグメント',
'sms': 'SMS',
'source': 'ソース',
'support': 'サポート',
'switch-account': 'アカウントを切り替え',
'table': 'テーブル',
'term': '検索語句',
'traffic': 'トラフィック',
'unique-events': 'ユニークイベント',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM キャンペーン',
'utm-content': 'UTM コンテンツ',
'utm-medium': 'UTM メディア',
'utm-source': 'UTM ソース',
'utm-term': 'UTM ターム',
'version': 'バージョン'
},
message: {
'bad-request': '不正なリクエスト',
'forbidden': 'アクセス禁止',
'not-found': '見つかりません',
'nothing-selected': '何も選択されていません。',
'sever-error': 'サーバーエラー',
'unauthorized': '認証が必要です'
}
},
'ko-KR': {
label: {
'account': '계정',
'action': '작업',
'add-link': '링크 추가',
'add-pixel': '픽셀 추가',
'analysis': '분석',
'application': '애플리케이션',
'audience': '잠재고객',
'campaign': '캠페인',
'channel': '채널',
'chart': '차트',
'cohorts': '코호트',
'criteria': '기준',
'destination-url': '도착 URL',
'documentation': '문서',
'download': '다운로드',
'environment': '환경',
'exclude-bounce': '이탈 제외',
'growth': '성장',
'hour': '시간',
'invalid-url': '잘못된 URL',
'link': '링크',
'location': '위치',
'minute': '분',
'month': '월',
'online': '온라인',
'pixel': '픽셀',
'powered-by': '{name} 제공',
'preferences': '환경설정',
'profiles': '프로필',
'referral': '추천',
'save-cohort': '코호트 저장',
'save-segment': '세그먼트 저장',
'screen': '화면',
'segment': '세그먼트',
'segments': '세그먼트',
'sms': 'SMS',
'source': '소스',
'support': '지원',
'switch-account': '계정 전환',
'table': '표',
'term': '검색어',
'traffic': '트래픽',
'unique-events': '고유 이벤트',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM 캠페인',
'utm-content': 'UTM 콘텐츠',
'utm-medium': 'UTM 매체',
'utm-source': 'UTM 소스',
'utm-term': 'UTM 검색어',
'version': '버전'
},
message: {
'bad-request': '잘못된 요청',
'forbidden': '접근 금지',
'not-found': '찾을 수 없음',
'nothing-selected': '선택된 항목이 없습니다.',
'sever-error': '서버 오류',
'unauthorized': '인증되지 않음'
}
},
'vi-VN': {
label: {
'account': 'Tài khoản',
'action': 'Hành động',
'add-link': 'Thêm liên kết',
'add-pixel': 'Thêm pixel',
'analysis': 'Phân tích',
'application': 'Ứng dụng',
'audience': 'Đối tượng',
'campaign': 'Chiến dịch',
'channel': 'Kênh',
'chart': 'Biểu đồ',
'cohorts': 'Nhóm thuần tập',
'criteria': 'Tiêu chí',
'destination-url': 'URL đích',
'documentation': 'Tài liệu',
'download': 'Tải xuống',
'email': 'Email',
'environment': 'Môi trường',
'exclude-bounce': 'Loại trừ thoát trang',
'growth': 'Tăng trưởng',
'hour': 'Giờ',
'invalid-url': 'URL không hợp lệ',
'link': 'Liên kết',
'location': 'Vị trí',
'minute': 'Phút',
'month': 'Tháng',
'ok': 'OK',
'pixel': 'Pixel',
'preferences': 'Tùy chọn',
'profiles': 'Hồ sơ',
'save-cohort': 'Lưu nhóm thuần tập',
'save-segment': 'Lưu phân đoạn',
'screen': 'Màn hình',
'segment': 'Phân đoạn',
'segments': 'Phân đoạn',
'sms': 'SMS',
'source': 'Nguồn',
'support': 'Hỗ trợ',
'switch-account': 'Chuyển tài khoản',
'table': 'Bảng',
'term': 'Từ khóa',
'traffic': 'Lưu lượng truy cập',
'unique-events': 'Sự kiện duy nhất',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM Chiến dịch',
'utm-content': 'UTM Nội dung',
'utm-medium': 'UTM Phương tiện',
'utm-source': 'UTM Nguồn',
'utm-term': 'UTM Từ khóa',
'version': 'Phiên bản',
'website': 'Trang web'
},
message: {}
}
};
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');
}

View file

@ -0,0 +1,358 @@
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');
}

View file

@ -0,0 +1,341 @@
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 = {
'ur-PK': {
label: {
// A
'access-code': 'رسائی کوڈ',
'account': 'اکاؤنٹ',
'action': 'عمل',
'add': 'شامل کریں',
'add-board': 'بورڈ شامل کریں',
'add-description': 'تفصیل شامل کریں',
'add-link': 'لنک شامل کریں',
'add-member': 'رکن شامل کریں',
'add-pixel': 'پکسل شامل کریں',
'add-step': 'مرحلہ شامل کریں',
'affiliate': 'ملحقہ',
'after': 'بعد',
'analysis': 'تجزیہ',
'analytics': 'تجزیات',
'application': 'ایپلیکیشن',
'apply': 'لاگو کریں',
'attribution': 'انتساب',
'attribution-description': 'دیکھیں کہ صارفین آپ کی مارکیٹنگ کے ساتھ کیسے جڑتے ہیں اور تبدیلیوں کی وجہ کیا ہے۔',
'audience': 'سامعین',
'average': 'اوسط',
// B
'before': 'پہلے',
'boards': 'بورڈز',
'breakdown': 'تفصیلی تجزیہ',
'browser': 'براؤزر',
// C
'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': 'موجودہ',
// D
'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': 'ڈراپ آف',
// E
'edit-dashboard': 'ڈیش بورڈ میں ترمیم',
'edit-member': 'رکن میں ترمیم',
'email': 'ای میل',
'end-step': 'آخری مرحلہ',
'environment': 'ماحول',
'event': 'واقعہ',
'event-data': 'واقعہ ڈیٹا',
'event-name': 'واقعہ کا نام',
'exclude-bounce': 'اچھال خارج کریں',
'exists': 'موجود ہے',
// F
'false': 'غلط',
'field': 'فیلڈ',
'fields': 'فیلڈز',
'filter': 'فلٹر',
'filters': 'فلٹرز',
'first-click': 'پہلا کلک',
'first-seen': 'پہلی بار دیکھا گیا',
'funnel': 'فنل',
'funnel-description': 'صارفین کی تبدیلی اور ڈراپ آف شرح کو سمجھیں۔',
'funnels': 'فنلز',
// G
'goal': 'ہدف',
'goals': 'اہداف',
'goals-description': 'صفحہ کے نظاروں اور واقعات کے لیے اپنے اہداف کی نگرانی کریں۔',
'greater-than': 'سے زیادہ',
'greater-than-equals': 'سے زیادہ یا مساوی',
'grouped': 'گروپ شدہ',
'growth': 'نمو',
// H
'hostname': 'ہوسٹ نام',
'hour': 'گھنٹہ',
// I
'includes': 'مشتمل ہے',
'insight': 'بصیرت',
'insights': 'بصیرتیں',
'insights-description': 'سیگمنٹس اور فلٹرز استعمال کرکے اپنے ڈیٹا میں گہرائی سے جائیں۔',
'invalid-url': 'غلط URL',
'is': 'ہے',
'is-false': 'غلط ہے',
'is-not': 'نہیں ہے',
'is-not-set': 'سیٹ نہیں ہے',
'is-set': 'سیٹ ہے',
'is-true': 'درست ہے',
// J
'join': 'شامل ہوں',
'join-team': 'ٹیم میں شامل ہوں',
'journey': 'سفر',
'journey-description': 'سمجھیں کہ صارفین آپ کی ویب سائٹ پر کیسے تشریف لے جاتے ہیں۔',
'journeys': 'سفر',
// L
'language': 'زبان',
'last-click': 'آخری کلک',
'last-months': 'پچھلے {x} مہینے',
'last-seen': 'آخری بار دیکھا گیا',
'leave': 'چھوڑیں',
'leave-team': 'ٹیم چھوڑیں',
'less-than': 'سے کم',
'less-than-equals': 'سے کم یا مساوی',
'link': 'لنک',
'links': 'لنکس',
'location': 'مقام',
// M
'manage': 'انتظام کریں',
'manager': 'منتظم',
'max': 'زیادہ سے زیادہ',
'medium': 'میڈیم',
'member': 'رکن',
'members': 'اراکین',
'min': 'کم سے کم',
'minute': 'منٹ',
'model': 'ماڈل',
'month': 'مہینہ',
'my-account': 'میرا اکاؤنٹ',
'my-websites': 'میری ویب سائٹس',
// N
'none': 'کوئی نہیں',
'number-of-records': '{x} {x, plural, one {ریکارڈ} other {ریکارڈز}}',
'online': 'آن لائن',
'organic-search': 'نامیاتی تلاش',
'organic-shopping': 'نامیاتی خریداری',
'organic-social': 'نامیاتی سوشل',
'organic-video': 'نامیاتی ویڈیو',
// O
'other': 'دیگر',
'overview': 'جائزہ',
// P
'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': 'خصوصیت',
// Q
'queries': 'استفسارات',
'query': 'استفسار',
'query-parameters': 'استفسار پیرامیٹرز',
// R
'referral': 'حوالہ',
'referrer': 'حوالہ دہندہ',
'regenerate': 'دوبارہ بنائیں',
'region': 'علاقہ',
'regions': 'علاقے',
'remaining': 'باقی',
'remove': 'ہٹائیں',
'remove-member': 'رکن ہٹائیں',
'reports': 'رپورٹیں',
'retention': 'برقراری',
'retention-description': 'یہ جانچیں کہ صارفین کتنی بار واپس آتے ہیں اور آپ کی ویب سائٹ کتنی پرکشش ہے۔',
'revenue': 'آمدنی',
'role': 'کردار',
'run-query': 'استفسار چلائیں',
// S
'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': 'اکاؤنٹ تبدیل کریں',
// T
'table': 'ٹیبل',
'tag': 'ٹیگ',
'tags': 'ٹیگز',
'team': 'ٹیم',
'team-manager': 'ٹیم منتظم',
'team-member': 'ٹیم رکن',
'team-name': 'ٹیم کا نام',
'team-owner': 'ٹیم مالک',
'team-settings': 'ٹیم ترتیبات',
'team-view-only': 'ٹیم صرف دیکھنے کے لیے',
'team-websites': 'ٹیم ویب سائٹس',
'teams': 'ٹیمیں',
'term': 'اصطلاح',
'terms': 'شرائط',
'theme': 'تھیم',
'title': 'عنوان',
'total': 'کل',
'total-records': 'کل ریکارڈز',
'traffic': 'ٹریفک',
'transactions': 'لین دین',
'transfer': 'منتقلی',
'transfer-website': 'ویب سائٹ منتقل کریں',
'true': 'درست',
'type': 'قسم',
// U
'unique': 'منفرد',
'unique-events': 'منفرد واقعات',
'uniqueCustomers': 'منفرد گاہک',
'untitled': 'بے عنوان',
'update': 'اپ ڈیٹ',
'user': 'صارف',
'users': 'صارفین',
'utm-description': 'UTM پیرامیٹرز کے ذریعے اپنی مہمات کی نگرانی کریں۔',
// V
'value': 'قدر',
'version': 'ورژن',
'view': 'دیکھیں',
'view-only': 'صرف دیکھیں',
'views-per-visit': 'فی وزٹ نظارے',
'visits': 'وزٹس',
'website': 'ویب سائٹ',
// W
'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': '<a>{url}</a> پر <b>{event}</b>',
'forbidden': 'ممنوع',
'min-password-length': 'کم از کم {n} حروف کی لمبائی',
'new-version-available': 'Umami کا نیا ورژن {version} دستیاب ہے!',
'no-event-data': 'واقعہ کا کوئی ڈیٹا دستیاب نہیں ہے۔',
'no-team-websites': 'اس ٹیم کے پاس کوئی ویب سائٹ نہیں ہے۔',
'no-teams': 'آپ نے ابھی تک کوئی ٹیم نہیں بنائی۔',
'no-users': 'کوئی صارف نہیں ہے۔',
'not-found': 'نہیں ملا',
'nothing-selected': 'کچھ بھی منتخب نہیں کیا گیا۔',
'reset-website': 'اس ویب سائٹ کو دوبارہ ترتیب دینے کے لیے تصدیق کے خانے میں {confirmation} ٹائپ کریں۔',
'sever-error': 'سرور کی خرابی',
'team-already-member': 'آپ پہلے سے اس ٹیم کے رکن ہیں۔',
'team-not-found': 'ٹیم نہیں ملی۔',
'team-websites-info': 'ویب سائٹس ٹیم کا کوئی بھی رکن دیکھ سکتا ہے۔',
'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');
}

View file

@ -0,0 +1,256 @@
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 = {
'my-MM': {
label: {
// A
'account': 'အကောင့်',
'action': 'လုပ်ဆောင်ချက်',
'add-board': 'ဘုတ်ထည့်မည်',
'add-link': 'လင့်ခ်ထည့်မည်',
'add-member': 'အဖွဲ့ဝင်ထည့်မည်',
'add-pixel': 'Pixel ထည့်မည်',
'add-step': 'အဆင့်ထည့်မည်',
'affiliate': 'တွဲဖက်မိတ်ဖက်',
'analysis': 'ခွဲခြမ်းစိတ်ဖြာမှု',
'application': 'အပလီကေးရှင်း',
'apply': 'အသုံးပြုမည်',
'attribution': 'အရင်းအမြစ်ခွဲခြားခြင်း',
'attribution-description': 'သင့်မားကတ်တင်းနှင့် အသုံးပြုသူများ မည်သို့ဆက်ဆံသည်နှင့် ပြောင်းလဲမှုကို မောင်းနှင်သည့်အရာများကို ကြည့်ပါ။',
'audience': 'ပရိသတ်',
// B
'boards': 'ဘုတ်များ',
'browser': 'ဘရောင်ဇာ',
// C
'campaign': 'ကမ်ပိန်း',
'campaigns': 'ကမ်ပိန်းများ',
'channel': 'ချန်နယ်',
'channels': 'ချန်နယ်များ',
'chart': 'ဇယား',
'city': 'မြို့',
'cohort': 'အုပ်စု',
'cohorts': 'အုပ်စုများ',
'compare': 'နှိုင်းယှဉ်မည်',
'compare-dates': 'ရက်စွဲများ နှိုင်းယှဉ်မည်',
'content': 'အကြောင်းအရာ',
'conversion': 'ပြောင်းလဲမှု',
'conversion-rate': 'ပြောင်းလဲမှုနှုန်း',
'conversion-step': 'ပြောင်းလဲမှုအဆင့်',
'count': 'အရေအတွက်',
'country': 'နိုင်ငံ',
'create': 'ဖန်တီးမည်',
'created-by': 'ဖန်တီးသူ',
'criteria': 'စံသတ်မှတ်ချက်',
'currency': 'ငွေကြေး',
'current': 'လက်ရှိ',
// D
'date': 'ရက်စွဲ',
'day': 'ရက်',
'delete-report': 'အစီရင်ခံစာ ဖျက်မည်',
'destination-url': 'ဦးတည်ရာ URL',
'device': 'ကိရိယာ',
'direct': 'တိုက်ရိုက်',
'distinct-id': 'ထူးခြား ID',
'documentation': 'စာရွက်စာတမ်း',
'does-not-include': 'မပါဝင်ပါ',
'doest-not-exist': 'မတည်ရှိပါ',
'download': 'ဒေါင်းလုဒ်လုပ်မည်',
'dropoff': 'ထွက်ခွာမှု',
// E
'edit-member': 'အဖွဲ့ဝင် ပြင်ဆင်မည်',
'email': 'အီးမေးလ်',
'end-step': 'အဆုံးအဆင့်',
'environment': 'ပတ်ဝန်းကျင်',
'event-name': 'အဖြစ်အပျက်အမည်',
'exclude-bounce': 'Bounce ဖယ်ထုတ်မည်',
'exists': 'တည်ရှိသည်',
// F
'filter': 'စစ်ထုတ်မည်',
'first-click': 'ပထမဆုံးနှိပ်ချက်',
'first-seen': 'ပထမဆုံးတွေ့ရှိချိန်',
'funnel-description': 'အသုံးပြုသူများ၏ ပြောင်းလဲမှုနှင့် ထွက်ခွာမှုနှုန်းကို နားလည်ပါ။',
'funnels': 'ဖန်နယ်များ',
// G
'goal': 'ပန်းတိုင်',
'goals': 'ပန်းတိုင်များ',
'goals-description': 'စာမျက်နှာကြည့်ရှုမှုနှင့် အဖြစ်အပျက်များအတွက် ပန်းတိုင်များကို ခြေရာခံပါ။',
'grouped': 'အုပ်စုဖွဲ့ထားသော',
'growth': 'တိုးတက်မှု',
// H
'hostname': 'လက်ခံဆာဗာအမည်',
'hour': 'နာရီ',
// I
'includes': 'ပါဝင်သည်',
'insight': 'ထိုးထွင်းသိမြင်မှု',
'insights-description': 'အပိုင်းခွဲများနှင့် စစ်ထုတ်ချက်များကို အသုံးပြု၍ သင့်ဒေတာကို ပိုမိုနက်ရှိုင်းစွာ လေ့လာပါ။',
'invalid-url': 'မမှန်ကန်သော URL',
'is': 'ဖြစ်သည်',
'is-false': 'မှားသည်',
'is-not': 'မဟုတ်ပါ',
'is-not-set': 'သတ်မှတ်မထားပါ',
'is-set': 'သတ်မှတ်ထားသည်',
'is-true': 'မှန်သည်',
// J
'journey': 'ခရီးလမ်း',
'journey-description': 'အသုံးပြုသူများ သင့်ဝက်ဘ်ဆိုဒ်ကို မည်သို့လှည့်လည်သည်ကို နားလည်ပါ။',
'journeys': 'ခရီးလမ်းများ',
// L
'last-click': 'နောက်ဆုံးနှိပ်ချက်',
'last-months': 'လွန်ခဲ့သော {x} လက',
'last-seen': 'နောက်ဆုံးတွေ့ရှိချိန်',
'link': 'လင့်ခ်',
'links': 'လင့်ခ်များ',
'location': 'တည်နေရာ',
// M
'manage': 'စီမံမည်',
'manager': 'မန်နေဂျာ',
'medium': 'မီဒီယမ်',
'member': 'အဖွဲ့ဝင်',
'minute': 'မိနစ်',
'model': 'မော်ဒယ်',
'month': 'လ',
'my-account': 'ကျွန်ုပ်၏အကောင့်',
'my-websites': 'ကျွန်ုပ်၏ဝက်ဘ်ဆိုဒ်များ',
// N
'number-of-records': '{x} {x, plural, one {မှတ်တမ်း} other {မှတ်တမ်းများ}}',
// O
'ok': 'OK',
'online': 'အွန်လိုင်း',
'organic-search': 'သဘာဝရှာဖွေမှု',
'organic-shopping': 'သဘာဝစျေးဝယ်မှု',
'organic-social': 'သဘာဝဆိုရှယ်',
'organic-video': 'သဘာဝဗီဒီယို',
'other': 'အခြား',
// P
'page': 'စာမျက်နှာ',
'page-of': 'စာမျက်နှာ {current} / {total}',
'pageTitle': 'စာမျက်နှာခေါင်းစဥ်',
'paid-ads': 'ငွေပေးကြော်ငြာ',
'paid-search': 'ငွေပေးရှာဖွေမှု',
'paid-shopping': 'ငွေပေးစျေးဝယ်မှု',
'paid-social': 'ငွေပေးဆိုရှယ်',
'paid-video': 'ငွေပေးဗီဒီယို',
'path': 'လမ်းကြောင်း',
'paths': 'လမ်းကြောင်းများ',
'pixel': 'Pixel',
'pixels': 'Pixel များ',
'preferences': 'စိတ်ကြိုက်ဆက်တင်များ',
'previous': 'ယခင်',
'previous-period': 'ယခင်ကာလ',
'previous-year': 'ယခင်နှစ်',
'profiles': 'ပရိုဖိုင်းများ',
'properties': 'ဂုဏ်သတ္တိများ',
'property': 'ဂုဏ်သတ္တိ',
// R
'referral': 'ရည်ညွှန်းမှု',
'referrer': 'ရည်ညွှန်းသူ',
'region': 'ဒေသ',
'remaining': 'ကျန်ရှိနေသော',
'remove-member': 'အဖွဲ့ဝင်ကို ဖယ်ရှားမည်',
'retention': 'ထိန်းသိမ်းနိုင်မှု',
'retention-description': 'အသုံးပြုသူများ မည်မျှမကြာခဏ ပြန်လာသည်ကို ခြေရာခံ၍ သင့်ဝက်ဘ်ဆိုဒ်၏ ဆွဲဆောင်နိုင်မှုကို တိုင်းတာပါ။',
'revenue': 'ဝင်ငွေ',
// S
'save-cohort': 'အုပ်စုသိမ်းမည်',
'save-segment': 'အပိုင်းခွဲသိမ်းမည်',
'screen': 'မျက်နှာပြင်',
'search': 'ရှာဖွေမည်',
'segment': 'အပိုင်းခွဲ',
'segments': 'အပိုင်းခွဲများ',
'select': 'ရွေးချယ်မည်',
'select-filter': 'စစ်ထုတ်ချက်ရွေးမည်',
'select-role': 'အခန်းကဏ္ဍရွေးမည်',
'session': 'ဆက်ရှင်',
'session-data': 'ဆက်ရှင်ဒေတာ',
'share': 'မျှဝေမည်',
'sms': 'SMS',
'source': 'အရင်းအမြစ်',
'sources': 'အရင်းအမြစ်များ',
'start-step': 'စတင်အဆင့်',
'steps': 'အဆင့်များ',
'support': 'ပံ့ပိုးကူညီမှု',
'switch-account': 'အကောင့်ပြောင်းမည်',
// T
'table': 'ဇယား',
'tag': 'တဂ်',
'tags': 'တဂ်များ',
'team-manager': 'အသင်းမန်နေဂျာ',
'team-name': 'အသင်းအမည်',
'team-settings': 'အသင်းဆက်တင်များ',
'team-view-only': 'အသင်း ကြည့်ရှုမှုသာ',
'team-websites': 'အသင်းဝက်ဘ်ဆိုဒ်များ',
'term': 'စည်းကမ်း',
'terms': 'စည်းကမ်းများ',
'traffic': 'အသွားအလာ',
'transactions': 'ငွေလွှဲမှုများ',
'transfer': 'လွှဲပြောင်းမည်',
'transfer-website': 'ဝက်ဘ်ဆိုဒ်လွှဲပြောင်းမည်',
// U
'unique': 'ထူးခြားသော',
'unique-events': 'ထူးခြားအဖြစ်အပျက်များ',
'uniqueCustomers': 'ထူးခြားဖောက်သည်များ',
'update': 'အပ်ဒိတ်လုပ်မည်',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM ကမ်ပိန်း',
'utm-content': 'UTM အကြောင်းအရာ',
'utm-description': 'UTM ပါရာမီတာများမှတစ်ဆင့် သင့်ကမ်ပိန်းများကို ခြေရာခံပါ။',
'utm-medium': 'UTM မီဒီယမ်',
'utm-source': 'UTM အရင်းအမြစ်',
'utm-term': 'UTM စည်းကမ်း',
// V
'version': 'ဗားရှင်း',
'views-per-visit': 'လည်ပတ်မှုတစ်ခုလျှင် ကြည့်ရှုမှု',
'visits': 'လည်ပတ်မှုများ',
},
message: {
'action-confirmation': 'အတည်ပြုရန် အောက်ပါအကွက်တွင် {confirmation} ကို ရိုက်ထည့်ပါ။',
'bad-request': 'မမှန်ကန်သောတောင်းဆိုမှု',
'collected-data': 'စုဆောင်းထားသောဒေတာ',
'confirm-remove': '<b>{target}</b> ကို ဖယ်ရှားလိုသည်မှာ သေချာပါသလား?',
'delete-team-warning': 'အသင်းကိုဖျက်ပါက အသင်းဝက်ဘ်ဆိုဒ်များအားလုံးကိုပါ ဖျက်ပစ်မည်။',
'forbidden': 'ခွင့်ပြုချက်မရှိပါ',
'not-found': 'ရှာမတွေ့ပါ',
'nothing-selected': 'ဘာမှရွေးမထားပါ။',
'sever-error': 'ဆာဗာအမှားအယွင်း',
'transfer-team-website-to-user': 'ဤဝက်ဘ်ဆိုဒ်ကို သင့်အကောင့်သို့ လွှဲပြောင်းမလား?',
'transfer-user-website-to-team': 'ဤဝက်ဘ်ဆိုဒ်ကို လွှဲပြောင်းမည့် အသင်းကို ရွေးချယ်ပါ။',
'transfer-website': 'ဝက်ဘ်ဆိုဒ်ပိုင်ဆိုင်မှုကို သင့်အကောင့် သို့မဟုတ် အခြားအသင်းသို့ လွှဲပြောင်းပါ။',
'triggered-event': 'အစပျိုးလိုက်သော အဖြစ်အပျက်',
'unauthorized': 'ခွင့်ပြုချက်မရှိပါ',
'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');
}

View file

@ -0,0 +1,787 @@
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 = {
'es-ES': {
label: {
'account': 'Cuenta',
'action': 'Acción',
'add-link': 'Añadir enlace',
'add-pixel': 'Añadir píxel',
'analysis': 'Análisis',
'application': 'Aplicación',
'audience': 'Audiencia',
'campaign': 'Campaña',
'channel': 'Canal',
'chart': 'Gráfico',
'cohorts': 'Cohortes',
'criteria': 'Criterios',
'destination-url': 'URL de destino',
'documentation': 'Documentación',
'download': 'Descargar',
'email': 'Correo electrónico',
'environment': 'Entorno',
'exclude-bounce': 'Excluir rebote',
'growth': 'Crecimiento',
'hour': 'Hora',
'invalid-url': 'URL no válida',
'link': 'Enlace',
'location': 'Ubicación',
'minute': 'Minuto',
'month': 'Mes',
'ok': 'Aceptar',
'online': 'En línea',
'pixel': 'Píxel',
'preferences': 'Preferencias',
'profiles': 'Perfiles',
'save-cohort': 'Guardar cohorte',
'save-segment': 'Guardar segmento',
'screen': 'Pantalla',
'segment': 'Segmento',
'segments': 'Segmentos',
'sms': 'SMS',
'source': 'Fuente',
'support': 'Soporte',
'switch-account': 'Cambiar cuenta',
'table': 'Tabla',
'term': 'Término',
'total': 'Total',
'traffic': 'Tráfico',
'unique-events': 'Eventos únicos',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM Campaña',
'utm-content': 'UTM Contenido',
'utm-medium': 'UTM Medio',
'utm-source': 'UTM Fuente',
'utm-term': 'UTM Término',
'version': 'Versión'
},
message: {
'bad-request': 'Solicitud incorrecta',
'forbidden': 'Prohibido',
'not-found': 'No encontrado',
'nothing-selected': 'Nada seleccionado.',
'sever-error': 'Error del servidor',
'unauthorized': 'No autorizado'
}
},
'fr-FR': {
label: {
'account': 'Compte',
'action': 'Action',
'actions': 'Actions',
'add-link': 'Ajouter un lien',
'add-pixel': 'Ajouter un pixel',
'analysis': 'Analyse',
'application': 'Application',
'attribution': 'Attribution',
'audience': 'Audience',
'campaign': 'Campagne',
'channel': 'Canal',
'chart': 'Graphique',
'cohorts': 'Cohortes',
'conversion': 'Conversion',
'criteria': 'Critères',
'date': 'Date',
'description': 'Description',
'destination-url': 'URL de destination',
'direct': 'Direct',
'documentation': 'Documentation',
'download': 'Télécharger',
'environment': 'Environnement',
'exclude-bounce': 'Exclure le rebond',
'growth': 'Croissance',
'hour': 'Heure',
'invalid-url': 'URL invalide',
'link': 'Lien',
'location': 'Emplacement',
'max': 'Max',
'min': 'Min',
'minute': 'Minute',
'month': 'Mois',
'ok': 'OK',
'online': 'En ligne',
'os': 'OS',
'page': 'Page',
'pages': 'Pages',
'pixel': 'Pixel',
'pixels': 'Pixels',
'preferences': 'Préférences',
'profiles': 'Profils',
'save-cohort': 'Enregistrer la cohorte',
'save-segment': 'Enregistrer le segment',
'screen': 'Écran',
'segment': 'Segment',
'segments': 'Segments',
'session': 'Session',
'sessions': 'Sessions',
'sms': 'SMS',
'source': 'Source',
'sources': 'Sources',
'support': 'Support',
'switch-account': 'Changer de compte',
'table': 'Tableau',
'team-settings': 'Paramètres de l\'équipe',
'term': 'Terme',
'total': 'Total',
'transactions': 'Transactions',
'type': 'Type',
'unique': 'Unique',
'unique-events': 'Événements uniques',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM Campagne',
'utm-content': 'UTM Contenu',
'utm-medium': 'UTM Média',
'utm-source': 'UTM Source',
'utm-term': 'UTM Terme',
'version': 'Version'
},
message: {
'bad-request': 'Requête incorrecte',
'forbidden': 'Interdit'
}
},
'pt-BR': {
label: {
'account': 'Conta',
'action': 'Ação',
'add-link': 'Adicionar link',
'add-pixel': 'Adicionar pixel',
'analysis': 'Análise',
'application': 'Aplicação',
'audience': 'Audiência',
'campaign': 'Campanha',
'channel': 'Canal',
'chart': 'Gráfico',
'cohorts': 'Coortes',
'criteria': 'Critérios',
'destination-url': 'URL de destino',
'documentation': 'Documentação',
'download': 'Download',
'email': 'E-mail',
'end-step': 'Etapa final',
'environment': 'Ambiente',
'exclude-bounce': 'Excluir rejeição',
'first-seen': 'Visto pela primeira vez',
'growth': 'Crescimento',
'hour': 'Hora',
'insight': 'Insight',
'insights': 'Insights',
'invalid-url': 'URL inválida',
'link': 'Link',
'links': 'Links',
'location': 'Localização',
'manager': 'Gerente',
'minute': 'Minuto',
'month': 'Mês',
'ok': 'OK',
'online': 'Online',
'pixel': 'Pixel',
'pixels': 'Pixels',
'preferences': 'Preferências',
'profiles': 'Perfis',
'save-cohort': 'Salvar coorte',
'save-segment': 'Salvar segmento',
'screen': 'Tela',
'segment': 'Segmento',
'segments': 'Segmentos',
'sms': 'SMS',
'source': 'Fonte',
'start-step': 'Etapa inicial',
'support': 'Suporte',
'switch-account': 'Trocar conta',
'table': 'Tabela',
'tablet': 'Tablet',
'tag': 'Tag',
'tags': 'Tags',
'term': 'Termo',
'total': 'Total',
'traffic': 'Tráfego',
'transactions': 'Transações',
'unique-events': 'Eventos únicos',
'uniqueCustomers': 'Clientes únicos',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM Campanha',
'utm-content': 'UTM Conteúdo',
'utm-medium': 'UTM Mídia',
'utm-source': 'UTM Fonte',
'utm-term': 'UTM Termo',
'version': 'Versão'
},
message: {
'bad-request': 'Requisição inválida',
'collected-data': 'Dados coletados',
'forbidden': 'Proibido',
'not-found': 'Não encontrado',
'nothing-selected': 'Nada selecionado.',
'sever-error': 'Erro do servidor',
'unauthorized': 'Não autorizado'
}
},
'pt-PT': {
label: {
'account': 'Conta',
'action': 'Ação',
'add-link': 'Adicionar ligação',
'add-pixel': 'Adicionar pixel',
'analysis': 'Análise',
'application': 'Aplicação',
'audience': 'Audiência',
'campaign': 'Campanha',
'channel': 'Canal',
'chart': 'Gráfico',
'cohorts': 'Coortes',
'contains': 'Contém',
'continue': 'Continuar',
'criteria': 'Critérios',
'data': 'Dados',
'date': 'Data',
'destination-url': 'URL de destino',
'documentation': 'Documentação',
'download': 'Transferir',
'dropoff': 'Abandono',
'email': 'E-mail',
'environment': 'Ambiente',
'exclude-bounce': 'Excluir rejeição',
'growth': 'Crescimento',
'hour': 'Hora',
'insight': 'Insight',
'insights': 'Insights',
'insights-description': 'Aprofunde os seus dados utilizando segmentos e filtros.',
'invalid-url': 'URL inválido',
'link': 'Ligação',
'location': 'Localização',
'minute': 'Minuto',
'month': 'Mês',
'number-of-records': '{x} {x, plural, one {registo} other {registos}}',
'ok': 'OK',
'online': 'Online',
'os': 'SO',
'overview': 'Visão geral',
'page-of': 'Página {current} de {total}',
'pageTitle': 'Título da página',
'pixel': 'Pixel',
'preferences': 'Preferências',
'profiles': 'Perfis',
'queries': 'Consultas',
'query': 'Consulta',
'query-parameters': 'Parâmetros de consulta',
'referrer': 'Referência',
'regenerate': 'Regenerar',
'region': 'Região',
'regions': 'Regiões',
'remove': 'Remover',
'remove-member': 'Remover membro',
'reports': 'Relatórios',
'retention': 'Retenção',
'retention-description': 'Meça a fidelidade do seu site, monitorizando a frequência com que os utilizadores regressam.',
'role': 'Função',
'run-query': 'Executar consulta',
'save-cohort': 'Guardar coorte',
'save-segment': 'Guardar segmento',
'screen': 'Ecrã',
'screens': 'Ecrãs',
'search': 'Pesquisar',
'segment': 'Segmento',
'segments': 'Segmentos',
'select': 'Selecionar',
'select-date': 'Selecionar data',
'select-role': 'Selecionar função',
'select-website': 'Selecionar website',
'sessions': 'Sessões',
'sms': 'SMS',
'source': 'Fonte',
'start-step': 'Etapa inicial',
'steps': 'Etapas',
'sum': 'Soma',
'support': 'Suporte',
'switch-account': 'Trocar de conta',
'table': 'Tabela',
'tablet': 'Tablet',
'team': 'Equipa',
'team-id': 'ID da equipa',
'team-member': 'Membro da equipa',
'team-name': 'Nome da equipa',
'team-owner': 'Proprietário da equipa',
'team-view-only': 'Visualização da equipa apenas',
'team-websites': 'Websites da equipa',
'teams': 'Equipas',
'term': 'Termo',
'title': 'Título',
'total': 'Total',
'total-records': 'Total de registos',
'traffic': 'Tráfego',
'transactions': 'Transações',
'transfer': 'Transferir',
'transfer-website': 'Transferir website',
'true': 'Verdadeiro',
'type': 'Tipo',
'unique': 'Único',
'unique-events': 'Eventos únicos',
'uniqueCustomers': 'Clientes únicos',
'untitled': 'Sem título',
'update': 'Atualizar',
'url': 'URL',
'user': 'Utilizador',
'users': 'Utilizadores',
'utm': 'UTM',
'utm-campaign': 'UTM Campanha',
'utm-content': 'UTM Conteúdo',
'utm-description': 'Monitorize as suas campanhas através de parâmetros UTM.',
'utm-medium': 'UTM Meio',
'utm-source': 'UTM Fonte',
'utm-term': 'UTM Termo',
'value': 'Valor',
'version': 'Versão',
'view': 'Visualizar',
'view-only': 'Apenas visualização',
'views-per-visit': 'Visualizações por visita',
'visits': 'Visitas',
'website': 'Website',
'website-id': 'ID do website',
'websites': 'Websites',
'window': 'Janela',
'yesterday': 'Ontem'
},
message: {
'action-confirmation': 'Escreva {confirmation} na caixa abaixo para confirmar.',
'bad-request': 'Pedido inválido',
'collected-data': 'Dados recolhidos',
'confirm-leave': 'Tem a certeza de que deseja sair de <b>{target}</b>?',
'confirm-remove': 'Tem a certeza de que deseja remover <b>{target}</b>?',
'delete-team-warning': 'Eliminar uma equipa também elimina todos os websites da equipa.',
'event-log': '<b>{event}</b> em <a>{url}</a>',
'forbidden': 'Proibido',
'min-password-length': 'Comprimento mínimo de {n} caracteres',
'new-version-available': 'Uma nova versão do Umami {version} está disponível!',
'no-event-data': 'Não existem dados de eventos disponíveis.',
'no-team-websites': 'Esta equipa não tem websites.',
'no-teams': 'Ainda não criou nenhuma equipa.',
'no-users': 'Não existem utilizadores.',
'not-found': 'Não encontrado',
'nothing-selected': 'Nada selecionado.',
'reset-website': 'Para repor este website, escreva {confirmation} na caixa abaixo para confirmar.',
'sever-error': 'Erro do servidor',
'team-already-member': 'Já é membro da equipa.',
'team-not-found': 'Equipa não encontrada.',
'team-websites-info': 'Os websites podem ser visualizados por qualquer membro da equipa.',
'transfer-team-website-to-user': 'Transferir este website para a sua conta?',
'transfer-user-website-to-team': 'Selecione a equipa para a qual transferir este website.',
'transfer-website': 'Transfira a propriedade do website para a sua conta ou outra equipa.',
'triggered-event': 'Evento acionado',
'unauthorized': 'Não autorizado',
'user-deleted': 'Utilizador eliminado.',
'viewed-page': 'Página visualizada'
}
},
'it-IT': {
label: {
'account': 'Account',
'action': 'Azione',
'add-link': 'Aggiungi link',
'add-pixel': 'Aggiungi pixel',
'analysis': 'Analisi',
'application': 'Applicazione',
'audience': 'Pubblico',
'browser': 'Browser',
'campaign': 'Campagna',
'channel': 'Canale',
'chart': 'Grafico',
'cohorts': 'Coorti',
'contains': 'Contiene',
'criteria': 'Criteri',
'desktop': 'Desktop',
'destination-url': 'URL di destinazione',
'documentation': 'Documentazione',
'download': 'Scarica',
'email': 'Email',
'environment': 'Ambiente',
'exclude-bounce': 'Escludi rimbalzo',
'filter': 'Filtro',
'filter-raw': 'Grezzo',
'funnel': 'Funnel',
'growth': 'Crescita',
'hour': 'Ora',
'invalid-url': 'URL non valido',
'link': 'Link',
'location': 'Posizione',
'manager': 'Gestore',
'minute': 'Minuto',
'model': 'Modello',
'month': 'Mese',
'number-of-records': '{x} {x, plural, one {record} other {record}}',
'ok': 'OK',
'online': 'Online',
'os': 'SO',
'overview': 'Panoramica',
'page-of': 'Pagina {current} di {total}',
'pageTitle': 'Titolo pagina',
'password': 'Password',
'pixel': 'Pixel',
'powered-by': 'Fornito da {name}',
'preferences': 'Preferenze',
'previous': 'Precedente',
'previous-period': 'Periodo precedente',
'previous-year': 'Anno precedente',
'profiles': 'Profili',
'query': 'Query',
'referrer': 'Referente',
'referrers': 'Referenti',
'regenerate': 'Rigenera',
'region': 'Regione',
'regions': 'Regioni',
'remove': 'Rimuovi',
'remove-member': 'Rimuovi membro',
'reports': 'Report',
'reset': 'Reimposta',
'retention': 'Fidelizzazione',
'retention-description': 'Misura la fidelizzazione del tuo sito monitorando la frequenza con cui gli utenti ritornano.',
'role': 'Ruolo',
'run-query': 'Esegui query',
'save-cohort': 'Salva coorte',
'save-segment': 'Salva segmento',
'screen': 'Schermo',
'search': 'Cerca',
'segment': 'Segmento',
'segments': 'Segmenti',
'select': 'Seleziona',
'select-date': 'Seleziona data',
'select-role': 'Seleziona ruolo',
'select-website': 'Seleziona sito web',
'session': 'Sessione',
'sessions': 'Sessioni',
'sms': 'SMS',
'source': 'Fonte',
'start-step': 'Passaggio iniziale',
'steps': 'Passaggi',
'sum': 'Somma',
'support': 'Supporto',
'switch-account': 'Cambia account',
'table': 'Tabella',
'tablet': 'Tablet',
'team': 'Team',
'team-id': 'ID Team',
'team-manager': 'Manager del team',
'team-member': 'Membro del team',
'team-name': 'Nome del team',
'team-owner': 'Proprietario del team',
'team-view-only': 'Solo visualizzazione team',
'team-websites': 'Siti web del team',
'teams': 'Team',
'term': 'Termine',
'title': 'Titolo',
'total': 'Totale',
'total-records': 'Record totali',
'traffic': 'Traffico',
'transactions': 'Transazioni',
'transfer': 'Trasferisci',
'transfer-website': 'Trasferisci sito web',
'true': 'Vero',
'type': 'Tipo',
'unique': 'Unico',
'unique-events': 'Eventi unici',
'uniqueCustomers': 'Clienti unici',
'untitled': 'Senza titolo',
'update': 'Aggiorna',
'url': 'URL',
'user': 'Utente',
'users': 'Utenti',
'utm': 'UTM',
'utm-campaign': 'UTM Campagna',
'utm-content': 'UTM Contenuto',
'utm-description': 'Monitora le tue campagne attraverso i parametri UTM.',
'utm-medium': 'UTM Mezzo',
'utm-source': 'UTM Fonte',
'utm-term': 'UTM Termine',
'value': 'Valore',
'version': 'Versione',
'view': 'Visualizza',
'view-only': 'Solo visualizzazione',
'views-per-visit': 'Visualizzazioni per visita',
'visits': 'Visite',
'website': 'Sito web',
'website-id': 'ID sito web',
'window': 'Finestra'
},
message: {
'action-confirmation': 'Digita {confirmation} nella casella sottostante per confermare.',
'bad-request': 'Richiesta non valida',
'collected-data': 'Dati raccolti',
'confirm-leave': 'Sei sicuro di voler lasciare <b>{target}</b>?',
'confirm-remove': 'Sei sicuro di voler rimuovere <b>{target}</b>?',
'delete-team-warning': 'L\'eliminazione di un team eliminerà anche tutti i siti web del team.',
'event-log': '<b>{event}</b> su <a>{url}</a>',
'forbidden': 'Vietato',
'min-password-length': 'Lunghezza minima di {n} caratteri',
'new-version-available': 'È disponibile una nuova versione di Umami {version}!',
'no-event-data': 'Nessun dato evento disponibile.',
'no-team-websites': 'Questo team non ha siti web.',
'no-teams': 'Non hai creato nessun team.',
'no-users': 'Non ci sono utenti.',
'not-found': 'Non trovato',
'nothing-selected': 'Nessuna selezione.',
'reset-website': 'Per reimpostare questo sito web, digita {confirmation} nella casella sottostante per confermare.',
'sever-error': 'Errore del server',
'team-already-member': 'Sei già membro del team.',
'team-not-found': 'Team non trovato.',
'team-websites-info': 'I siti web possono essere visualizzati da chiunque nel team.',
'transfer-team-website-to-user': 'Trasferire questo sito web al tuo account?',
'transfer-user-website-to-team': 'Seleziona il team a cui trasferire questo sito web.',
'transfer-website': 'Trasferisci la proprietà del sito web al tuo account o a un altro team.',
'triggered-event': 'Evento attivato',
'unauthorized': 'Non autorizzato',
'user-deleted': 'Utente eliminato.',
'viewed-page': 'Pagina visualizzata'
}
},
'ca-ES': {
label: {
'account': 'Compte',
'action': 'Acció',
'add-link': 'Afegir enllaç',
'add-pixel': 'Afegir píxel',
'analysis': 'Anàlisi',
'application': 'Aplicació',
'audience': 'Audiència',
'campaign': 'Campanya',
'channel': 'Canal',
'chart': 'Gràfic',
'cohort': 'Cohort',
'cohorts': 'Cohorts',
'criteria': 'Criteris',
'destination-url': 'URL de destinació',
'documentation': 'Documentació',
'download': 'Descarregar',
'email': 'Correu electrònic',
'environment': 'Entorn',
'exclude-bounce': 'Excloure rebot',
'growth': 'Creixement',
'hour': 'Hora',
'insights': 'Insights',
'invalid-url': 'URL no vàlida',
'link': 'Enllaç',
'location': 'Ubicació',
'minute': 'Minut',
'model': 'Model',
'month': 'Mes',
'ok': "D'acord",
'online': 'En línia',
'pixel': 'Píxel',
'pixels': 'Píxels',
'preferences': 'Preferències',
'profiles': 'Perfils',
'regions': 'Regions',
'save-cohort': 'Desar cohort',
'save-segment': 'Desar segment',
'screen': 'Pantalla',
'segment': 'Segment',
'segments': 'Segments',
'sessions': 'Sessions',
'sms': 'SMS',
'source': 'Font',
'support': 'Suport',
'switch-account': 'Canviar de compte',
'table': 'Taula',
'term': 'Terme',
'total': 'Total',
'traffic': 'Trànsit',
'unique-events': 'Esdeveniments únics',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM Campanya',
'utm-content': 'UTM Contingut',
'utm-medium': 'UTM Mitjà',
'utm-source': 'UTM Font',
'utm-term': 'UTM Terme',
'version': 'Versió'
},
message: {
'bad-request': 'Sol·licitud incorrecta',
'forbidden': 'Prohibit',
'not-found': 'No trobat',
'nothing-selected': 'Res seleccionat.',
'sever-error': 'Error del servidor',
'unauthorized': 'No autoritzat'
}
},
'ga-ES': {
label: {
'account': 'Conta',
'action': 'Acción',
'add-link': 'Engadir ligazón',
'add-pixel': 'Engadir píxel',
'analysis': 'Análise',
'application': 'Aplicación',
'audience': 'Audiencia',
'campaign': 'Campaña',
'channel': 'Canle',
'chart': 'Gráfico',
'cohorts': 'Cohortes',
'criteria': 'Criterios',
'destination-url': 'URL de destino',
'documentation': 'Documentación',
'download': 'Descargar',
'environment': 'Contorno',
'exclude-bounce': 'Excluír rebote',
'growth': 'Crecemento',
'hour': 'Hora',
'invalid-url': 'URL non válida',
'link': 'Ligazón',
'location': 'Localización',
'max': 'Máx',
'min': 'Mín',
'minute': 'Minuto',
'month': 'Mes',
'number-of-records': '{x} {x, plural, one {rexistro} other {rexistros}}',
'ok': 'Aceptar',
'online': 'En liña',
'pixel': 'Píxel',
'preferences': 'Preferencias',
'profiles': 'Perfís',
'save-cohort': 'Gardar cohorte',
'save-segment': 'Gardar segmento',
'screen': 'Pantalla',
'segment': 'Segmento',
'segments': 'Segmentos',
'sms': 'SMS',
'source': 'Orixe',
'start-step': 'Paso inicial',
'support': 'Soporte',
'switch-account': 'Cambiar de conta',
'table': 'Táboa',
'term': 'Termo',
'total': 'Total',
'traffic': 'Tráfico',
'unique-events': 'Eventos únicos',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM Campaña',
'utm-content': 'UTM Contido',
'utm-medium': 'UTM Medio',
'utm-source': 'UTM Orixe',
'utm-term': 'UTM Termo',
'version': 'Versión'
},
message: {
'bad-request': 'Solicitude incorrecta',
'forbidden': 'Prohibido',
'not-found': 'Non atopado',
'nothing-selected': 'Nada seleccionado.',
'sever-error': 'Erro do servidor',
'unauthorized': 'Non autorizado'
}
},
'ro-RO': {
label: {
'account': 'Cont',
'action': 'Acțiune',
'add-link': 'Adaugă link',
'add-pixel': 'Adaugă pixel',
'analysis': 'Analiză',
'application': 'Aplicație',
'audience': 'Audiență',
'browser': 'Browser',
'campaign': 'Campanie',
'channel': 'Canal',
'chart': 'Grafic',
'cohorts': 'Cohorte',
'confirm': 'Confirmă',
'criteria': 'Criterii',
'desktop': 'Desktop',
'destination-url': 'URL destinație',
'direct': 'Direct',
'distinct-id': 'ID distinct',
'documentation': 'Documentație',
'download': 'Descarcă',
'email': 'Email',
'environment': 'Mediu',
'exclude-bounce': 'Exclude respingere',
'growth': 'Creștere',
'hour': 'Oră',
'invalid-url': 'URL invalid',
'laptop': 'Laptop',
'link': 'Link',
'location': 'Locație',
'manager': 'Manager',
'max': 'Max',
'min': 'Min',
'minute': 'Minut',
'model': 'Model',
'month': 'Lună',
'ok': 'OK',
'online': 'Online',
'os': 'SO',
'pixel': 'Pixel',
'preferences': 'Preferințe',
'profiles': 'Profiluri',
'referral': 'Referință',
'save-cohort': 'Salvează cohorta',
'save-segment': 'Salvează segmentul',
'screen': 'Ecran',
'segment': 'Segment',
'segments': 'Segmente',
'sms': 'SMS',
'source': 'Sursă',
'support': 'Suport',
'switch-account': 'Schimbă contul',
'table': 'Tabel',
'term': 'Termen',
'total': 'Total',
'traffic': 'Trafic',
'transfer': 'Transferă',
'transfer-website': 'Transferă site-ul',
'unique-events': 'Evenimente unice',
'update': 'Actualizează',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM Campanie',
'utm-content': 'UTM Conținut',
'utm-medium': 'UTM Mediu',
'utm-source': 'UTM Sursă',
'utm-term': 'UTM Termen',
'version': 'Versiune',
'website': 'Site web'
},
message: {
'bad-request': 'Cerere incorectă',
'forbidden': 'Interzis',
'not-found': 'Negăsit',
'nothing-selected': 'Nimic selectat.',
'sever-error': 'Eroare de server',
'unauthorized': 'Neautorizat'
}
}
};
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');
}

View file

@ -0,0 +1,326 @@
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 = {
'de-DE': {
label: {
'account': 'Konto',
'action': 'Aktion',
'add-link': 'Link hinzufügen',
'add-pixel': 'Pixel hinzufügen',
'analysis': 'Analyse',
'application': 'Anwendung',
'audience': 'Zielgruppe',
'boards': 'Boards',
'browser': 'Browser',
'campaign': 'Kampagne',
'channel': 'Kanal',
'chart': 'Diagramm',
'cohorts': 'Kohorten',
'criteria': 'Kriterien',
'desktop': 'Desktop',
'destination-url': 'Ziel-URL',
'details': 'Details',
'documentation': 'Dokumentation',
'domain': 'Domain',
'download': 'Herunterladen',
'email': 'E-Mail',
'environment': 'Umgebung',
'exclude-bounce': 'Absprung ausschließen',
'filter': 'Filter',
'funnels': 'Trichter',
'growth': 'Wachstum',
'hostname': 'Hostname',
'hour': 'Stunde',
'invalid-url': 'Ungültige URL',
'laptop': 'Laptop',
'link': 'Link',
'links': 'Links',
'location': 'Standort',
'max': 'Max',
'medium': 'Medium',
'min': 'Min',
'minute': 'Minute',
'model': 'Modell',
'month': 'Monat',
'name': 'Name',
'number-of-records': '{x} {x, plural, one {Datensatz} other {Datensätze}}',
'ok': 'OK',
'online': 'Online',
'os': 'OS',
'pixel': 'Pixel',
'preferences': 'Einstellungen',
'profiles': 'Profile',
'region': 'Region',
'save-cohort': 'Kohorte speichern',
'save-segment': 'Segment speichern',
'screen': 'Bildschirm',
'segment': 'Segment',
'segments': 'Segmente',
'sms': 'SMS',
'source': 'Quelle',
'support': 'Support',
'switch-account': 'Konto wechseln',
'table': 'Tabelle',
'tablet': 'Tablet',
'tag': 'Tag',
'team': 'Team',
'teams': 'Teams',
'term': 'Suchbegriff',
'traffic': 'Traffic',
'unique-events': 'Einzigartige Ereignisse',
'update': 'Aktualisieren',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM-Kampagne',
'utm-content': 'UTM-Inhalt',
'utm-medium': 'UTM-Medium',
'utm-source': 'UTM-Quelle',
'utm-term': 'UTM-Begriff',
'version': 'Version',
'website': 'Website',
'websites': 'Websites'
},
message: {
'bad-request': 'Ungültige Anfrage',
'forbidden': 'Verboten',
'not-found': 'Nicht gefunden',
'nothing-selected': 'Nichts ausgewählt.',
'sever-error': 'Serverfehler',
'unauthorized': 'Nicht autorisiert'
}
},
'de-CH': {
label: {
'account': 'Konto',
'action': 'Aktion',
'add-link': 'Link hinzufügen',
'add-pixel': 'Pixel hinzufügen',
'analysis': 'Analyse',
'application': 'Anwendung',
'audience': 'Zielgruppe',
'boards': 'Boards',
'browser': 'Browser',
'campaign': 'Kampagne',
'channel': 'Kanal',
'chart': 'Diagramm',
'cohorts': 'Kohorten',
'criteria': 'Kriterien',
'desktop': 'Desktop',
'destination-url': 'Ziel-URL',
'details': 'Details',
'documentation': 'Dokumentation',
'domain': 'Domain',
'download': 'Herunterladen',
'email': 'E-Mail',
'environment': 'Umgebung',
'exclude-bounce': 'Absprung ausschliessen',
'filter': 'Filter',
'filters': 'Filter',
'funnels': 'Trichter',
'growth': 'Wachstum',
'hour': 'Stunde',
'invalid-url': 'Ungültige URL',
'laptop': 'Laptop',
'link': 'Link',
'links': 'Links',
'location': 'Standort',
'manager': 'Verwalter',
'max': 'Max',
'medium': 'Medium',
'min': 'Min',
'minute': 'Minute',
'model': 'Modell',
'month': 'Monat',
'name': 'Name',
'number-of-records': '{x} {x, plural, one {Datensatz} other {Datensätze}}',
'ok': 'OK',
'online': 'Online',
'os': 'OS',
'pixel': 'Pixel',
'preferences': 'Einstellungen',
'profiles': 'Profile',
'region': 'Region',
'retention': 'Retention',
'save-cohort': 'Kohorte speichern',
'save-segment': 'Segment speichern',
'screen': 'Bildschirm',
'segment': 'Segment',
'segments': 'Segmente',
'sms': 'SMS',
'source': 'Quelle',
'support': 'Support',
'switch-account': 'Konto wechseln',
'table': 'Tabelle',
'tablet': 'Tablet',
'tag': 'Tag',
'team': 'Team',
'team-id': 'Team-ID',
'teams': 'Teams',
'term': 'Suchbegriff',
'total': 'Total',
'traffic': 'Traffic',
'unique-events': 'Einzigartige Ereignisse',
'update': 'Aktualisieren',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM-Kampagne',
'utm-content': 'UTM-Inhalt',
'utm-medium': 'UTM-Medium',
'utm-source': 'UTM-Quelle',
'utm-term': 'UTM-Begriff',
'version': 'Version',
'website': 'Website'
},
message: {
'bad-request': 'Ungültige Anfrage',
'forbidden': 'Verboten',
'not-found': 'Nicht gefunden',
'nothing-selected': 'Nichts ausgewählt.',
'sever-error': 'Serverfehler',
'unauthorized': 'Nicht autorisiert'
}
},
'nl-NL': {
label: {
'account': 'Account',
'action': 'Actie',
'add-link': 'Link toevoegen',
'add-pixel': 'Pixel toevoegen',
'analysis': 'Analyse',
'application': 'Applicatie',
'audience': 'Publiek',
'browser': 'Browser',
'browsers': 'Browsers',
'campaign': 'Campagne',
'channel': 'Kanaal',
'chart': 'Grafiek',
'cohort': 'Cohort',
'cohorts': 'Cohorten',
'criteria': 'Criteria',
'destination-url': 'Bestemmings-URL',
'direct': 'Direct',
'documentation': 'Documentatie',
'download': 'Downloaden',
'email': 'E-mail',
'end-step': 'Eindstap',
'environment': 'Omgeving',
'exclude-bounce': 'Bounce uitsluiten',
'filter': 'Filter',
'filters': 'Filters',
'first-seen': 'Eerst gezien',
'funnel': 'Trechter',
'growth': 'Groei',
'hour': 'Uur',
'invalid-url': 'Ongeldige URL',
'is': 'Is',
'laptop': 'Laptop',
'link': 'Link',
'location': 'Locatie',
'manager': 'Beheerder',
'max': 'Max',
'medium': 'Medium',
'min': 'Min',
'minute': 'Minuut',
'model': 'Model',
'month': 'Maand',
'number-of-records': '{x} {x, plural, one {record} other {records}}',
'ok': 'OK',
'online': 'Online',
'os': 'OS',
'pixel': 'Pixel',
'pixels': 'Pixels',
'preferences': 'Voorkeuren',
'profiles': 'Profielen',
'query': 'Query',
'referrer': 'Verwijzer',
'save-cohort': 'Cohort opslaan',
'save-segment': 'Segment opslaan',
'screen': 'Scherm',
'segment': 'Segment',
'segments': 'Segmenten',
'sms': 'SMS',
'source': 'Bron',
'support': 'Ondersteuning',
'switch-account': 'Wissel van account',
'table': 'Tabel',
'tablet': 'Tablet',
'team': 'Team',
'team-id': 'Team-ID',
'team-websites': 'Teamwebsites',
'teams': 'Teams',
'term': 'Zoekterm',
'traffic': 'Verkeer',
'transactions': 'Transacties',
'transfer': 'Overdragen',
'transfer-website': 'Website overdragen',
'type': 'Type',
'unique': 'Uniek',
'unique-events': 'Unieke gebeurtenissen',
'uniqueCustomers': 'Unieke klanten',
'update': 'Bijwerken',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM-campagne',
'utm-content': 'UTM-inhoud',
'utm-description': 'Volg je campagnes via UTM-parameters.',
'utm-medium': 'UTM-medium',
'utm-source': 'UTM-bron',
'utm-term': 'UTM-term',
'version': 'Versie',
'views-per-visit': 'Weergaven per bezoek',
'visits': 'Bezoeken',
'website': 'Website',
'website-id': 'Website-ID',
'websites': 'Websites',
'window': 'Venster'
},
message: {
'bad-request': 'Ongeldig verzoek',
'collected-data': 'Verzamelde gegevens',
'forbidden': 'Verboden',
'not-found': 'Niet gevonden',
'nothing-selected': 'Niets geselecteerd.',
'sever-error': 'Serverfout',
'unauthorized': 'Niet geautoriseerd'
}
},
'en-GB': {
label: {
'behavior': 'Behaviour',
'favorite': 'Favourite',
'color': 'Colour'
},
message: {}
}
};
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');
}

View file

@ -0,0 +1,518 @@
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 = {
'da-DK': {
label: {
'account': 'Konto',
'action': 'Handling',
'add-link': 'Tilføj link',
'add-pixel': 'Tilføj pixel',
'analysis': 'Analyse',
'application': 'Applikation',
'audience': 'Målgruppe',
'browser': 'Browser',
'campaign': 'Kampagne',
'channel': 'Kanal',
'chart': 'Diagram',
'cohorts': 'Kohorter',
'contains': 'Indeholder',
'criteria': 'Kriterier',
'data': 'Data',
'destination-url': 'Destinations-URL',
'documentation': 'Dokumentation',
'download': 'Download',
'environment': 'Miljø',
'exclude-bounce': 'Ekskluder afvisning',
'filter': 'Filter',
'growth': 'Vækst',
'hour': 'Time',
'invalid-url': 'Ugyldig URL',
'laptop': 'Laptop',
'link': 'Link',
'links': 'Links',
'location': 'Placering',
'medium': 'Medie',
'min': 'Min',
'minute': 'Minut',
'model': 'Model',
'month': 'Måned',
'ok': 'OK',
'online': 'Online',
'os': 'OS',
'pixel': 'Pixel',
'pixels': 'Pixels',
'preferences': 'Præferencer',
'previous': 'Forrige',
'previous-period': 'Forrige periode',
'previous-year': 'Forrige år',
'profiles': 'Profiler',
'region': 'Region',
'save-cohort': 'Gem kohorte',
'save-segment': 'Gem segment',
'screen': 'Skærm',
'segment': 'Segment',
'segments': 'Segmenter',
'session': 'Session',
'sms': 'SMS',
'source': 'Kilde',
'sum': 'Sum',
'support': 'Support',
'switch-account': 'Skift konto',
'table': 'Tabel',
'tablet': 'Tablet',
'tag': 'Tag',
'tags': 'Tags',
'team': 'Hold',
'team-id': 'Hold-ID',
'teams': 'Hold',
'term': 'Søgeord',
'title': 'Titel',
'total': 'Total',
'total-records': 'Samlede poster',
'traffic': 'Trafik',
'transactions': 'Transaktioner',
'transfer': 'Overfør',
'transfer-website': 'Overfør website',
'true': 'Sand',
'type': 'Type',
'unique': 'Unik',
'unique-events': 'Unikke begivenheder',
'uniqueCustomers': 'Unikke kunder',
'untitled': 'Uden titel',
'update': 'Opdater',
'url': 'URL',
'user': 'Bruger',
'users': 'Brugere',
'utm': 'UTM',
'utm-campaign': 'UTM-kampagne',
'utm-content': 'UTM-indhold',
'utm-description': 'Spor dine kampagner via UTM-parametre.',
'utm-medium': 'UTM-medie',
'utm-source': 'UTM-kilde',
'utm-term': 'UTM-søgeord',
'value': 'Værdi',
'version': 'Version',
'view': 'Vis',
'view-only': 'Kun visning',
'views-per-visit': 'Visninger per besøg',
'visits': 'Besøg',
'website': 'Website',
'website-id': 'Website-ID',
'window': 'Vindue',
'yesterday': 'I går'
},
message: {
'action-confirmation': 'Skriv {confirmation} i feltet herunder for at bekræfte.',
'bad-request': 'Ugyldig forespørgsel',
'collected-data': 'Indsamlede data',
'confirm-leave': 'Er du sikker på, at du vil forlade <b>{target}</b>?',
'confirm-remove': 'Er du sikker på, at du vil fjerne <b>{target}</b>?',
'delete-team-warning': 'Sletning af et hold sletter også alle holdets websites.',
'event-log': '<b>{event}</b> på <a>{url}</a>',
'forbidden': 'Forbudt',
'min-password-length': 'Minimumlængde på {n} tegn',
'new-version-available': 'En ny version af Umami {version} er tilgængelig!',
'no-event-data': 'Ingen begivenhedsdata tilgængelig.',
'no-team-websites': 'Dette hold har ingen websites.',
'no-teams': 'Du har ikke oprettet nogen hold.',
'no-users': 'Der er ingen brugere.',
'not-found': 'Ikke fundet',
'nothing-selected': 'Intet valgt.',
'reset-website': 'For at nulstille denne website, skriv {confirmation} i feltet herunder for at bekræfte.',
'sever-error': 'Serverfejl',
'team-already-member': 'Du er allerede medlem af holdet.',
'team-not-found': 'Hold ikke fundet.',
'team-websites-info': 'Websites kan ses af alle på holdet.',
'transfer-team-website-to-user': 'Overfør denne website til din konto?',
'transfer-user-website-to-team': 'Vælg holdet, som denne website skal overføres til.',
'transfer-website': 'Overfør websiteejerskab til din konto eller et andet hold.',
'triggered-event': 'Udløst begivenhed',
'unauthorized': 'Ikke autoriseret',
'user-deleted': 'Bruger slettet.',
'viewed-page': 'Vist side'
}
},
'sv-SE': {
label: {
'account': 'Konto',
'action': 'Åtgärd',
'add-link': 'Lägg till länk',
'add-pixel': 'Lägg till pixel',
'analysis': 'Analys',
'application': 'Applikation',
'audience': 'Publik',
'campaign': 'Kampanj',
'channel': 'Kanal',
'chart': 'Diagram',
'cohorts': 'Kohorter',
'criteria': 'Kriterier',
'data': 'Data',
'destination-url': 'Mål-URL',
'documentation': 'Dokumentation',
'download': 'Ladda ner',
'email': 'E-post',
'environment': 'Miljö',
'exclude-bounce': 'Exkludera avvisning',
'filter': 'Filter',
'first-seen': 'Först sedd',
'funnel': 'Tratt',
'growth': 'Tillväxt',
'hour': 'Timme',
'invalid-url': 'Ogiltig URL',
'link': 'Länk',
'location': 'Plats',
'manage': 'Hantera',
'manager': 'Ansvarig',
'max': 'Max',
'medium': 'Medium',
'min': 'Min',
'minute': 'Minut',
'month': 'Månad',
'number-of-records': '{x} {x, plural, one {post} other {poster}}',
'ok': 'OK',
'online': 'Online',
'pixel': 'Pixel',
'preferences': 'Inställningar',
'profiles': 'Profiler',
'region': 'Region',
'remove-member': 'Ta bort medlem',
'retention': 'Retention',
'save-cohort': 'Spara kohort',
'save-segment': 'Spara segment',
'screen': 'Skärm',
'segment': 'Segment',
'segments': 'Segment',
'select': 'Välj',
'select-role': 'Välj roll',
'session': 'Session',
'sms': 'SMS',
'source': 'Källa',
'start-step': 'Startsteg',
'steps': 'Steg',
'support': 'Support',
'switch-account': 'Byt konto',
'table': 'Tabell',
'team': 'Team',
'team-id': 'Team-ID',
'team-view-only': 'Endast teamvisning',
'term': 'Sökord',
'traffic': 'Trafik',
'transactions': 'Transaktioner',
'transfer': 'Överför',
'transfer-website': 'Överför webbplats',
'unique-events': 'Unika händelser',
'uniqueCustomers': 'Unika kunder',
'update': 'Uppdatera',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM-kampanj',
'utm-content': 'UTM-innehåll',
'utm-description': 'Spåra dina kampanjer genom UTM-parametrar.',
'utm-medium': 'UTM-medium',
'utm-source': 'UTM-källa',
'utm-term': 'UTM-sökord',
'version': 'Version',
'views-per-visit': 'Visningar per besök',
'visits': 'Besök'
},
message: {
'action-confirmation': 'Skriv {confirmation} i rutan nedan för att bekräfta.',
'bad-request': 'Ogiltig förfrågan',
'collected-data': 'Insamlad data',
'confirm-remove': 'Är du säker på att du vill ta bort <b>{target}</b>?',
'delete-team-warning': 'Att radera ett team raderar även alla teamets webbplatser.',
'forbidden': 'Förbjudet',
'not-found': 'Hittades inte',
'nothing-selected': 'Inget valt.',
'sever-error': 'Serverfel',
'transfer-team-website-to-user': 'Överför denna webbplats till ditt konto?',
'transfer-user-website-to-team': 'Välj teamet att överföra denna webbplats till.',
'transfer-website': 'Överför webbplatsägande till ditt konto eller ett annat team.',
'triggered-event': 'Utlöst händelse',
'unauthorized': 'Inte auktoriserad',
'viewed-page': 'Visad sida'
}
},
'nb-NO': {
label: {
'account': 'Konto',
'action': 'Handling',
'add-link': 'Legg til lenke',
'add-pixel': 'Legg til piksel',
'analysis': 'Analyse',
'application': 'Applikasjon',
'audience': 'Målgruppe',
'campaign': 'Kampanje',
'channel': 'Kanal',
'chart': 'Diagram',
'cohorts': 'Kohorter',
'criteria': 'Kriterier',
'data': 'Data',
'destination-url': 'Mål-URL',
'documentation': 'Dokumentasjon',
'download': 'Last ned',
'dropoff': 'Frafall',
'email': 'E-post',
'environment': 'Miljø',
'exclude-bounce': 'Ekskluder avvisning',
'filter': 'Filter',
'growth': 'Vekst',
'hour': 'Time',
'invalid-url': 'Ugyldig URL',
'last-months': 'Siste {x} måneder',
'link': 'Lenke',
'location': 'Plassering',
'medium': 'Medium',
'min': 'Min',
'minute': 'Minutt',
'month': 'Måned',
'number-of-records': '{x} {x, plural, one {post} other {poster}}',
'ok': 'OK',
'online': 'Tilkoblet',
'os': 'OS',
'pixel': 'Piksel',
'preferences': 'Innstillinger',
'profiles': 'Profiler',
'referral': 'Henvisning',
'region': 'Region',
'save-cohort': 'Lagre kohort',
'save-segment': 'Lagre segment',
'screen': 'Skjerm',
'segment': 'Segment',
'segments': 'Segmenter',
'sms': 'SMS',
'source': 'Kilde',
'sum': 'Sum',
'support': 'Støtte',
'switch-account': 'Bytt konto',
'table': 'Tabell',
'team': 'Lag',
'term': 'Søkeord',
'traffic': 'Trafikk',
'type': 'Type',
'unique-events': 'Unike hendelser',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM-kampanje',
'utm-content': 'UTM-innhold',
'utm-medium': 'UTM-medium',
'utm-source': 'UTM-kilde',
'utm-term': 'UTM-søkeord',
'version': 'Versjon'
},
message: {
'bad-request': 'Ugyldig forespørsel',
'forbidden': 'Forbudt',
'not-found': 'Ikke funnet',
'nothing-selected': 'Ingenting valgt.',
'sever-error': 'Serverfeil',
'unauthorized': 'Ikke autorisert'
}
},
'fo-FO': {
label: {
'account': 'Konto',
'action': 'Handling',
'add-link': 'Legg afturat link',
'add-pixel': 'Legg afturat piksel',
'analysis': 'Greining',
'application': 'Forrit',
'audience': 'Áhoyrarar',
'campaign': 'Herferð',
'channel': 'Rás',
'chart': 'Graf',
'cohorts': 'Kohortar',
'criteria': 'Viðmið',
'destination-url': 'Mál-URL',
'documentation': 'Skjøl',
'download': 'Tak niður',
'dropoff': 'Fráfall',
'environment': 'Umhvørvi',
'exclude-bounce': 'Útiloka frástøyt',
'growth': 'Vøkstur',
'hour': 'Tími',
'invalid-url': 'Ógild URL',
'link': 'Leinkja',
'location': 'Støða',
'minute': 'Minuttur',
'model': 'Fyrimynd',
'month': 'Mánaður',
'number-of-records': '{x} {x, plural, one {skrá} other {skrár}}',
'ok': 'OK',
'online': 'Online',
'os': 'OS',
'pixel': 'Piksel',
'preferences': 'Stillingar',
'profiles': 'Profilir',
'save-cohort': 'Goym kohortu',
'save-segment': 'Goym segment',
'screen': 'Skíggi',
'segment': 'Segment',
'segments': 'Segment',
'sms': 'SMS',
'source': 'Kelda',
'support': 'Stuðul',
'switch-account': 'Skift konto',
'table': 'Tabell',
'term': 'Leitorð',
'title': 'Heiti',
'toggle-charts': 'Vísa/fjal grafir',
'total': 'Tilsamans',
'total-records': 'Skrár tilsamans',
'traffic': 'Umferð',
'transactions': 'Umsetningar',
'transfer': 'Flyt',
'transfer-website': 'Flyt heimasíðu',
'true': 'Satt',
'type': 'Slag',
'unique': 'Einstaklingar',
'unique-events': 'Einstakar hendingar',
'uniqueCustomers': 'Einstakar kundar',
'untitled': 'Einki heiti',
'update': 'Dagfør',
'url': 'URL',
'user': 'Brúkari',
'users': 'Brúkarar',
'utm': 'UTM',
'utm-campaign': 'UTM-herferð',
'utm-content': 'UTM-innihald',
'utm-description': 'Fylg herferðunum við UTM-stikum.',
'utm-medium': 'UTM-miðil',
'utm-source': 'UTM-kelda',
'utm-term': 'UTM-leitorð',
'value': 'Virði',
'version': 'Útgáva',
'view': 'Vís',
'view-only': 'Bert vísing',
'views-per-visit': 'Sýningar per vitjan',
'visits': 'Vitjanir',
'website': 'Heimasíða',
'website-id': 'Heimasíðu-ID',
'window': 'Gluggi',
'yesterday': 'Í gjár'
},
message: {
'action-confirmation': 'Skriva {confirmation} í teigin niðanfyri at vátta.',
'bad-request': 'Ógild umbøn',
'collected-data': 'Innsamlaði dáta',
'confirm-leave': 'Ert tú vís/ur í at fara frá <b>{target}</b>?',
'confirm-remove': 'Ert tú vís/ur í at strika <b>{target}</b>?',
'delete-team-warning': 'At strika eitt lið strikar eisini allar heimasíður hjá liðnum.',
'event-log': '<b>{event}</b> á <a>{url}</a>',
'forbidden': 'Forboðið',
'min-password-length': 'Minsta longd er {n} tekn',
'new-version-available': 'Nýggj útgáva av Umami {version} er tøk!',
'no-event-data': 'Eingin hendingardata tøk.',
'no-team-websites': 'Hetta liðið hevur eingi heimasíður.',
'no-teams': 'Tú hevur ikki stovnað nøkur lið.',
'no-users': 'Eingi brúkarar eru.',
'not-found': 'Ikki funnið',
'nothing-selected': 'Einki valt.',
'reset-website': 'Fyri at nullstilla hesa heimasíðu, skriva {confirmation} í teigin niðanfyri at vátta.',
'sever-error': 'Ambætaravilla',
'team-already-member': 'Tú ert longu limur í liðnum.',
'team-not-found': 'Lið ikki funnið.',
'team-websites-info': 'Heimasíður kunnu síggjas av øllum á liðnum.',
'transfer-team-website-to-user': 'Flyt hesa heimasíðu til tín konto?',
'transfer-user-website-to-team': 'Vel liðið at flyta hesa heimasíðu til.',
'transfer-website': 'Flyt ognarskapið av heimasíðuni til tín konto ella annað lið.',
'triggered-event': 'Avbjóðað hending',
'unauthorized': 'Ikki góðkent',
'user-deleted': 'Brúkari strikaður.',
'viewed-page': 'Síð vís'
}
},
'fi-FI': {
label: {
'account': 'Tili',
'action': 'Toiminto',
'add-link': 'Lisää linkki',
'add-pixel': 'Lisää pikseli',
'analysis': 'Analyysi',
'application': 'Sovellus',
'audience': 'Yleisö',
'campaign': 'Kampanja',
'channel': 'Kanava',
'chart': 'Kaavio',
'cohorts': 'Kohortit',
'criteria': 'Kriteerit',
'data': 'Data',
'destination-url': 'Kohde-URL',
'documentation': 'Dokumentaatio',
'download': 'Lataa',
'environment': 'Ympäristö',
'exclude-bounce': 'Sulje poishyppäys pois',
'growth': 'Kasvu',
'hour': 'Tunti',
'invalid-url': 'Virheellinen URL',
'link': 'Linkki',
'location': 'Sijainti',
'minute': 'Minuutti',
'month': 'Kuukausi',
'ok': 'OK',
'online': 'Verkossa',
'os': 'Käyttöjärjestelmä',
'pixel': 'Pikseli',
'preferences': 'Asetukset',
'profiles': 'Profiilit',
'retention': 'Säilyvyys',
'retention-description': 'Mittaa verkkosivustosi sitoutumista seuraamalla, kuinka usein käyttäjät palaavat.',
'save-cohort': 'Tallenna kohortti',
'save-segment': 'Tallenna segmentti',
'screen': 'Näyttö',
'segment': 'Segmentti',
'segments': 'Segmentit',
'sms': 'SMS',
'source': 'Lähde',
'support': 'Tuki',
'switch-account': 'Vaihda tiliä',
'table': 'Taulukko',
'team-view-only': 'Vain tiimin katselu',
'term': 'Hakusana',
'traffic': 'Liikenne',
'unique-events': 'Uniikit tapahtumat',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM-kampanja',
'utm-content': 'UTM-sisältö',
'utm-medium': 'UTM-media',
'utm-source': 'UTM-lähde',
'utm-term': 'UTM-hakusana',
'version': 'Versio'
},
message: {
'event-log': '<b>{event}</b> sivulla <a>{url}</a>'
}
}
};
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');
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,842 @@
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 = {
'hu-HU': {
label: {
'account': 'Fiók',
'action': 'Művelet',
'add-link': 'Link hozzáadása',
'add-pixel': 'Pixel hozzáadása',
'analysis': 'Elemzés',
'application': 'Alkalmazás',
'audience': 'Közönség',
'campaign': 'Kampány',
'channel': 'Csatorna',
'chart': 'Diagram',
'cohorts': 'Kohorszok',
'contains': 'Tartalmazza',
'criteria': 'Feltételek',
'destination-url': 'Cél URL',
'documentation': 'Dokumentáció',
'domain': 'Domain',
'download': 'Letöltés',
'environment': 'Környezet',
'exclude-bounce': 'Visszafordulás kizárása',
'filter': 'Szűrő',
'growth': 'Növekedés',
'hour': 'Óra',
'invalid-url': 'Érvénytelen URL',
'language': 'Nyelv',
'languages': 'Nyelvek',
'laptop': 'Laptop',
'link': 'Link',
'location': 'Helyszín',
'minute': 'Perc',
'model': 'Modell',
'month': 'Hónap',
'ok': 'OK',
'online': 'Online',
'os': 'Operációs rendszer',
'pageTitle': 'Oldal címe',
'pixel': 'Pixel',
'preferences': 'Beállítások',
'previous': 'Előző',
'previous-period': 'Előző időszak',
'previous-year': 'Előző év',
'profiles': 'Profilok',
'referrer': 'Hivatkozó',
'regenerate': 'Újragenerálás',
'region': 'Régió',
'regions': 'Régiók',
'remove': 'Eltávolítás',
'remove-member': 'Tag eltávolítása',
'reports': 'Jelentések',
'retention': 'Megtartás',
'retention-description': 'Mérje weboldalának megtartó erejét annak nyomon követésével, hogy milyen gyakran térnek vissza a felhasználók.',
'role': 'Szerep',
'run-query': 'Lekérdezés futtatása',
'save-cohort': 'Kohorsz mentése',
'save-segment': 'Szegmens mentése',
'screen': 'Képernyő',
'search': 'Keresés',
'segment': 'Szegmens',
'segments': 'Szegmensek',
'select': 'Kiválasztás',
'select-date': 'Dátum kiválasztása',
'select-role': 'Szerep kiválasztása',
'select-website': 'Weboldal kiválasztása',
'sessions': 'Munkamenetek',
'sms': 'SMS',
'source': 'Forrás',
'sum': 'Összeg',
'support': 'Támogatás',
'switch-account': 'Fiók váltása',
'table': 'Táblázat',
'team': 'Csapat',
'team-id': 'Csapat-ID',
'team-manager': 'Csapatmenedzser',
'team-member': 'Csapattag',
'team-name': 'Csapat neve',
'team-owner': 'Csapat tulajdonosa',
'team-view-only': 'Csak csapat megtekintés',
'team-websites': 'Csapat weboldalai',
'teams': 'Csapatok',
'term': 'Keresőkifejezés',
'theme': 'Téma',
'title': 'Cím',
'toggle-charts': 'Diagramok megjelenítése',
'total': 'Összesen',
'total-records': 'Összes rekord',
'traffic': 'Forgalom',
'transactions': 'Tranzakciók',
'transfer': 'Átvitel',
'transfer-website': 'Weboldal átvitele',
'true': 'Igaz',
'type': 'Típus',
'unique': 'Egyedi',
'unique-events': 'Egyedi események',
'uniqueCustomers': 'Egyedi ügyfelek',
'untitled': 'Névtelen',
'update': 'Frissítés',
'url': 'URL',
'user': 'Felhasználó',
'users': 'Felhasználók',
'utm': 'UTM',
'utm-campaign': 'UTM-kampány',
'utm-content': 'UTM-tartalom',
'utm-description': 'Kövesse nyomon kampányait UTM-paraméterekkel.',
'utm-medium': 'UTM-médium',
'utm-source': 'UTM-forrás',
'utm-term': 'UTM-kifejezés',
'value': 'Érték',
'version': 'Verzió',
'view': 'Megtekintés',
'view-only': 'Csak megtekintés',
'views-per-visit': 'Megtekintés/látogatás',
'visits': 'Látogatások',
'website': 'Weboldal',
'website-id': 'Weboldal-ID',
'window': 'Ablak',
'yesterday': 'Tegnap'
},
message: {
'action-confirmation': 'Írja be a(z) {confirmation} szót az alábbi mezőbe a megerősítéshez.',
'bad-request': 'Hibás kérés',
'collected-data': 'Gyűjtött adatok',
'confirm-leave': 'Biztosan el szeretné hagyni a(z) <b>{target}</b> csapatot?',
'confirm-remove': 'Biztosan el szeretné távolítani a(z) <b>{target}</b> elemet?',
'delete-team-warning': 'A csapat törlése az összes csapat weboldalt is törli.',
'event-log': '<b>{event}</b> itt: <a>{url}</a>',
'forbidden': 'Tiltott',
'min-password-length': 'Minimum {n} karakter hosszúság',
'new-version-available': 'Elérhető az Umami {version} új verziója!',
'no-event-data': 'Nincs elérhető eseményadat.',
'no-team-websites': 'Ennek a csapatnak nincsenek weboldalai.',
'no-teams': 'Még nem hozott létre csapatot.',
'no-users': 'Nincsenek felhasználók.',
'not-found': 'Nem található',
'nothing-selected': 'Semmi nincs kijelölve.',
'reset-website': 'A weboldal visszaállításához írja be a(z) {confirmation} szót az alábbi mezőbe.',
'sever-error': 'Szerverhiba',
'team-already-member': 'Ön már tagja a csapatnak.',
'team-not-found': 'Csapat nem található.',
'team-websites-info': 'A weboldalakat a csapat bármely tagja megtekintheti.',
'transfer-team-website-to-user': 'Átvinni ezt a weboldalt a fiókjába?',
'transfer-user-website-to-team': 'Válassza ki a csapatot, amelyre át kívánja vinni a weboldalt.',
'transfer-website': 'Vigye át a weboldal tulajdonjogát a fiókjába vagy egy másik csapatba.',
'triggered-event': 'Kiváltott esemény',
'unauthorized': 'Nincs jogosultság',
'user-deleted': 'Felhasználó törölve.',
'viewed-page': 'Megtekintett oldal'
}
},
'el-GR': {
label: {
'access-code': 'Κωδικός πρόσβασης',
'account': 'Λογαριασμός',
'action': 'Ενέργεια',
'add': 'Προσθήκη',
'add-board': 'Προσθήκη πίνακα',
'add-description': 'Προσθήκη περιγραφής',
'add-link': 'Προσθήκη συνδέσμου',
'add-member': 'Προσθήκη μέλους',
'add-pixel': 'Προσθήκη pixel',
'add-step': 'Προσθήκη βήματος',
'affiliate': 'Συνεργάτης',
'after': 'Μετά',
'all': 'Όλα',
'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': 'Άμεσο',
'dismiss': 'Απόρριψη',
'distinct-id': 'Μοναδικό ID',
'documentation': 'Τεκμηρίωση',
'does-not-contain': 'Δεν περιέχει',
'does-not-include': 'Δεν περιλαμβάνει',
'doest-not-exist': 'Δεν υπάρχει',
'download': 'Λήψη',
'dropoff': 'Εγκατάλειψη',
'edit-dashboard': 'Επεξεργασία πίνακα ελέγχου',
'edit-member': 'Επεξεργασία μέλους',
'email': '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 {εγγραφές}}',
'ok': 'OK',
'online': 'Σε σύνδεση',
'organic-search': 'Οργανική αναζήτηση',
'organic-shopping': 'Οργανικές αγορές',
'organic-social': 'Οργανικά κοινωνικά',
'organic-video': 'Οργανικό βίντεο',
'os': 'ΛΣ',
'other': 'Άλλο',
'overview': 'Επισκόπηση',
'owner': 'Ιδιοκτήτης',
'page': 'Σελίδα',
'page-of': 'Σελίδα {current} από {total}',
'pageTitle': 'Τίτλος σελίδας',
'paid-ads': 'Πληρωμένες διαφημίσεις',
'paid-search': 'Πληρωμένη αναζήτηση',
'paid-shopping': 'Πληρωμένες αγορές',
'paid-social': 'Πληρωμένα κοινωνικά',
'paid-video': 'Πληρωμένο βίντεο',
'path': 'Διαδρομή',
'paths': 'Διαδρομές',
'pixel': 'Pixel',
'pixels': 'Pixels',
'preferences': 'Προτιμήσεις',
'previous': 'Προηγούμενο',
'previous-period': 'Προηγούμενη περίοδος',
'previous-year': 'Προηγούμενο έτος',
'profiles': 'Προφίλ',
'properties': 'Ιδιότητες',
'property': 'Ιδιότητα',
'queries': 'Ερωτήματα',
'query': 'Ερώτημα',
'query-parameters': 'Παράμετροι ερωτήματος',
'realtime': 'Πραγματικός χρόνος',
'referral': 'Παραπομπή',
'referrer': 'Παραπέμπων',
'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': 'Πίνακας',
'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': 'Ενημέρωση',
'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-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-team-websites': 'Αυτή η ομάδα δεν έχει ιστότοπους.',
'no-teams': 'Δεν έχετε δημιουργήσει ομάδες.',
'no-users': 'Δεν υπάρχουν χρήστες.',
'not-found': 'Δεν βρέθηκε',
'nothing-selected': 'Τίποτα δεν έχει επιλεγεί.',
'reset-website': 'Για να επαναφέρετε αυτόν τον ιστότοπο, πληκτρολογήστε {confirmation} στο παρακάτω πεδίο.',
'sever-error': 'Σφάλμα διακομιστή',
'team-already-member': 'Είστε ήδη μέλος της ομάδας.',
'team-not-found': 'Η ομάδα δεν βρέθηκε.',
'team-websites-info': 'Οι ιστότοποι μπορούν να προβληθούν από οποιονδήποτε στην ομάδα.',
'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>{browser}</b> σε <b>{os}</b> <b>{device}</b>'
}
},
'tr-TR': {
label: {
'account': 'Hesap',
'action': 'Eylem',
'add-link': 'Bağlantı ekle',
'add-pixel': 'Piksel ekle',
'analysis': 'Analiz',
'application': 'Uygulama',
'audience': 'Kitle',
'campaign': 'Kampanya',
'channel': 'Kanal',
'chart': 'Grafik',
'cohorts': 'Kohortlar',
'criteria': 'Kriterler',
'destination-url': 'Hedef URL',
'documentation': 'Dokümantasyon',
'download': 'İndir',
'email': 'E-posta',
'end-step': 'Son adım',
'environment': 'Ortam',
'exclude-bounce': 'Hemen çıkışı hariç tut',
'first-seen': 'İlk görülme',
'growth': 'Büyüme',
'hour': 'Saat',
'insights': 'İçgörüler',
'invalid-url': 'Geçersiz URL',
'is': 'Eşittir',
'link': 'Bağlantı',
'location': 'Konum',
'manager': 'Yönetici',
'max': 'Maks',
'min': 'Min',
'minute': 'Dakika',
'model': 'Model',
'month': 'Ay',
'number-of-records': '{x} {x, plural, one {kayıt} other {kayıt}}',
'online': 'Çevrimiçi',
'os': 'İşletim Sistemi',
'pixel': 'Piksel',
'preferences': 'Tercihler',
'profiles': 'Profiller',
'referrer': 'Yönlendiren',
'save-cohort': 'Kohortu kaydet',
'save-segment': 'Segmenti kaydet',
'screen': 'Ekran',
'segment': 'Segment',
'segments': 'Segmentler',
'sessions': 'Oturumlar',
'sms': 'SMS',
'source': 'Kaynak',
'start-step': 'Başlangıç adımı',
'support': 'Destek',
'switch-account': 'Hesap değiştir',
'table': 'Tablo',
'tablet': 'Tablet',
'term': 'Arama terimi',
'traffic': 'Trafik',
'transactions': 'İşlemler',
'transfer': 'Transfer',
'unique-events': 'Benzersiz etkinlikler',
'uniqueCustomers': 'Benzersiz müşteriler',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM Kampanya',
'utm-content': 'UTM İçerik',
'utm-medium': 'UTM Ortam',
'utm-source': 'UTM Kaynak',
'utm-term': 'UTM Terim',
'version': 'Sürüm',
'website-id': 'Web sitesi ID'
},
message: {
'bad-request': 'Geçersiz istek',
'collected-data': 'Toplanan veriler',
'event-log': '<b>{event}</b> sayfasında <a>{url}</a>',
'forbidden': 'Yasaklandı',
'not-found': 'Bulunamadı',
'nothing-selected': 'Hiçbir şey seçilmedi.',
'sever-error': 'Sunucu hatası',
'unauthorized': 'Yetkisiz'
}
},
'ar-SA': {
label: {
'account': 'حساب',
'action': 'إجراء',
'add-link': 'إضافة رابط',
'add-pixel': 'إضافة بكسل',
'affiliate': 'شريك تسويقي',
'analysis': 'تحليل',
'application': 'تطبيق',
'audience': 'جمهور',
'campaign': 'حملة',
'channel': 'قناة',
'chart': 'مخطط',
'cohorts': 'مجموعات',
'criteria': 'معايير',
'destination-url': 'رابط الوجهة',
'documentation': 'التوثيق',
'download': 'تحميل',
'email': 'بريد إلكتروني',
'environment': 'بيئة',
'exclude-bounce': 'استبعاد الارتداد',
'growth': 'نمو',
'hour': 'ساعة',
'invalid-url': 'رابط غير صالح',
'link': 'رابط',
'location': 'موقع',
'minute': 'دقيقة',
'month': 'شهر',
'online': 'متصل',
'pixel': 'بكسل',
'preferences': 'التفضيلات',
'profiles': 'الملفات الشخصية',
'save-cohort': 'حفظ المجموعة',
'save-segment': 'حفظ الشريحة',
'screen': 'شاشة',
'segment': 'شريحة',
'segments': 'شرائح',
'sms': 'رسالة نصية',
'source': 'مصدر',
'support': 'دعم',
'switch-account': 'تبديل الحساب',
'table': 'جدول',
'term': 'مصطلح البحث',
'traffic': 'حركة المرور',
'unique-events': 'أحداث فريدة',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM حملة',
'utm-content': 'UTM محتوى',
'utm-medium': 'UTM وسيط',
'utm-source': 'UTM مصدر',
'utm-term': 'UTM مصطلح',
'version': 'إصدار'
},
message: {
'bad-request': 'طلب غير صالح',
'forbidden': 'محظور',
'not-found': 'غير موجود',
'nothing-selected': 'لم يتم تحديد شيء.',
'sever-error': 'خطأ في الخادم',
'unauthorized': 'غير مصرح'
}
},
'fa-IR': {
label: {
'account': 'حساب کاربری',
'action': 'عملیات',
'add-link': 'افزودن لینک',
'add-pixel': 'افزودن پیکسل',
'analysis': 'تحلیل',
'application': 'برنامه',
'audience': 'مخاطبان',
'campaign': 'کمپین',
'channel': 'کانال',
'chart': 'نمودار',
'cohorts': 'گروه‌ها',
'criteria': 'معیارها',
'destination-url': 'URL مقصد',
'documentation': 'مستندات',
'download': 'دانلود',
'environment': 'محیط',
'exclude-bounce': 'حذف نرخ پرش',
'growth': 'رشد',
'hour': 'ساعت',
'invalid-url': 'URL نامعتبر',
'link': 'لینک',
'location': 'موقعیت',
'minute': 'دقیقه',
'month': 'ماه',
'number-of-records': '{x} {x, plural, one {رکورد} other {رکورد}}',
'online': 'آنلاین',
'pixel': 'پیکسل',
'preferences': 'تنظیمات',
'profiles': 'پروفایل‌ها',
'save-cohort': 'ذخیره گروه',
'save-segment': 'ذخیره بخش',
'screen': 'صفحه نمایش',
'segment': 'بخش',
'segments': 'بخش‌ها',
'sms': 'پیامک',
'source': 'منبع',
'support': 'پشتیبانی',
'switch-account': 'تغییر حساب',
'table': 'جدول',
'term': 'عبارت جستجو',
'traffic': 'ترافیک',
'unique-events': 'رویدادهای یکتا',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM کمپین',
'utm-content': 'UTM محتوا',
'utm-medium': 'UTM رسانه',
'utm-source': 'UTM منبع',
'utm-term': 'UTM عبارت',
'version': 'نسخه'
},
message: {
'bad-request': 'درخواست نامعتبر',
'forbidden': 'ممنوع',
'not-found': 'یافت نشد',
'nothing-selected': 'چیزی انتخاب نشده است.',
'sever-error': 'خطای سرور',
'unauthorized': 'غیرمجاز'
}
},
'he-IL': {
label: {
'account': 'חשבון',
'action': 'פעולה',
'add-link': 'הוספת קישור',
'add-pixel': 'הוספת פיקסל',
'analysis': 'ניתוח',
'application': 'יישום',
'audience': 'קהל',
'campaign': 'מסע פרסום',
'channel': 'ערוץ',
'chart': 'תרשים',
'cohorts': 'קוהורטות',
'contains': 'מכיל',
'criteria': 'קריטריונים',
'destination-url': 'כתובת יעד',
'documentation': 'תיעוד',
'download': 'הורדה',
'environment': 'סביבה',
'exclude-bounce': 'החרג נטישה',
'filter': 'סינון',
'growth': 'צמיחה',
'hour': 'שעה',
'invalid-url': 'כתובת לא תקינה',
'language': 'שפה',
'languages': 'שפות',
'link': 'קישור',
'location': 'מיקום',
'minute': 'דקה',
'model': 'דגם',
'month': 'חודש',
'ok': 'אישור',
'online': 'מחובר',
'os': 'מערכת הפעלה',
'pageTitle': 'כותרת עמוד',
'pixel': 'פיקסל',
'powered-by': 'מופעל על ידי {name}',
'preferences': 'העדפות',
'previous': 'הקודם',
'previous-period': 'תקופה קודמת',
'previous-year': 'שנה קודמת',
'profiles': 'פרופילים',
'referrer': 'מפנה',
'regenerate': 'ייצור מחדש',
'region': 'אזור',
'regions': 'אזורים',
'remove': 'הסרה',
'remove-member': 'הסרת חבר',
'reports': 'דוחות',
'retention': 'שימור',
'retention-description': 'מדדו את מידת ההיצמדות לאתר שלכם על ידי מעקב אחר תדירות חזרת המשתמשים.',
'role': 'תפקיד',
'run-query': 'הרץ שאילתה',
'save-cohort': 'שמור קוהורטה',
'save-segment': 'שמור מקטע',
'screen': 'מסך',
'search': 'חיפוש',
'segment': 'מקטע',
'segments': 'מקטעים',
'select': 'בחירה',
'select-date': 'בחר תאריך',
'select-role': 'בחר תפקיד',
'select-website': 'בחר אתר',
'sessions': 'הפעלות',
'sms': 'SMS',
'source': 'מקור',
'sum': 'סכום',
'support': 'תמיכה',
'switch-account': 'החלף חשבון',
'table': 'טבלה',
'team': 'צוות',
'team-id': 'מזהה צוות',
'team-manager': 'מנהל צוות',
'team-member': 'חבר צוות',
'team-name': 'שם צוות',
'team-owner': 'בעלי צוות',
'team-view-only': 'צפייה בלבד בצוות',
'team-websites': 'אתרי צוות',
'teams': 'צוותות',
'term': 'מונח חיפוש',
'theme': 'ערכת נושא',
'title': 'כותרת',
'toggle-charts': 'הצג/הסתר תרשימים',
'total': 'סה"כ',
'total-records': 'סה"כ רשומות',
'traffic': 'תעבורה',
'transactions': 'עסקאות',
'transfer': 'העברה',
'transfer-website': 'העברת אתר',
'true': 'אמת',
'type': 'סוג',
'unique': 'ייחודי',
'unique-events': 'אירועים ייחודיים',
'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-per-visit': 'צפיות לביקור',
'visits': 'ביקורים',
'website': 'אתר',
'website-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-team-websites': 'לצוות זה אין אתרים.',
'no-teams': 'לא יצרתם צוותות.',
'no-users': 'אין משתמשים.',
'not-found': 'לא נמצא',
'nothing-selected': 'לא נבחר דבר.',
'reset-website': 'לאיפוס אתר זה, הקלידו {confirmation} בתיבה למטה לאישור.',
'sever-error': 'שגיאת שרת',
'team-already-member': 'אתם כבר חברים בצוות.',
'team-not-found': 'צוות לא נמצא.',
'team-websites-info': 'האתרים ניתנים לצפייה על ידי כל חברי הצוות.',
'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');
}

View file

@ -0,0 +1,663 @@
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 = {
'hi-IN': {
label: {
'account': 'खाता',
'action': 'कार्रवाई',
'add-link': 'लिंक जोड़ें',
'add-pixel': 'पिक्सेल जोड़ें',
'analysis': 'विश्लेषण',
'application': 'एप्लिकेशन',
'audience': 'दर्शक',
'campaign': 'अभियान',
'channel': 'चैनल',
'chart': 'चार्ट',
'cohorts': 'कोहॉर्ट',
'criteria': 'मानदंड',
'destination-url': 'गंतव्य URL',
'documentation': 'प्रलेखन',
'download': 'डाउनलोड',
'dropoff': 'ड्रॉपऑफ',
'environment': 'वातावरण',
'exclude-bounce': 'बाउंस को बाहर करें',
'growth': 'वृद्धि',
'hour': 'घंटा',
'invalid-url': 'अमान्य URL',
'link': 'लिंक',
'location': 'स्थान',
'minute': 'मिनट',
'month': 'महीना',
'number-of-records': '{x} {x, plural, one {रिकॉर्ड} other {रिकॉर्ड}}',
'ok': 'ठीक है',
'online': 'ऑनलाइन',
'os': 'OS',
'pixel': 'पिक्सेल',
'preferences': 'प्राथमिकताएँ',
'previous': 'पिछला',
'previous-period': 'पिछली अवधि',
'previous-year': 'पिछला वर्ष',
'profiles': 'प्रोफ़ाइल',
'save-cohort': 'कोहॉर्ट सहेजें',
'save-segment': 'सेगमेंट सहेजें',
'screen': 'स्क्रीन',
'segment': 'सेगमेंट',
'segments': 'सेगमेंट',
'sms': 'SMS',
'source': 'स्रोत',
'support': 'सहायता',
'switch-account': 'खाता बदलें',
'table': 'तालिका',
'term': 'खोज शब्द',
'title': 'शीर्षक',
'toggle-charts': 'चार्ट दिखाएँ/छिपाएँ',
'total': 'कुल',
'total-records': 'कुल रिकॉर्ड',
'traffic': 'ट्रैफ़िक',
'transactions': 'लेनदेन',
'transfer': 'स्थानांतरण',
'transfer-website': 'वेबसाइट स्थानांतरित करें',
'true': 'सत्य',
'type': 'प्रकार',
'unique': 'अद्वितीय',
'unique-events': 'अद्वितीय ईवेंट',
'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-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': '<a>{url}</a> पर <b>{event}</b>',
'forbidden': 'प्रतिबंधित',
'min-password-length': 'न्यूनतम {n} वर्ण',
'new-version-available': 'Umami {version} का नया संस्करण उपलब्ध है!',
'no-event-data': 'कोई ईवेंट डेटा उपलब्ध नहीं है।',
'no-team-websites': 'इस टीम के पास कोई वेबसाइट नहीं है।',
'no-teams': 'आपने कोई टीम नहीं बनाई है।',
'no-users': 'कोई उपयोगकर्ता नहीं हैं।',
'not-found': 'नहीं मिला',
'nothing-selected': 'कुछ भी चयनित नहीं है।',
'reset-website': 'इस वेबसाइट को रीसेट करने के लिए, नीचे बॉक्स में {confirmation} टाइप करें।',
'sever-error': 'सर्वर त्रुटि',
'team-already-member': 'आप पहले से ही टीम के सदस्य हैं।',
'team-not-found': 'टीम नहीं मिली।',
'team-websites-info': 'वेबसाइटें टीम के किसी भी सदस्य द्वारा देखी जा सकती हैं।',
'transfer-team-website-to-user': 'इस वेबसाइट को अपने खाते में स्थानांतरित करें?',
'transfer-user-website-to-team': 'इस वेबसाइट को स्थानांतरित करने के लिए टीम चुनें।',
'transfer-website': 'वेबसाइट का स्वामित्व अपने खाते या किसी अन्य टीम में स्थानांतरित करें।',
'triggered-event': 'ट्रिगर किया गया ईवेंट',
'unauthorized': 'अनधिकृत',
'user-deleted': 'उपयोगकर्ता हटाया गया।',
'viewed-page': 'देखा गया पेज'
}
},
'id-ID': {
label: {
'account': 'Akun',
'action': 'Tindakan',
'add-link': 'Tambah tautan',
'add-pixel': 'Tambah piksel',
'analysis': 'Analisis',
'application': 'Aplikasi',
'audience': 'Audiens',
'campaign': 'Kampanye',
'channel': 'Saluran',
'chart': 'Grafik',
'cohorts': 'Kohort',
'criteria': 'Kriteria',
'data': 'Data',
'desktop': 'Desktop',
'destination-url': 'URL tujuan',
'documentation': 'Dokumentasi',
'domain': 'Domain',
'download': 'Unduh',
'email': 'Email',
'environment': 'Lingkungan',
'exclude-bounce': 'Kecualikan pantulan',
'filter': 'Filter',
'filters': 'Filter',
'funnel': 'Corong',
'growth': 'Pertumbuhan',
'hour': 'Jam',
'invalid-url': 'URL tidak valid',
'laptop': 'Laptop',
'link': 'Tautan',
'location': 'Lokasi',
'minute': 'Menit',
'model': 'Model',
'month': 'Bulan',
'ok': 'OK',
'online': 'Daring',
'os': 'OS',
'pixel': 'Piksel',
'preferences': 'Preferensi',
'profiles': 'Profil',
'role': 'Peran',
'run-query': 'Jalankan kueri',
'save-cohort': 'Simpan kohort',
'save-segment': 'Simpan segmen',
'screen': 'Layar',
'segment': 'Segmen',
'segments': 'Segmen',
'sms': 'SMS',
'source': 'Sumber',
'sum': 'Jumlah',
'support': 'Dukungan',
'switch-account': 'Ganti akun',
'table': 'Tabel',
'tablet': 'Tablet',
'tag': 'Tag',
'team-view-only': 'Hanya lihat tim',
'term': 'Kata kunci',
'total': 'Total',
'traffic': 'Lalu lintas',
'transfer': 'Transfer',
'unique-events': 'Event unik',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM Kampanye',
'utm-content': 'UTM Konten',
'utm-medium': 'UTM Media',
'utm-source': 'UTM Sumber',
'utm-term': 'UTM Kata Kunci',
'version': 'Versi',
'window': 'Jendela'
},
message: {
'bad-request': 'Permintaan tidak valid',
'event-log': '<b>{event}</b> di <a>{url}</a>',
'forbidden': 'Dilarang',
'not-found': 'Tidak ditemukan',
'nothing-selected': 'Tidak ada yang dipilih.',
'sever-error': 'Kesalahan server',
'unauthorized': 'Tidak diotorisasi'
}
},
'ms-MY': {
label: {
'access-code': 'Kod akses',
'account': 'Akaun',
'action': 'Tindakan',
'add': 'Tambah',
'add-board': 'Tambah papan',
'add-description': 'Tambah penerangan',
'add-link': 'Tambah pautan',
'add-member': 'Tambah ahli',
'add-pixel': 'Tambah piksel',
'add-step': 'Tambah langkah',
'affiliate': 'Gabungan',
'after': 'Selepas',
'all-time': 'Sepanjang masa',
'analysis': 'Analisis',
'analytics': 'Analitik',
'application': 'Aplikasi',
'apply': 'Terapkan',
'attribution': 'Atribusi',
'attribution-description': 'Lihat bagaimana pengguna berinteraksi dengan pemasaran anda dan apa yang mendorong penukaran.',
'audience': 'Khalayak',
'average': 'Purata',
'before': 'Sebelum',
'behavior': 'Tingkah laku',
'boards': 'Papan',
'breakdown': 'Pecahan',
'browser': 'Pelayar',
'campaign': 'Kempen',
'campaigns': 'Kempen',
'channel': 'Saluran',
'channels': 'Saluran',
'chart': 'Carta',
'cities': 'Bandar',
'city': 'Bandar',
'clear-all': 'Kosongkan semua',
'cohort': 'Kohort',
'cohorts': 'Kohort',
'compare': 'Bandingkan',
'compare-dates': 'Bandingkan tarikh',
'confirm': 'Sahkan',
'contains': 'Mengandungi',
'content': 'Kandungan',
'continue': 'Teruskan',
'conversion': 'Penukaran',
'conversion-rate': 'Kadar penukaran',
'conversion-step': 'Langkah penukaran',
'count': 'Bilangan',
'country': 'Negara',
'create': 'Cipta',
'create-report': 'Cipta laporan',
'create-team': 'Cipta pasukan',
'create-user': 'Cipta pengguna',
'created': 'Dicipta',
'created-by': 'Dicipta oleh',
'criteria': 'Kriteria',
'currency': 'Mata wang',
'current': 'Semasa',
'data': 'Data',
'date': 'Tarikh',
'day': 'Hari',
'delete-report': 'Padam laporan',
'delete-team': 'Padam pasukan',
'delete-user': 'Padam pengguna',
'description': 'Penerangan',
'desktop': 'Desktop',
'destination-url': 'URL destinasi',
'details': 'Butiran',
'device': 'Peranti',
'direct': 'Terus',
'distinct-id': 'ID unik',
'documentation': 'Dokumentasi',
'does-not-contain': 'Tidak mengandungi',
'does-not-include': 'Tidak termasuk',
'doest-not-exist': 'Tidak wujud',
'domain': 'Domain',
'download': 'Muat turun',
'dropoff': 'Tercicir',
'edit': 'Sunting',
'edit-dashboard': 'Sunting papan pemuka',
'edit-member': 'Sunting ahli',
'email': 'E-mel',
'end-step': 'Langkah akhir',
'environment': 'Persekitaran',
'event': 'Peristiwa',
'event-data': 'Data peristiwa',
'event-name': 'Nama peristiwa',
'exclude-bounce': 'Kecualikan lantunan',
'exists': 'Wujud',
'false': 'Palsu',
'field': 'Medan',
'fields': 'Medan',
'filter': 'Tapis',
'filters': 'Tapis',
'first-click': 'Klik pertama',
'first-seen': 'Pertama dilihat',
'funnel': 'Corong',
'funnel-description': 'Fahami kadar penukaran dan tercicir pengguna.',
'funnels': 'Corong',
'goal': 'Matlamat',
'goals': 'Matlamat',
'goals-description': 'Jejaki matlamat anda untuk paparan halaman dan peristiwa.',
'greater-than': 'Lebih besar dari',
'greater-than-equals': 'Lebih besar atau sama',
'grouped': 'Dikumpulkan',
'growth': 'Pertumbuhan',
'hostname': 'Nama hos',
'hour': 'Jam',
'includes': 'Termasuk',
'insight': 'Wawasan',
'insights': 'Wawasan',
'insights-description': 'Terokai data anda dengan lebih mendalam menggunakan segmen dan tapis.',
'invalid-url': 'URL tidak sah',
'is': 'Adalah',
'is-false': 'Adalah palsu',
'is-not': 'Bukan',
'is-not-set': 'Tidak ditetapkan',
'is-set': 'Ditetapkan',
'is-true': 'Adalah benar',
'join': 'Sertai',
'join-team': 'Sertai pasukan',
'journey': 'Perjalanan',
'journey-description': 'Fahami bagaimana pengguna menavigasi laman web anda.',
'journeys': 'Perjalanan',
'language': 'Bahasa',
'languages': 'Bahasa',
'laptop': 'Komputer riba',
'last-click': 'Klik terakhir',
'last-months': '{x} bulan lepas',
'last-seen': 'Terakhir dilihat',
'leave': 'Keluar',
'leave-team': 'Keluar pasukan',
'less-than': 'Kurang dari',
'less-than-equals': 'Kurang atau sama',
'link': 'Pautan',
'links': 'Pautan',
'location': 'Lokasi',
'manage': 'Urus',
'manager': 'Pengurus',
'max': 'Maks',
'medium': 'Medium',
'member': 'Ahli',
'members': 'Ahli',
'min': 'Min',
'minute': 'Minit',
'model': 'Model',
'month': 'Bulan',
'my-account': 'Akaun saya',
'my-websites': 'Laman web saya',
'none': 'Tiada',
'number-of-records': '{x} {x, plural, one {rekod} other {rekod}}',
'ok': 'OK',
'online': 'Dalam talian',
'organic-search': 'Carian organik',
'organic-shopping': 'Beli-belah organik',
'organic-social': 'Sosial organik',
'organic-video': 'Video organik',
'os': 'OS',
'other': 'Lain-lain',
'overview': 'Gambaran keseluruhan',
'owner': 'Pemilik',
'page': 'Halaman',
'page-of': 'Halaman {current} daripada {total}',
'pageTitle': 'Tajuk halaman',
'paid-ads': 'Iklan berbayar',
'paid-search': 'Carian berbayar',
'paid-shopping': 'Beli-belah berbayar',
'paid-social': 'Sosial berbayar',
'paid-video': 'Video berbayar',
'path': 'Laluan',
'paths': 'Laluan',
'pixel': 'Piksel',
'pixels': 'Piksel',
'preferences': 'Keutamaan',
'previous': 'Sebelumnya',
'previous-period': 'Tempoh sebelumnya',
'previous-year': 'Tahun sebelumnya',
'profiles': 'Profil',
'properties': 'Sifat',
'property': 'Sifat',
'queries': 'Pertanyaan',
'query': 'Pertanyaan',
'query-parameters': 'Parameter pertanyaan',
'referral': 'Rujukan',
'referrer': 'Perujuk',
'regenerate': 'Jana semula',
'region': 'Wilayah',
'regions': 'Wilayah',
'remaining': 'Baki',
'remove': 'Buang',
'remove-member': 'Buang ahli',
'reports': 'Laporan',
'retention': 'Pengekalan',
'retention-description': 'Ukur kelekatan laman web anda dengan menjejaki kekerapan pengguna kembali.',
'revenue': 'Hasil',
'role': 'Peranan',
'run-query': 'Jalankan pertanyaan',
'save-cohort': 'Simpan kohort',
'save-segment': 'Simpan segmen',
'screen': 'Skrin',
'screens': 'Skrin',
'search': 'Cari',
'segment': 'Segmen',
'segments': 'Segmen',
'select': 'Pilih',
'select-date': 'Pilih tarikh',
'select-filter': 'Pilih tapis',
'select-role': 'Pilih peranan',
'select-website': 'Pilih laman web',
'session': 'Sesi',
'session-data': 'Data sesi',
'sessions': 'Sesi',
'share': 'Kongsi',
'sms': 'SMS',
'source': 'Sumber',
'sources': 'Sumber',
'start-step': 'Langkah mula',
'steps': 'Langkah',
'sum': 'Jumlah',
'support': 'Sokongan',
'switch-account': 'Tukar akaun',
'table': 'Jadual',
'tablet': 'Tablet',
'tag': 'Tag',
'tags': 'Tag',
'team': 'Pasukan',
'team-id': 'ID pasukan',
'team-manager': 'Pengurus pasukan',
'team-member': 'Ahli pasukan',
'team-name': 'Nama pasukan',
'team-owner': 'Pemilik pasukan',
'team-settings': 'Tetapan pasukan',
'team-view-only': 'Lihat sahaja pasukan',
'team-websites': 'Laman web pasukan',
'teams': 'Pasukan',
'term': 'Kata kunci',
'terms': 'Syarat',
'theme': 'Tema',
'title': 'Tajuk',
'toggle-charts': 'Togol carta',
'total': 'Jumlah',
'total-records': 'Jumlah rekod',
'traffic': 'Trafik',
'transactions': 'Transaksi',
'transfer': 'Pindahkan',
'transfer-website': 'Pindahkan laman web',
'true': 'Benar',
'type': 'Jenis',
'unique': 'Unik',
'unique-events': 'Peristiwa unik',
'uniqueCustomers': 'Pelanggan unik',
'untitled': 'Tanpa tajuk',
'update': 'Kemas kini',
'url': 'URL',
'user': 'Pengguna',
'users': 'Pengguna',
'utm': 'UTM',
'utm-campaign': 'UTM Kempen',
'utm-content': 'UTM Kandungan',
'utm-description': 'Jejaki kempen anda melalui parameter UTM.',
'utm-medium': 'UTM Medium',
'utm-source': 'UTM Sumber',
'utm-term': 'UTM Kata Kunci',
'value': 'Nilai',
'version': 'Versi',
'view': 'Lihat',
'view-only': 'Lihat sahaja',
'views-per-visit': 'Paparan per lawatan',
'visits': 'Lawatan',
'website': 'Laman web',
'website-id': 'ID laman web',
'window': 'Tetingkap',
'yesterday': 'Semalam'
},
message: {
'action-confirmation': 'Taip {confirmation} dalam kotak di bawah untuk mengesahkan.',
'bad-request': 'Permintaan tidak sah',
'collected-data': 'Data yang dikumpul',
'confirm-leave': 'Adakah anda pasti mahu meninggalkan <b>{target}</b>?',
'confirm-remove': 'Adakah anda pasti mahu membuang <b>{target}</b>?',
'delete-team-warning': 'Memadamkan pasukan juga akan memadamkan semua laman web pasukan.',
'event-log': '<b>{event}</b> di <a>{url}</a>',
'forbidden': 'Dilarang',
'min-password-length': 'Panjang minimum {n} aksara',
'new-version-available': 'Versi baharu Umami {version} tersedia!',
'no-event-data': 'Tiada data peristiwa tersedia.',
'no-team-websites': 'Pasukan ini tidak mempunyai laman web.',
'no-teams': 'Anda belum mencipta sebarang pasukan.',
'no-users': 'Tiada pengguna.',
'not-found': 'Tidak dijumpai',
'nothing-selected': 'Tiada yang dipilih.',
'reset-website': 'Untuk menetapkan semula laman web ini, taip {confirmation} dalam kotak di bawah.',
'sever-error': 'Ralat pelayan',
'team-already-member': 'Anda sudah menjadi ahli pasukan.',
'team-not-found': 'Pasukan tidak dijumpai.',
'team-websites-info': 'Laman web boleh dilihat oleh sesiapa dalam pasukan.',
'transfer-team-website-to-user': 'Pindahkan laman web ini ke akaun anda?',
'transfer-user-website-to-team': 'Pilih pasukan untuk memindahkan laman web ini.',
'transfer-website': 'Pindahkan pemilikan laman web ke akaun anda atau pasukan lain.',
'triggered-event': 'Peristiwa yang dicetuskan',
'unauthorized': 'Tidak dibenarkan',
'user-deleted': 'Pengguna dipadamkan.',
'viewed-page': 'Halaman dilihat'
}
},
'uz-UZ': {
label: {
'account': 'Hisob',
'action': 'Harakat',
'add-link': 'Havola qo\'shish',
'add-pixel': 'Piksel qo\'shish',
'analysis': 'Tahlil',
'application': 'Ilova',
'audience': 'Auditoriya',
'campaign': 'Kampaniya',
'channel': 'Kanal',
'chart': 'Grafik',
'cohorts': 'Kogortalar',
'criteria': 'Mezonlar',
'destination-url': 'Maqsad URL',
'documentation': 'Hujjatlar',
'download': 'Yuklab olish',
'environment': 'Muhit',
'exclude-bounce': 'Chiqib ketishni istisno qilish',
'growth': 'O\'sish',
'hour': 'Soat',
'invalid-url': 'Noto\'g\'ri URL',
'link': 'Havola',
'location': 'Joylashuv',
'minute': 'Daqiqa',
'model': 'Model',
'month': 'Oy',
'ok': 'OK',
'pixel': 'Piksel',
'preferences': 'Sozlamalar',
'profiles': 'Profillar',
'save-cohort': 'Kogortani saqlash',
'save-segment': 'Segmentni saqlash',
'screen': 'Ekran',
'segment': 'Segment',
'segments': 'Segmentlar',
'sms': 'SMS',
'source': 'Manba',
'support': 'Qo\'llab-quvvatlash',
'switch-account': 'Hisobni almashtirish',
'table': 'Jadval',
'term': 'Qidiruv iborasi',
'traffic': 'Trafik',
'unique-events': 'Noyob hodisalar',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM Kampaniya',
'utm-content': 'UTM Kontent',
'utm-medium': 'UTM Vosita',
'utm-source': 'UTM Manba',
'utm-term': 'UTM Ibora',
'version': 'Versiya'
},
message: {}
},
'mn-MN': {
label: {
'account': 'Бүртгэл',
'action': 'Үйлдэл',
'add-link': 'Холбоос нэмэх',
'add-pixel': 'Пиксел нэмэх',
'analysis': 'Шинжилгээ',
'application': 'Программ',
'audience': 'Үзэгчид',
'campaign': 'Кампанит ажил',
'channel': 'Суваг',
'chart': 'График',
'cohorts': 'Когортууд',
'criteria': 'Шалгуур',
'destination-url': 'Очих URL',
'documentation': 'Баримт бичиг',
'download': 'Татах',
'environment': 'Орчин',
'exclude-bounce': 'Буцалтыг хасах',
'growth': 'Өсөлт',
'hour': 'Цаг',
'invalid-url': 'Буруу URL',
'link': 'Холбоос',
'location': 'Байршил',
'max': 'Дээд',
'min': 'Доод',
'minute': 'Минут',
'month': 'Сар',
'online': 'Онлайн',
'os': 'ҮС',
'pixel': 'Пиксел',
'preferences': 'Тохиргоо',
'profiles': 'Профайлууд',
'query': 'Асуулга',
'referral': 'Лавлагаа',
'save-cohort': 'Когорт хадгалах',
'save-segment': 'Сегмент хадгалах',
'screen': 'Дэлгэц',
'segment': 'Сегмент',
'segments': 'Сегментүүд',
'select-role': 'Үүрэг сонгох',
'session': 'Сессия',
'sessions': 'Сессиүд',
'sms': 'SMS',
'source': 'Эх сурвалж',
'support': 'Дэмжлэг',
'switch-account': 'Бүртгэл солих',
'table': 'Хүснэгт',
'team-view-only': 'Зөвхөн багийн харагдац',
'term': 'Хайлтын нөхцөл',
'traffic': 'Урсгал',
'transactions': 'Гүйлгээнүүд',
'unique-events': 'Өвөрмөц үйл явдлууд',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM Кампанит ажил',
'utm-content': 'UTM Агуулга',
'utm-medium': 'UTM Хэрэгсэл',
'utm-source': 'UTM Эх сурвалж',
'utm-term': 'UTM Нөхцөл',
'version': 'Хувилбар'
},
message: {
'bad-request': 'Буруу хүсэлт',
'forbidden': 'Хориотой',
'not-found': 'Олдсонгүй',
'nothing-selected': 'Юу ч сонгоогүй байна.',
'sever-error': 'Серверийн алдаа',
'unauthorized': 'Зөвшөөрөлгүй'
}
}
};
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');
}

View file

@ -0,0 +1,569 @@
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 = {
'th-TH': {
label: {
'access-code': 'รหัสเข้าถึง',
'account': 'บัญชี',
'action': 'การกระทำ',
'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': 'บอร์ด',
'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': 'เส้นทาง',
'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': 'เว็บไซต์ของฉัน',
'number-of-records': '{x} {x, plural, one {รายการ} other {รายการ}}',
'ok': 'ตกลง',
'online': 'ออนไลน์',
'organic-search': 'ค้นหาแบบออร์แกนิก',
'organic-shopping': 'ชอปปิ้งแบบออร์แกนิก',
'organic-social': 'โซเชียลแบบออร์แกนิก',
'organic-video': 'วิดีโอแบบออร์แกนิก',
'os': 'ระบบปฏิบัติการ',
'other': 'อื่นๆ',
'overview': 'ภาพรวม',
'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': 'รายได้',
'role': 'บทบาท',
'run-query': 'เรียกใช้คิวรี',
'save-cohort': 'บันทึกกลุ่มตัวอย่าง',
'save-segment': 'บันทึกเซ็กเมนต์',
'screen': 'หน้าจอ',
'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': 'ตาราง',
'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': 'ชื่อ',
'total': 'รวม',
'total-records': 'จำนวนรายการทั้งหมด',
'traffic': 'ทราฟฟิก',
'transactions': 'ธุรกรรม',
'transfer': 'โอน',
'transfer-website': 'โอนเว็บไซต์',
'true': 'จริง',
'type': 'ประเภท',
'unique': 'ไม่ซ้ำ',
'unique-events': 'เหตุการณ์ไม่ซ้ำ',
'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-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-team-websites': 'ทีมนี้ไม่มีเว็บไซต์',
'no-teams': 'คุณยังไม่ได้สร้างทีม',
'no-users': 'ไม่มีผู้ใช้',
'not-found': 'ไม่พบ',
'nothing-selected': 'ไม่ได้เลือกอะไร',
'reset-website': 'เพื่อรีเซ็ตเว็บไซต์นี้ พิมพ์ {confirmation} ในช่องด้านล่าง',
'sever-error': 'เกิดข้อผิดพลาดของเซิร์ฟเวอร์',
'team-already-member': 'คุณเป็นสมาชิกของทีมอยู่แล้ว',
'team-not-found': 'ไม่พบทีม',
'team-websites-info': 'เว็บไซต์สามารถดูได้โดยทุกคนในทีม',
'transfer-team-website-to-user': 'โอนเว็บไซต์นี้ไปยังบัญชีของคุณ?',
'transfer-user-website-to-team': 'เลือกทีมเพื่อโอนเว็บไซต์นี้',
'transfer-website': 'โอนความเป็นเจ้าของเว็บไซต์ไปยังบัญชีหรือทีมอื่น',
'triggered-event': 'เหตุการณ์ที่ถูกเรียก',
'unauthorized': 'ไม่ได้รับอนุญาต',
'user-deleted': 'ผู้ใช้ถูกลบแล้ว',
'viewed-page': 'หน้าที่ดู'
}
},
'km-KH': {
label: {
'account': 'គណនី',
'action': 'សកម្មភាព',
'add-link': 'បន្ថែមតំណ',
'add-pixel': 'បន្ថែមភីកសែល',
'analysis': 'ការវិភាគ',
'application': 'កម្មវិធី',
'audience': 'ទស្សនិកជន',
'campaign': 'យុទ្ធនាការ',
'channel': 'ឆានែល',
'chart': 'តារាង',
'cohorts': 'ក្រុមកូហ៊ត',
'criteria': 'លក្ខណវិនិច្ឆ័យ',
'destination-url': 'URL គោលដៅ',
'documentation': 'ឯកសារ',
'domain': 'ដូមែន',
'download': 'ទាញយក',
'dropoff': 'ការចាកចេញ',
'email': 'អ៊ីមែល',
'environment': 'បរិស្ថាន',
'exclude-bounce': 'មិនរាប់បញ្ចូលការលោតចេញ',
'field': 'វាល',
'fields': 'វាល',
'first-seen': 'ឃើញដំបូង',
'funnel-description': 'យល់ពីអត្រាបំលែងនិងការចាកចេញរបស់អ្នកប្រើ។',
'growth': 'កំណើន',
'hour': 'ម៉ោង',
'insights': 'ការយល់ដឹង',
'insights-description': 'ស្វែងរកឱ្យកាន់តែស៊ីជម្រៅក្នុងទិន្នន័យរបស់អ្នកដោយប្រើផ្នែកនិងតម្រង។',
'invalid-url': 'URL មិនត្រឹមត្រូវ',
'last-seen': 'ឃើញចុងក្រោយ',
'link': 'តំណ',
'location': 'ទីតាំង',
'login': 'ចូល',
'logout': 'ចេញ',
'max': 'អតិបរមា',
'min': 'អប្បបរមា',
'minute': 'នាទី',
'month': 'ខែ',
'number-of-records': '{x} {x, plural, one {កំណត់ត្រា} other {កំណត់ត្រា}}',
'ok': 'យល់ព្រម',
'online': 'អនឡាញ',
'os': 'ប្រព័ន្ធប្រតិបត្តិការ',
'path': 'ផ្លូវ',
'paths': 'ផ្លូវ',
'pixel': 'ភីកសែល',
'preferences': 'ចំណង់ចំណូលចិត្ត',
'profiles': 'ប្រវត្តិរូប',
'queries': 'សំណួរ',
'query': 'សំណួរ',
'regenerate': 'បង្កើតឡើងវិញ',
'retention-description': 'វាស់ស្ទង់ភាពស្អិតនៃគេហទំព័រដោយតាមដានថាអ្នកប្រើត្រលប់មកវិញញឹកញាប់ប៉ុណ្ណា។',
'revenue': 'ចំណូល',
'run-query': 'ដំណើរការសំណួរ',
'save-cohort': 'រក្សាទុកក្រុមកូហ៊ត',
'save-segment': 'រក្សាទុកផ្នែក',
'screen': 'អេក្រង់',
'segment': 'ផ្នែក',
'segments': 'ផ្នែក',
'session': 'វគ្គ',
'sessions': 'វគ្គ',
'sms': 'SMS',
'source': 'ប្រភព',
'sum': 'ផលបូក',
'support': 'ជំនួយ',
'switch-account': 'ប្ដូរគណនី',
'table': 'តារាង',
'team-view-only': 'មើលក្រុមតែប៉ុណ្ណោះ',
'term': 'ពាក្យស្វែងរក',
'traffic': 'ចរាចរណ៍',
'transactions': 'ប្រតិបត្តិការ',
'type': 'ប្រភេទ',
'unique': 'តែមួយ',
'unique-events': 'ព្រឹត្តិការណ៍តែមួយ',
'uniqueCustomers': 'អតិថិជនតែមួយ',
'update': 'ធ្វើបច្ចុប្បន្នភាព',
'url': 'URL',
'utm': 'UTM',
'utm-campaign': 'UTM យុទ្ធនាការ',
'utm-content': 'UTM មាតិកា',
'utm-medium': 'UTM មធ្យម',
'utm-source': 'UTM ប្រភព',
'utm-term': 'UTM ពាក្យ',
'value': 'តម្លៃ',
'version': 'កំណែ',
'view': 'មើល',
'views-per-visit': 'ការមើលក្នុងមួយដង',
'window': 'បង្អួច'
},
message: {
'bad-request': 'សំណើមិនត្រឹមត្រូវ',
'event-log': '<b>{event}</b> នៅ <a>{url}</a>',
'forbidden': 'ហាមឃាត់',
'not-found': 'រកមិនឃើញ',
'nothing-selected': 'មិនបានជ្រើសអ្វីទេ។',
'sever-error': 'កំហុសម៉ាស៊ីនមេ',
'triggered-event': 'ព្រឹត្តិការណ៍ដែលបានដំណើរការ',
'unauthorized': 'មិនមានសិទ្ធិ'
}
},
'bn-BD': {
label: {
'account': 'অ্যাকাউন্ট',
'action': 'কার্যক্রম',
'add-link': 'লিংক যোগ করুন',
'add-pixel': 'পিক্সেল যোগ করুন',
'analysis': 'বিশ্লেষণ',
'application': 'অ্যাপ্লিকেশন',
'audience': 'দর্শক',
'campaign': 'প্রচারণা',
'channel': 'চ্যানেল',
'chart': 'চার্ট',
'cohorts': 'কোহর্ট',
'criteria': 'মানদণ্ড',
'destination-url': 'গন্তব্য URL',
'documentation': 'ডকুমেন্টেশন',
'download': 'ডাউনলোড',
'email': 'ইমেইল',
'environment': 'পরিবেশ',
'exclude-bounce': 'বাউন্স বাদ দিন',
'growth': 'বৃদ্ধি',
'hour': 'ঘণ্টা',
'insights': 'অন্তর্দৃষ্টি',
'insights-description': 'সেগমেন্ট এবং ফিল্টার ব্যবহার করে আপনার ডেটায় আরও গভীরে যান।',
'invalid-url': 'অবৈধ URL',
'link': 'লিংক',
'location': 'অবস্থান',
'minute': 'মিনিট',
'month': 'মাস',
'number-of-records': '{x} {x, plural, one {রেকর্ড} other {রেকর্ড}}',
'ok': 'ঠিক আছে',
'online': 'অনলাইন',
'os': 'ওএস',
'overview': 'সংক্ষিপ্ত বিবরণ',
'page-of': 'পৃষ্ঠা {current} / {total}',
'pageTitle': 'পৃষ্ঠার শিরোনাম',
'pixel': 'পিক্সেল',
'preferences': 'পছন্দসমূহ',
'profiles': 'প্রোফাইল',
'queries': 'কোয়েরি',
'query': 'কোয়েরি',
'query-parameters': 'কোয়েরি প্যারামিটার',
'referrer': 'রেফারার',
'regenerate': 'পুনরায় তৈরি',
'region': 'অঞ্চল',
'regions': 'অঞ্চলসমূহ',
'remove': 'সরান',
'remove-member': 'সদস্য সরান',
'reports': 'রিপোর্ট',
'retention': 'ধরে রাখা',
'retention-description': 'ব্যবহারকারীরা কতবার ফিরে আসে তা ট্র্যাক করে আপনার ওয়েবসাইটের আঠালোতা পরিমাপ করুন।',
'role': 'ভূমিকা',
'run-query': 'কোয়েরি চালান',
'save-cohort': 'কোহর্ট সংরক্ষণ করুন',
'save-segment': 'সেগমেন্ট সংরক্ষণ করুন',
'screen': 'স্ক্রিন',
'search': 'অনুসন্ধান',
'segment': 'সেগমেন্ট',
'segments': 'সেগমেন্ট',
'select': 'নির্বাচন করুন',
'select-date': 'তারিখ নির্বাচন করুন',
'select-role': 'ভূমিকা নির্বাচন করুন',
'select-website': 'ওয়েবসাইট নির্বাচন করুন',
'sessions': 'সেশন',
'sms': 'SMS',
'source': 'উৎস',
'start-step': 'প্রারম্ভিক ধাপ',
'steps': 'ধাপসমূহ',
'sum': 'যোগফল',
'support': 'সহায়তা',
'switch-account': 'অ্যাকাউন্ট পরিবর্তন',
'table': 'টেবিল',
'team-view-only': 'শুধু টিম দেখুন',
'team-websites': 'টিম ওয়েবসাইট',
'teams': 'টিম',
'term': 'অনুসন্ধান শব্দ',
'title': 'শিরোনাম',
'total': 'মোট',
'total-records': 'মোট রেকর্ড',
'traffic': 'ট্রাফিক',
'transactions': 'লেনদেন',
'transfer': 'স্থানান্তর',
'transfer-website': 'ওয়েবসাইট স্থানান্তর',
'true': 'সত্য',
'type': 'ধরন',
'unique': 'অনন্য',
'unique-events': 'অনন্য ইভেন্ট',
'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-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': '<a>{url}</a>-এ <b>{event}</b>',
'forbidden': 'নিষিদ্ধ',
'min-password-length': 'সর্বনিম্ন {n} অক্ষর',
'new-version-available': 'Umami {version}-এর নতুন সংস্করণ পাওয়া যাচ্ছে!',
'no-event-data': 'কোনো ইভেন্ট ডেটা পাওয়া যায়নি।',
'no-team-websites': 'এই টিমের কোনো ওয়েবসাইট নেই।',
'no-teams': 'আপনি কোনো টিম তৈরি করেননি।',
'no-users': 'কোনো ব্যবহারকারী নেই।',
'not-found': 'পাওয়া যায়নি',
'nothing-selected': 'কিছু নির্বাচন করা হয়নি।',
'reset-website': 'এই ওয়েবসাইট রিসেট করতে, নিচের বক্সে {confirmation} টাইপ করুন।',
'sever-error': 'সার্ভার ত্রুটি',
'team-already-member': 'আপনি ইতিমধ্যে টিমের সদস্য।',
'team-not-found': 'টিম পাওয়া যায়নি।',
'team-websites-info': 'ওয়েবসাইটগুলি টিমের যে কেউ দেখতে পারেন।',
'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');
}

View 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');
}