fix: i18n all hard-coded strings in mobile layout

Section titles (FINANCE, GOVERNANCE, SOCIAL, EDUCATION) and all app
names are now translated via i18n keys instead of hard-coded English.
Added translations for all 6 languages (en, tr, kmr, ckb, ar, fa).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-08 00:56:00 +03:00
parent 50a17d6453
commit d475861dd6
7 changed files with 219 additions and 33 deletions
+33 -33
View File
@@ -48,58 +48,58 @@ interface AppSection {
const APP_SECTIONS: AppSection[] = [
{
titleKey: 'FINANCE',
titleKey: 'mobile.section.finance',
emoji: '💰',
borderColor: 'border-l-green-500',
apps: [
{ title: 'Wallet', icon: '👛', route: '/wallet' },
{ title: 'Bank', icon: '🏦', route: '/wallet', comingSoon: true },
{ title: 'Exchange', icon: '💱', route: '/dex', requiresAuth: true },
{ title: 'P2P', icon: '🤝', route: '/p2p', requiresAuth: true },
{ title: 'B2B', icon: '🤖', route: '/wallet', comingSoon: true },
{ title: 'Bac/Zekat', icon: '💰', route: '/wallet', comingSoon: true },
{ title: 'Launchpad', icon: '🚀', route: '/launchpad' },
{ title: 'mobile.app.wallet', icon: '👛', route: '/wallet' },
{ title: 'mobile.app.bank', icon: '🏦', route: '/wallet', comingSoon: true },
{ title: 'mobile.app.exchange', icon: '💱', route: '/dex', requiresAuth: true },
{ title: 'mobile.app.p2p', icon: '🤝', route: '/p2p', requiresAuth: true },
{ title: 'mobile.app.b2b', icon: '🤖', route: '/wallet', comingSoon: true },
{ title: 'mobile.app.bacZekat', icon: '💰', route: '/wallet', comingSoon: true },
{ title: 'mobile.app.launchpad', icon: '🚀', route: '/launchpad' },
],
},
{
titleKey: 'GOVERNANCE',
titleKey: 'mobile.section.governance',
emoji: '🏛️',
borderColor: 'border-l-red-500',
apps: [
{ title: 'President', icon: '👑', route: '/elections', requiresAuth: true },
{ title: 'Assembly', icon: '🏛️', route: '/citizens/government', comingSoon: true },
{ title: 'Vote', icon: '🗳️', route: '/elections', requiresAuth: true },
{ title: 'Validators', icon: '🛡️', route: '/wallet' },
{ title: 'Justice', icon: '⚖️', route: '/citizens/government', comingSoon: true },
{ title: 'Proposals', icon: '📜', route: '/citizens/government' },
{ title: 'Polls', icon: '📊', route: '/citizens/government', comingSoon: true },
{ title: 'Identity', icon: '🆔', route: '/identity' },
{ title: 'mobile.app.president', icon: '👑', route: '/elections', requiresAuth: true },
{ title: 'mobile.app.assembly', icon: '🏛️', route: '/citizens/government', comingSoon: true },
{ title: 'mobile.app.vote', icon: '🗳️', route: '/elections', requiresAuth: true },
{ title: 'mobile.app.validators', icon: '🛡️', route: '/wallet' },
{ title: 'mobile.app.justice', icon: '⚖️', route: '/citizens/government', comingSoon: true },
{ title: 'mobile.app.proposals', icon: '📜', route: '/citizens/government' },
{ title: 'mobile.app.polls', icon: '📊', route: '/citizens/government', comingSoon: true },
{ title: 'mobile.app.identity', icon: '🆔', route: '/identity' },
],
},
{
titleKey: 'SOCIAL',
titleKey: 'mobile.section.social',
emoji: '💬',
borderColor: 'border-l-blue-500',
apps: [
{ title: 'whatsKURD', icon: '💬', route: '/message', comingSoon: true },
{ title: 'Forum', icon: '📰', route: '/forum' },
{ title: 'KurdMedia', icon: '📺', route: '/forum', comingSoon: true },
{ title: 'Events', icon: '📅', route: '/forum', comingSoon: true },
{ title: 'Help', icon: '❓', route: '/docs' },
{ title: 'Music', icon: '🎵', route: '/forum', comingSoon: true },
{ title: 'VPN', icon: '🛡️', route: '/forum', comingSoon: true },
{ title: 'Referral', icon: '👥', route: '/dashboard', requiresAuth: true },
{ title: 'mobile.app.whatsKurd', icon: '💬', route: '/message', comingSoon: true },
{ title: 'mobile.app.forum', icon: '📰', route: '/forum' },
{ title: 'mobile.app.kurdMedia', icon: '📺', route: '/forum', comingSoon: true },
{ title: 'mobile.app.events', icon: '📅', route: '/forum', comingSoon: true },
{ title: 'mobile.app.help', icon: '❓', route: '/docs' },
{ title: 'mobile.app.music', icon: '🎵', route: '/forum', comingSoon: true },
{ title: 'mobile.app.vpn', icon: '🛡️', route: '/forum', comingSoon: true },
{ title: 'mobile.app.referral', icon: '👥', route: '/dashboard', requiresAuth: true },
],
},
{
titleKey: 'EDUCATION',
titleKey: 'mobile.section.education',
emoji: '📚',
borderColor: 'border-l-yellow-500',
apps: [
{ title: 'University', icon: '🎓', route: '/education', comingSoon: true },
{ title: 'Perwerde', icon: '📖', route: '/education', requiresAuth: true },
{ title: 'Certificates', icon: '🏆', route: '/education', comingSoon: true },
{ title: 'Research', icon: '🔬', route: '/education', comingSoon: true },
{ title: 'mobile.app.university', icon: '🎓', route: '/education', comingSoon: true },
{ title: 'mobile.app.perwerde', icon: '📖', route: '/education', requiresAuth: true },
{ title: 'mobile.app.certificates', icon: '🏆', route: '/education', comingSoon: true },
{ title: 'mobile.app.research', icon: '🔬', route: '/education', comingSoon: true },
],
},
];
@@ -284,7 +284,7 @@ const MobileHomeLayout: React.FC = () => {
{/* Section header */}
<div className={`flex items-center justify-between px-4 py-2.5 border-l-4 ${section.borderColor}`}>
<h3 className="text-sm font-bold text-white tracking-wide">
{section.titleKey} {section.emoji}
{t(section.titleKey)} {section.emoji}
</h3>
</div>
{/* App grid - 4 per row */}
@@ -312,7 +312,7 @@ const MobileHomeLayout: React.FC = () => {
)}
</div>
<span className="text-[10px] text-gray-300 font-medium text-center leading-tight">
{app.title}
{t(app.title)}
</span>
</button>
);
+31
View File
@@ -3776,4 +3776,35 @@ export default {
'mobile.joinUs': 'انضم إلينا',
'mobile.signInUp': 'تسجيل الدخول / التسجيل',
'mobile.loginToSeeRoles': 'سجل الدخول لرؤية الأدوار',
'mobile.section.finance': 'المالية',
'mobile.section.governance': 'الحوكمة',
'mobile.section.social': 'اجتماعي',
'mobile.section.education': 'التعليم',
'mobile.app.wallet': 'المحفظة',
'mobile.app.bank': 'البنك',
'mobile.app.exchange': 'البورصة',
'mobile.app.p2p': 'P2P',
'mobile.app.b2b': 'B2B',
'mobile.app.bacZekat': 'الضريبة/الزكاة',
'mobile.app.launchpad': 'منصة الإطلاق',
'mobile.app.president': 'الرئيس',
'mobile.app.assembly': 'البرلمان',
'mobile.app.vote': 'تصويت',
'mobile.app.validators': 'المدققون',
'mobile.app.justice': 'العدالة',
'mobile.app.proposals': 'المقترحات',
'mobile.app.polls': 'استطلاعات',
'mobile.app.identity': 'الهوية',
'mobile.app.whatsKurd': 'واتسكورد',
'mobile.app.forum': 'المنتدى',
'mobile.app.kurdMedia': 'كورد ميديا',
'mobile.app.events': 'الفعاليات',
'mobile.app.help': 'المساعدة',
'mobile.app.music': 'الموسيقى',
'mobile.app.vpn': 'VPN',
'mobile.app.referral': 'الإحالة',
'mobile.app.university': 'الجامعة',
'mobile.app.perwerde': 'التعليم',
'mobile.app.certificates': 'الشهادات',
'mobile.app.research': 'البحث',
};
+31
View File
@@ -3766,4 +3766,35 @@ export default {
'mobile.joinUs': 'پەیوەست ببە',
'mobile.signInUp': 'چوونەژوورەوە / تۆمارکردن',
'mobile.loginToSeeRoles': 'بۆ بینینی ڕۆڵەکان بچۆ ژوورەوە',
'mobile.section.finance': 'دارایی',
'mobile.section.governance': 'بەڕێوەبردن',
'mobile.section.social': 'کۆمەڵایەتی',
'mobile.section.education': 'پەروەردە',
'mobile.app.wallet': 'جزدان',
'mobile.app.bank': 'بانک',
'mobile.app.exchange': 'ئاڵوگۆڕ',
'mobile.app.p2p': 'P2P',
'mobile.app.b2b': 'B2B',
'mobile.app.bacZekat': 'باج/زەکات',
'mobile.app.launchpad': 'دەستپێکردن',
'mobile.app.president': 'سەرۆک',
'mobile.app.assembly': 'پەرلەمان',
'mobile.app.vote': 'دەنگدان',
'mobile.app.validators': 'پشتڕاستکەرەوە',
'mobile.app.justice': 'دادوەری',
'mobile.app.proposals': 'پێشنیار',
'mobile.app.polls': 'ڕاپرسی',
'mobile.app.identity': 'ناسنامە',
'mobile.app.whatsKurd': 'واتسکورد',
'mobile.app.forum': 'فۆڕەم',
'mobile.app.kurdMedia': 'کوردمیدیا',
'mobile.app.events': 'چالاکی',
'mobile.app.help': 'یارمەتی',
'mobile.app.music': 'مۆسیقا',
'mobile.app.vpn': 'VPN',
'mobile.app.referral': 'ئاماژە',
'mobile.app.university': 'زانکۆ',
'mobile.app.perwerde': 'پەروەردە',
'mobile.app.certificates': 'بڕوانامە',
'mobile.app.research': 'توێژینەوە',
};
+31
View File
@@ -3814,4 +3814,35 @@ export default {
'mobile.joinUs': 'Join Us',
'mobile.signInUp': 'Sign In / Up',
'mobile.loginToSeeRoles': 'Login to see roles',
'mobile.section.finance': 'FINANCE',
'mobile.section.governance': 'GOVERNANCE',
'mobile.section.social': 'SOCIAL',
'mobile.section.education': 'EDUCATION',
'mobile.app.wallet': 'Wallet',
'mobile.app.bank': 'Bank',
'mobile.app.exchange': 'Exchange',
'mobile.app.p2p': 'P2P',
'mobile.app.b2b': 'B2B',
'mobile.app.bacZekat': 'Bac/Zekat',
'mobile.app.launchpad': 'Launchpad',
'mobile.app.president': 'President',
'mobile.app.assembly': 'Assembly',
'mobile.app.vote': 'Vote',
'mobile.app.validators': 'Validators',
'mobile.app.justice': 'Justice',
'mobile.app.proposals': 'Proposals',
'mobile.app.polls': 'Polls',
'mobile.app.identity': 'Identity',
'mobile.app.whatsKurd': 'whatsKURD',
'mobile.app.forum': 'Forum',
'mobile.app.kurdMedia': 'KurdMedia',
'mobile.app.events': 'Events',
'mobile.app.help': 'Help',
'mobile.app.music': 'Music',
'mobile.app.vpn': 'VPN',
'mobile.app.referral': 'Referral',
'mobile.app.university': 'University',
'mobile.app.perwerde': 'Perwerde',
'mobile.app.certificates': 'Certificates',
'mobile.app.research': 'Research',
}
+31
View File
@@ -3810,4 +3810,35 @@ export default {
'mobile.joinUs': 'به ما بپیوندید',
'mobile.signInUp': 'ورود / ثبت نام',
'mobile.loginToSeeRoles': 'برای دیدن نقش‌ها وارد شوید',
'mobile.section.finance': 'مالی',
'mobile.section.governance': 'حکمرانی',
'mobile.section.social': 'اجتماعی',
'mobile.section.education': 'آموزش',
'mobile.app.wallet': 'کیف پول',
'mobile.app.bank': 'بانک',
'mobile.app.exchange': 'صرافی',
'mobile.app.p2p': 'P2P',
'mobile.app.b2b': 'B2B',
'mobile.app.bacZekat': 'مالیات/زکات',
'mobile.app.launchpad': 'سکوی پرتاب',
'mobile.app.president': 'رئیس',
'mobile.app.assembly': 'مجلس',
'mobile.app.vote': 'رأی دادن',
'mobile.app.validators': 'اعتبارسنج‌ها',
'mobile.app.justice': 'عدالت',
'mobile.app.proposals': 'پیشنهادات',
'mobile.app.polls': 'نظرسنجی',
'mobile.app.identity': 'هویت',
'mobile.app.whatsKurd': 'واتس‌کورد',
'mobile.app.forum': 'انجمن',
'mobile.app.kurdMedia': 'کوردمدیا',
'mobile.app.events': 'رویدادها',
'mobile.app.help': 'کمک',
'mobile.app.music': 'موسیقی',
'mobile.app.vpn': 'VPN',
'mobile.app.referral': 'ارجاع',
'mobile.app.university': 'دانشگاه',
'mobile.app.perwerde': 'آموزش',
'mobile.app.certificates': 'گواهینامه‌ها',
'mobile.app.research': 'تحقیقات',
};
+31
View File
@@ -3793,4 +3793,35 @@ export default {
'mobile.joinUs': 'Tevlî me bibe',
'mobile.signInUp': 'Têkeve / Tomar bibe',
'mobile.loginToSeeRoles': 'Ji bo rolan têkeve',
'mobile.section.finance': 'DARAYÎ',
'mobile.section.governance': 'RÊVEBERÎ',
'mobile.section.social': 'CIVAKÎ',
'mobile.section.education': 'PERWERDE',
'mobile.app.wallet': 'Berîk',
'mobile.app.bank': 'Bank',
'mobile.app.exchange': 'Danûstandin',
'mobile.app.p2p': 'P2P',
'mobile.app.b2b': 'B2B',
'mobile.app.bacZekat': 'Bac/Zekat',
'mobile.app.launchpad': 'Destpêk',
'mobile.app.president': 'Serok',
'mobile.app.assembly': 'Meclîs',
'mobile.app.vote': 'Deng bide',
'mobile.app.validators': 'Pejirandox',
'mobile.app.justice': 'Dadwerî',
'mobile.app.proposals': 'Pêşniyar',
'mobile.app.polls': 'Rapirsî',
'mobile.app.identity': 'Nasnama',
'mobile.app.whatsKurd': 'whatsKURD',
'mobile.app.forum': 'Forum',
'mobile.app.kurdMedia': 'KurdMedya',
'mobile.app.events': 'Çalakî',
'mobile.app.help': 'Alîkarî',
'mobile.app.music': 'Muzîk',
'mobile.app.vpn': 'VPN',
'mobile.app.referral': 'Referans',
'mobile.app.university': 'Zanînge',
'mobile.app.perwerde': 'Perwerde',
'mobile.app.certificates': 'Belge',
'mobile.app.research': 'Lêkolîn',
};
+31
View File
@@ -3796,4 +3796,35 @@ export default {
'mobile.joinUs': 'Bize Katil',
'mobile.signInUp': 'Giris / Kayit',
'mobile.loginToSeeRoles': 'Rolleri gormek icin giris yap',
'mobile.section.finance': 'FİNANS',
'mobile.section.governance': 'YÖNETİM',
'mobile.section.social': 'SOSYAL',
'mobile.section.education': 'EĞİTİM',
'mobile.app.wallet': 'Cüzdan',
'mobile.app.bank': 'Banka',
'mobile.app.exchange': 'Borsa',
'mobile.app.p2p': 'P2P',
'mobile.app.b2b': 'B2B',
'mobile.app.bacZekat': 'Vergi/Zekat',
'mobile.app.launchpad': 'Launchpad',
'mobile.app.president': 'Başkan',
'mobile.app.assembly': 'Meclis',
'mobile.app.vote': 'Oy Ver',
'mobile.app.validators': 'Doğrulayıcılar',
'mobile.app.justice': 'Adalet',
'mobile.app.proposals': 'Teklifler',
'mobile.app.polls': 'Anketler',
'mobile.app.identity': 'Kimlik',
'mobile.app.whatsKurd': 'whatsKURD',
'mobile.app.forum': 'Forum',
'mobile.app.kurdMedia': 'KurdMedya',
'mobile.app.events': 'Etkinlikler',
'mobile.app.help': 'Yardım',
'mobile.app.music': 'Müzik',
'mobile.app.vpn': 'VPN',
'mobile.app.referral': 'Referans',
'mobile.app.university': 'Üniversite',
'mobile.app.perwerde': 'Eğitim',
'mobile.app.certificates': 'Sertifikalar',
'mobile.app.research': 'Araştırma',
};