mirror of
https://github.com/umami-software/umami.git
synced 2026-02-09 23:27:12 +01:00
Some checks are pending
Node.js CI / build (push) Waiting to run
12 batch translation scripts covering all language families: East Asian, Romance, Germanic, Nordic, Slavic, Other European, South/Southeast Asian, Tamil, Sinhala, Urdu, and Burmese. Remaining untranslated keys are intentional loanwords (URL, UTM, SMS, etc.) and en-GB which is intentionally identical to en-US. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
341 lines
14 KiB
JavaScript
341 lines
14 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const dir = path.join(__dirname, '..', 'public', 'intl', 'messages');
|
|
const enUS = JSON.parse(fs.readFileSync(path.join(dir, 'en-US.json'), 'utf8'));
|
|
|
|
const translations = {
|
|
'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');
|
|
}
|