213 lines
9.7 KiB
TypeScript
213 lines
9.7 KiB
TypeScript
// دیکشنری دوزبانه رشتههای هاردکد رابط کاربری (بدون محتوای دیتابیس).
|
||
// کلید فارسی مرجع است؛ متنهای دیتابیس (سئو، پروژهها، مقالهها و...) از localize.ts میآیند.
|
||
|
||
export const fa = {
|
||
// عمومی
|
||
brandFallback: 'گروه ساختمانی آرامش',
|
||
loading: 'در حال بارگذاری',
|
||
errorTitle: 'اتصال به سرور برقرار نشد',
|
||
errorText: 'محتوای سایت از سرور بارگذاری میشود؛ لطفاً اتصال اینترنت یا وضعیت سرور را بررسی کنید.',
|
||
retry: 'تلاش دوباره',
|
||
backToTop: 'بازگشت به بالا',
|
||
switchLang: 'English',
|
||
switchLangAria: 'تغییر زبان به انگلیسی',
|
||
understood: 'متوجه شدم',
|
||
|
||
// هدر و ناوبری
|
||
mainNav: 'ناوبری اصلی',
|
||
mobileNav: 'ناوبری موبایل',
|
||
openMenu: 'باز کردن منو',
|
||
closeMenu: 'بستن منو',
|
||
callBrand: 'تماس تلفنی با گروه ساختمانی آرامش',
|
||
|
||
// فرم تماس — پیامهای اعتبارسنجی و خطا
|
||
incompleteInfo: 'اطلاعات ناقص است',
|
||
nameRequired: 'لطفاً نام و نام خانوادگی خود را کامل وارد کنید (حداقل ۳ حرف).',
|
||
phoneInvalidTitle: 'شماره تلفن نامعتبر است',
|
||
phoneInvalidText: 'لطفاً یک شماره تماس معتبر وارد کنید تا کارشناسان ما بتوانند با شما ارتباط بگیرند.',
|
||
submitErrorTitle: 'خطا در ثبت درخواست',
|
||
formCheck: 'لطفاً اطلاعات فرم را بررسی و دوباره تلاش کنید.',
|
||
connectionErrorTitle: 'خطا در اتصال به سرور',
|
||
connectionErrorText: 'ارتباط با سرور برقرار نشد. لطفاً بعداً دوباره تلاش کنید.',
|
||
|
||
// خبرنامه
|
||
emailRequired: 'لطفاً نشانی ایمیل خود را برای عضویت در خبرنامه وارد کنید.',
|
||
emailInvalidTitle: 'فرمت ایمیل نامعتبر است',
|
||
emailInvalidText: 'لطفاً ایمیل خود را به درستی وارد کنید (مثال: example@domain.com).',
|
||
subscribeErrorTitle: 'خطا در عضویت',
|
||
emailCheck: 'لطفاً ایمیل را بررسی و دوباره تلاش کنید.',
|
||
|
||
// تیتر بخشها — فقط جایگزین وقتی دیتابیس خالی است
|
||
fallbackGalleryTitle: 'گالری تصاویر',
|
||
fallbackGalleryLead: 'قابهایی از کارگاهها و پروژههای تحویلشده گروه ساختمانی آرامش.',
|
||
fallbackTeamTitle: 'تیم ما',
|
||
fallbackTeamLead: 'کسانی که تصمیمهای اصلی هر پروژه را میگیرند و پاسخگوی آن هستند.',
|
||
fallbackTimelineTitle: 'مسیر ما',
|
||
fallbackTimelineLead: 'از یک دفتر چهارنفره تا ۴۷ پروژه. خط زمان پروژههای ما را ببینید.',
|
||
fallbackFaqTitle: 'سوالات متداول',
|
||
fallbackFaqLead: 'پاسخ کوتاه به پرتکرارترین پرسشهای سرمایهگذاران و خریداران.',
|
||
|
||
// کارت پروژه
|
||
yearLabel: 'سال:',
|
||
sqm: 'متر مربع',
|
||
|
||
// جزئیات پروژه
|
||
projectNotFound: 'این پروژه پیدا نشد',
|
||
projectNotFoundText: 'ممکن است نشانی تغییر کرده باشد. فهرست کامل پروژهها را ببینید.',
|
||
backToProjects: 'بازگشت به پروژهها',
|
||
specLocation: 'موقعیت',
|
||
specYear: 'سال',
|
||
specArea: 'زیربنا',
|
||
specFloors: 'تعداد طبقات',
|
||
specUnits: 'واحدها',
|
||
specClient: 'کارفرما',
|
||
breadcrumbAria: 'مسیر صفحه',
|
||
home: 'صفحه اصلی',
|
||
projects: 'پروژهها',
|
||
projectDetailsAria: 'جزئیات پروژه',
|
||
aboutProject: 'درباره پروژه',
|
||
similarProjectCta: 'پروژهای مشابه دارید؟',
|
||
relatedProjectsAria: 'پروژههای مرتبط',
|
||
otherProjects: 'پروژههای دیگر',
|
||
|
||
// مقاله و وبلاگ
|
||
articleNotFound: 'این مقاله پیدا نشد',
|
||
articleNotFoundText: 'فهرست کامل مقالات وبلاگ را ببینید.',
|
||
backToBlog: 'بازگشت به وبلاگ',
|
||
blog: 'وبلاگ',
|
||
relatedArticlesAria: 'مقالات مرتبط',
|
||
relatedArticles: 'مقالات مرتبط',
|
||
readArticlePrefix: 'خواندن مقاله',
|
||
articleImagePrefix: 'تصویر مقاله',
|
||
featuredArticle: 'مقاله ویژه',
|
||
readMore: 'ادامه مطلب',
|
||
draft: 'پیشنویس',
|
||
writeNewArticle: 'نوشتن مقاله جدید',
|
||
blogEmpty: 'هنوز مقالهای منتشر نشده است',
|
||
blogEmptyText: 'بهزودی نخستین نوشتههای ما اینجا منتشر میشود.',
|
||
articlesAria: 'مقالات',
|
||
|
||
// برچسبهای دسترسپذیری بخشها
|
||
statsAria: 'آمار و ارقام',
|
||
projectsListAria: 'فهرست پروژهها',
|
||
projectFilterAria: 'فیلتر وضعیت پروژه',
|
||
officesAria: 'دفاتر ما',
|
||
heroAria: 'معرفی گروه ساختمانی آرامش',
|
||
heroImageAlt: 'نمای شبانه برج مسکونی ساختهشده توسط گروه ساختمانی آرامش',
|
||
heroTitleAria: 'تیتر اصلی صفحه',
|
||
scrollDown: 'رفتن به بخش بعدی',
|
||
compareAria: 'مقایسه کانسپت و پروژه ساختهشده',
|
||
zoomImagePrefix: 'بزرگنمایی تصویر شماره',
|
||
viewImage: 'نمایش تصویر',
|
||
close: 'بستن',
|
||
prevImage: 'تصویر قبلی',
|
||
nextImage: 'تصویر بعدی',
|
||
prevTestimonial: 'نظر قبلی',
|
||
nextTestimonial: 'نظر بعدی',
|
||
selectTestimonialAria: 'انتخاب نظر',
|
||
testimonialByPrefix: 'نظر',
|
||
}
|
||
|
||
export type Dict = typeof fa
|
||
|
||
export const en: Dict = {
|
||
brandFallback: 'Aramesh Construction Group',
|
||
loading: 'Loading',
|
||
errorTitle: 'Could not reach the server',
|
||
errorText: 'Site content is loaded from the server; please check your internet connection or the server status.',
|
||
retry: 'Try again',
|
||
backToTop: 'Back to top',
|
||
switchLang: 'فا',
|
||
switchLangAria: 'Switch language to Persian (Farsi)',
|
||
understood: 'Got it',
|
||
|
||
mainNav: 'Main navigation',
|
||
mobileNav: 'Mobile navigation',
|
||
openMenu: 'Open menu',
|
||
closeMenu: 'Close menu',
|
||
callBrand: 'Call Aramesh Construction Group',
|
||
|
||
incompleteInfo: 'Incomplete information',
|
||
nameRequired: 'Please enter your full name (at least 3 characters).',
|
||
phoneInvalidTitle: 'Invalid phone number',
|
||
phoneInvalidText: 'Please enter a valid phone number so our experts can get in touch with you.',
|
||
submitErrorTitle: 'Error submitting the request',
|
||
formCheck: 'Please check the form and try again.',
|
||
connectionErrorTitle: 'Server connection error',
|
||
connectionErrorText: 'Could not reach the server. Please try again later.',
|
||
|
||
emailRequired: 'Please enter your email address to subscribe to the newsletter.',
|
||
emailInvalidTitle: 'Invalid email format',
|
||
emailInvalidText: 'Please enter your email correctly (e.g. example@domain.com).',
|
||
subscribeErrorTitle: 'Subscription error',
|
||
emailCheck: 'Please check your email and try again.',
|
||
|
||
fallbackGalleryTitle: 'Gallery',
|
||
fallbackGalleryLead: 'Frames from the construction sites and delivered projects of Aramesh Construction Group.',
|
||
fallbackTeamTitle: 'Our Team',
|
||
fallbackTeamLead: 'The people who make each project’s key decisions — and answer for them.',
|
||
fallbackTimelineTitle: 'Our Path',
|
||
fallbackTimelineLead: 'From a four-person office to 47 projects. Walk through the timeline of our work.',
|
||
fallbackFaqTitle: 'Frequently Asked Questions',
|
||
fallbackFaqLead: 'Short answers to the questions investors and buyers ask most.',
|
||
|
||
yearLabel: 'Year:',
|
||
sqm: 'm²',
|
||
|
||
projectNotFound: 'Project not found',
|
||
projectNotFoundText: 'The address may have changed. Browse the full list of projects.',
|
||
backToProjects: 'Back to projects',
|
||
specLocation: 'Location',
|
||
specYear: 'Year',
|
||
specArea: 'Built area',
|
||
specFloors: 'Floors',
|
||
specUnits: 'Units',
|
||
specClient: 'Client',
|
||
breadcrumbAria: 'Breadcrumb',
|
||
home: 'Home',
|
||
projects: 'Projects',
|
||
projectDetailsAria: 'Project details',
|
||
aboutProject: 'About the project',
|
||
similarProjectCta: 'Have a similar project in mind?',
|
||
relatedProjectsAria: 'Related projects',
|
||
otherProjects: 'More projects',
|
||
|
||
articleNotFound: 'Article not found',
|
||
articleNotFoundText: 'Browse the full list of blog articles.',
|
||
backToBlog: 'Back to blog',
|
||
blog: 'Blog',
|
||
relatedArticlesAria: 'Related articles',
|
||
relatedArticles: 'Related articles',
|
||
readArticlePrefix: 'Read article',
|
||
articleImagePrefix: 'Image of article',
|
||
featuredArticle: 'Featured article',
|
||
readMore: 'Read more',
|
||
draft: 'Draft',
|
||
writeNewArticle: 'Write a new article',
|
||
blogEmpty: 'No articles published yet',
|
||
blogEmptyText: 'Our first articles will be published here soon.',
|
||
articlesAria: 'Articles',
|
||
|
||
statsAria: 'Stats and figures',
|
||
projectsListAria: 'Project list',
|
||
projectFilterAria: 'Filter projects by status',
|
||
officesAria: 'Our offices',
|
||
heroAria: 'Introduction of Aramesh Construction Group',
|
||
heroImageAlt: 'Night view of a residential tower built by Aramesh Construction Group',
|
||
heroTitleAria: 'Main headline',
|
||
scrollDown: 'Go to the next section',
|
||
compareAria: 'Compare the concept with the built project',
|
||
zoomImagePrefix: 'Zoom image No.',
|
||
viewImage: 'View image',
|
||
close: 'Close',
|
||
prevImage: 'Previous image',
|
||
nextImage: 'Next image',
|
||
prevTestimonial: 'Previous testimonial',
|
||
nextTestimonial: 'Next testimonial',
|
||
selectTestimonialAria: 'Select testimonial',
|
||
testimonialByPrefix: 'Testimonial by',
|
||
}
|
||
|
||
export const dict = { fa, en }
|
||
export type DictKey = keyof Dict
|