Phase 2 of turning the game into the company landing page. - Delete the Apache motorcycle model, its BIKE handling spec, the motorcycle row in the factory yard, rider and lean animation, and its prompt and dialogue strings. - The garage now holds cars only; the oriented-box collision, traffic lane checks and other vehicles are unchanged. - Rework the vehicle tests to cover gaps with a car instead of a bike, and add a check that no motorcycle code or text remains. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
455 lines
25 KiB
JavaScript
455 lines
25 KiB
JavaScript
// Every piece of Persian text the game shows: menus, HUD, prompts, dialogue, missions and the
|
||
// scenery text painted onto 3D props. Company and product content lives in config/company.js,
|
||
// and place names come from the map data. To add a language, copy this file with the same keys.
|
||
// Entries that need values are functions; everything else is a plain string.
|
||
|
||
import { COMPANY } from '../config/company.js';
|
||
|
||
export const strings = {
|
||
common: {
|
||
close: 'بستن',
|
||
cancel: 'انصراف',
|
||
gotIt: 'متوجه شدم',
|
||
mashhad: 'مشهد',
|
||
iran: 'ایران',
|
||
walking: 'پیاده',
|
||
open: 'باز',
|
||
closed: 'بسته',
|
||
allDay: 'شبانهروزی',
|
||
/** @type {(from: string, to: string) => string} */
|
||
hours: (from, to) => `${from} تا ${to}`,
|
||
},
|
||
units: {
|
||
/** @type {(n: string) => string} */
|
||
metres: (n) => `${n} متر`,
|
||
/** @type {(n: string) => string} */
|
||
kilometres: (n) => `${n} کیلومتر`,
|
||
/** @type {(n: string) => string} */
|
||
hetoman: (n) => `${n} هتومان`,
|
||
/** @type {(n: string) => string} */
|
||
rial: (n) => `${n} ریال`,
|
||
hetomanName: 'هتومان',
|
||
},
|
||
app: {
|
||
preparing: 'در حال آمادهسازی بازی…',
|
||
buildingCity: 'در حال ساختن شهر مشهد…',
|
||
/** @type {(error: string) => string} */
|
||
failed: (error) => `بازی اجرا نشد: ${error}`,
|
||
retry: 'تلاش دوباره',
|
||
noWebgl: 'مرورگر شما گرافیک سهبعدی (WebGL) را اجرا نمیکند. شتابدهی گرافیکی را فعال کنید.',
|
||
dataFailed: 'بارگذاری داده ناموفق بود',
|
||
updateReady: 'نسخهٔ جدید بازی آماده است ',
|
||
update: 'بهروزرسانی',
|
||
osmCredit: 'نقشه: © مشارکتکنندگان OpenStreetMap',
|
||
/** @type {(imagery: string) => string} */
|
||
osmImageryCredit: (imagery) =>
|
||
`نقشه: © مشارکتکنندگان OpenStreetMap · تصویر ماهوارهای: ${imagery}`,
|
||
},
|
||
briefing: {
|
||
robotAlt: `روبات راهنمای ${COMPANY.shortName}`,
|
||
tag: 'عملیات ۰۱ · خراسان رضوی',
|
||
title: 'عملیات مشهد',
|
||
subtitle: `${COMPANY.shortName} · شکار دستگاههای وندینگ`,
|
||
start: 'شروع عملیات',
|
||
realWorld: '📍 بازی در دنیای واقعی (GPS)',
|
||
install: '⬇ نصب بازی روی گوشی',
|
||
keys: 'حرکت: W A S D · دویدن: Shift · دوربین: ماوس · سوار و پیاده شدن: F · خرید: E · نقشه: M',
|
||
lines: [
|
||
`نقطهٔ شروع: ${COMPANY.name}، بزرگراه مشهد–چناران`,
|
||
'تیم: پدر و فرزند · روبات راهنما در دستگاهها منتظر شماست',
|
||
`هدف: از کارخانه تا بوستان ملت و دانشگاه فردوسی (حدود ۲۰ کیلومتر) بروید و دستگاههای ${COMPANY.shortName} را در پارک، مدرسه، دانشگاه، ایستگاه مترو و مرکز خرید پیدا کنید.`,
|
||
'هر خرید امتیاز دارد؛ کشف مکان تازه و ترکیب نوشیدنی و خوراکی امتیاز بیشتری دارد.',
|
||
'بودجه: ۵۰۰ هتومان · مأموریتها پاداش نقدی دارند.',
|
||
'رفتوآمد: پیاده یا با ماشین. نقشهٔ گوشهٔ صفحه را بزنید تا آدرس دستگاهها را ببینید.',
|
||
],
|
||
},
|
||
toolbar: {
|
||
showroom: 'مدلهای کارخانه · Q',
|
||
realWorld: '📍 دنیای واقعی',
|
||
camera: '📷 دوربین',
|
||
stableOn: '🎯 پایدار: روشن',
|
||
stableOff: '🎯 پایدار: خاموش',
|
||
soundOn: 'صدا: روشن',
|
||
soundOff: 'صدا: خاموش',
|
||
soundUnavailable: 'صدا در دسترس نیست',
|
||
graphics: 'گرافیک',
|
||
graphicsLow: 'گرافیک: سبک',
|
||
graphicsHigh: 'گرافیک: کامل',
|
||
restart: 'شروع دوباره',
|
||
},
|
||
status: {
|
||
budget: 'بودجه',
|
||
budgetStart: '۵۰۰',
|
||
clock: 'ساعت',
|
||
clockStart: '۰۸:۳۰',
|
||
speed: 'سرعت',
|
||
speedStart: '۰',
|
||
rankStart: 'تازهوارد',
|
||
xpStart: '۰ XP',
|
||
missions: 'مأموریتها',
|
||
run: 'دویدن',
|
||
},
|
||
hud: {
|
||
openMap: 'باز کردن نقشهٔ شهر (M)',
|
||
mapHint: 'نقشه · M',
|
||
interact: 'تعامل با بازی',
|
||
compass: { 0: 'شمال', 90: 'شرق', 180: 'جنوب', 270: 'غرب' },
|
||
// Single-letter north marker on the minimap.
|
||
minimapNorth: 'ش',
|
||
/** @type {(name: string) => string} */
|
||
factory: (name) => `کارخانهٔ ${name}`,
|
||
/** @type {(street: string) => string} */
|
||
street: (street) => `مشهد · ${street}`,
|
||
outskirts: 'حومهٔ مشهد',
|
||
metroPrefix: 'ایستگاه مترو ',
|
||
},
|
||
travel: {
|
||
/** @type {(vehicle: string) => string} */
|
||
inVehicle: (vehicle) => `در ${vehicle} · F برای پیاده شدن`,
|
||
},
|
||
prompts: {
|
||
/** @type {(model: string) => string} */
|
||
showroom: (model) => `Q · معرفی ${model} و پرسیدن قیمت`,
|
||
/** @type {(machine: string) => string} */
|
||
buy: (machine) => `E · خرید از ${COMPANY.shortName} · ${machine}`,
|
||
/** @type {(hours: string) => string} */
|
||
closed: (hours) => `دستگاه بسته است · ${hours}`,
|
||
/** @type {(vehicle: string) => string} */
|
||
getIn: (vehicle) => `F · سوار ${vehicle} شو`,
|
||
getOutNearMachine: 'F · پیاده شو؛ دستگاه نزدیک است',
|
||
},
|
||
vehicles: {
|
||
bmw: 'بیامو',
|
||
bugatti: 'بوگاتی',
|
||
lamborghini: 'لامبورگینی',
|
||
mazda: 'مزدا',
|
||
nissan: 'نیسان',
|
||
traffic: 'ماشین',
|
||
},
|
||
map: {
|
||
close: 'بستن',
|
||
help: 'کشیدن: جابهجایی · دو انگشت یا چرخ ماوس: زوم · لمس یا کلیک روی دستگاه: انتخاب',
|
||
machines: `دستگاههای ${COMPANY.shortName}`,
|
||
route: 'مسیریابی تا اینجا',
|
||
routeActive: 'مسیر فعال است ✓',
|
||
openNow: 'الان باز است',
|
||
closedNow: 'الان بسته است',
|
||
/** @type {(hours: string, open: boolean, note: string) => string} */
|
||
details: (hours, open, note) =>
|
||
`🕒 ${hours} · ${open ? 'الان باز است' : 'الان بسته است'} · ${note}`,
|
||
},
|
||
lists: {
|
||
drink: 'نوشیدنی',
|
||
snack: 'خوراکی',
|
||
noFunds: ' · موجودی کافی نیست',
|
||
/** @type {(category: string, open: boolean) => string} */
|
||
machineState: (category, open) => `${category} · ${open ? 'باز' : 'بسته'}`,
|
||
},
|
||
install: {
|
||
title: 'نصب روی آیفون',
|
||
shareBefore: 'در Safari دکمهٔ ',
|
||
shareAfter: ' (مربع با فلش رو به بالا) را بزنید.',
|
||
addBefore: 'گزینهٔ ',
|
||
addAfter: ' را انتخاب کنید.',
|
||
note: `${COMPANY.shortName} مثل یک اپ روی صفحهٔ اصلی گوشی شما قرار میگیرد و آفلاین هم اجرا میشود.`,
|
||
},
|
||
realIntro: {
|
||
title: 'بازی در دنیای واقعی',
|
||
body: `با روشن کردن این حالت، موقعیت گوشی شما (GPS) روی نقشهٔ بازی نمایش داده میشود. وقتی واقعاً به محل یک دستگاه ${COMPANY.shortName} برسید، میتوانید خرید کنید و ۲۰۰ امتیاز اضافه بگیرید.`,
|
||
safety: [
|
||
'هنگام راه رفتن به خیابان و ماشینها نگاه کنید، نه به صفحه.',
|
||
'بچهها فقط همراه یک بزرگتر بازی کنند.',
|
||
'هنگام رانندگی از این حالت استفاده نکنید؛ در سرعت بالا خرید غیرفعال میشود.',
|
||
'موقعیت شما فقط روی همین گوشی میماند و جایی ارسال نمیشود.',
|
||
],
|
||
accept: 'قبول دارم، شروع کن',
|
||
},
|
||
real: {
|
||
on: 'حالت دنیای واقعی روشن شد؛ از چشم خودمون میبینیم و هر جا راه بریم، توی بازی هم همونجاییم.',
|
||
/** @type {(problem: string) => string} */
|
||
cameraFailed: (problem) => `${problem} فعلاً شهر سهبعدی رو از چشم خودمون میبینیم.`,
|
||
cameraOn: 'دوربین روشن شد! گوشی رو صاف جلوی خودت بگیر؛ ستون نورانی طلایی جای دستگاهه.',
|
||
noOrientation: 'حسگر جهت گوشی جواب نمیده؛ برای چرخیدن، صفحه رو با انگشت بکش.',
|
||
noVirtualCar: 'توی حالت دنیای واقعی پیاده راه میریم؛ ماشین مجازی لازم نیست.',
|
||
locating: 'در حال یافتن موقعیت…',
|
||
/** @type {(distance: string) => string} */
|
||
outOfArea: (distance) => `📍 خارج از محدودهٔ بازی · ${distance} تا نزدیکترین دستگاه`,
|
||
/** @type {(metres: string, fast: boolean) => string} */
|
||
accuracy: (metres, fast) => `📍 GPS ±${metres} متر${fast ? ' · حرکت سریع' : ''}`,
|
||
noGps: 'این دستگاه موقعیتیابی (GPS) ندارد.',
|
||
needsHttps: 'موقعیتیابی فقط روی HTTPS کار میکند؛ بازی را از نشانی https:// باز کنید.',
|
||
denied:
|
||
'اجازهٔ دسترسی به موقعیت داده نشد. در تنظیمات مرورگر و گوشی، Location را برای این سایت مجاز کنید. (کد ۱)',
|
||
unavailable:
|
||
'موقعیت در دسترس نیست. Location (GPS) گوشی را روشن کنید؛ روی کامپیوتر معمولاً موقعیتیابی کار نمیکند. (کد ۲)',
|
||
timeout: 'هنوز سیگنال GPS نرسیده… در فضای باز و کنار پنجره سریعتر پیدا میشود. (کد ۳)',
|
||
cameraNeedsHttps: 'این مرورگر به دوربین دسترسی نمیدهد (HTTPS لازم است).',
|
||
cameraDenied: 'اجازهٔ دوربین داده نشد؛ از تنظیمات مرورگر اجازه بدهید.',
|
||
cameraBusy: 'دوربین باز نشد؛ برنامهٔ دیگری از آن استفاده نمیکند؟',
|
||
},
|
||
shop: {
|
||
close: 'بستن',
|
||
note: '۱۰ هتومان = ۱۰۰٬۰۰۰ ریال · مبالغ نمایشیاند و پرداخت واقعی انجام نمیشود.',
|
||
/** @type {(icon: string, category: string, hours: string) => string} */
|
||
category: (icon, category, hours) => `${icon} ${category} · ساعت کاری ${hours}`,
|
||
/** @type {(machine: string) => string} */
|
||
title: (machine) => `${COMPANY.shortName} · ${machine}`,
|
||
/** @type {(note: string, balance: string) => string} */
|
||
balance: (note, balance) => `${note} · موجودی شما: ${balance}`,
|
||
},
|
||
payment: {
|
||
reader: `کارتخوان ${COMPANY.shortName}`,
|
||
swipe: 'کشیدن کارت · C',
|
||
approaching: 'در حال نزدیک شدن به کارتخوان…',
|
||
success: 'پرداخت موفق ✓ محصول در حال تحویل است',
|
||
swipeHint: 'کارت را بکشید: دکمهٔ «کشیدن کارت» یا کلید C',
|
||
realPurchase: 'خرید در دنیای واقعی',
|
||
},
|
||
rewards: {
|
||
missionDone: 'مأموریت انجام شد',
|
||
/** @type {(xp: string, cash: string) => string} */
|
||
missionReward: (xp, cash) => `+${xp} XP · +${cash} پاداش`,
|
||
rankUp: 'ارتقای درجه',
|
||
findMore: 'دستگاههای بیشتری پیدا کن',
|
||
},
|
||
end: {
|
||
title: 'پایان عملیات',
|
||
again: 'عملیات دوباره',
|
||
keepExploring: 'ادامهٔ گشت در شهر',
|
||
success: 'عملیات موفق',
|
||
outOfBudget: 'پایان بودجه',
|
||
successHeading: 'عملیات مشهد کامل شد!',
|
||
budgetHeading: 'بودجهٔ امروز تمام شد',
|
||
successText:
|
||
'همهٔ مأموریتهای محدودهٔ بوستان ملت انجام شد. مناطق دیگر مشهد بهزودی باز میشوند.',
|
||
budgetText: 'دیگر نمیتوانید از دستگاهها خرید کنید. امتیاز امروز:',
|
||
score: 'امتیاز',
|
||
rank: 'درجه',
|
||
purchases: 'خریدها',
|
||
places: 'مکانهای کشفشده',
|
||
missions: 'مأموریتها',
|
||
remaining: 'باقیمانده',
|
||
/** @type {(done: string, total: string) => string} */
|
||
outOf: (done, total) => `${done} از ${total}`,
|
||
},
|
||
showroom: {
|
||
/** @type {(model: string) => string} */
|
||
heading: (model) => `نمایشگاه کارخانه · ${model}`,
|
||
close: 'بستن معرفی دستگاه',
|
||
models: 'مدل دستگاه',
|
||
/** @type {(price: string) => string} */
|
||
price: (price) => `قیمت خود دستگاه: ${price}`,
|
||
displayOnly: 'این بخش معرفی محصول است؛ خرید واقعی انجام نمیشود و بودجهٔ هتومان تغییر نمیکند.',
|
||
askPrice: 'روبات، قیمتش چنده؟',
|
||
askFeatures: 'روبات، امکاناتش چیه؟',
|
||
robotAlt: 'روبات راهنمای نمایشگاه',
|
||
greeting: 'روبات: سلام! دربارهٔ قیمت و امکانات این مدل از من بپرس.',
|
||
allModels: 'روبات: سلام! قیمت و امکانات هر سه مدل را میتوانم توضیح بدهم.',
|
||
whatToKnow: 'روبات: دربارهٔ این مدل چی میخواهی بدانی؟',
|
||
/** @type {(answer: string) => string} */
|
||
robotSays: (answer) => `روبات: ${answer}`,
|
||
noImage: 'نمای سهبعدی این مدل داخل کارخانه موجود است؛ فایل تصویر هنوز اضافه نشده.',
|
||
views: { image: 'نمای اصلی', imageAlt: 'رنگ سفید', gif: 'نمای متحرک' },
|
||
/** @type {(model: string, price: string) => string} */
|
||
priceAnswer: (model, price) =>
|
||
`قیمت ${model}، ${price} است. این قیمت خود دستگاه به ریال است و از بودجهٔ بازی کم نمیشود.`,
|
||
/** @type {(model: string, description: string, features: string) => string} */
|
||
featuresAnswer: (model, description, features) =>
|
||
`${model}: ${description} امکانات: ${features}.`,
|
||
featureSeparator: '، ',
|
||
},
|
||
speakers: { robot: 'روبات', father: 'پدر', child: 'بچه' },
|
||
dialogue: {
|
||
showroomIntro: `سه نمونهٔ ۳۵، ۴۸ و ۶۰ کانال توی حیاط کنار ماشین هستند. دکمهٔ مدلهای کارخانه یا Q را بزن تا قیمت و امکاناتشان را بگویم.`,
|
||
childAsksFactory: `بابا، اینجا همون کارخونهایه که دستگاههای ${COMPANY.shortName} رو میسازه؟`,
|
||
fatherAnswersFactory:
|
||
'آره! سالن تولید اونوره؛ دستگاه وندینگ هم توی دفتر فنی مهندسیه. بریم ببینیم!',
|
||
childAsksArrival: 'اون ماشین مشکیه کیه داره میاد تو؟',
|
||
fatherAnswersArrival: 'آقای محمدیه، مدیر شرکت. بعداً بریم اتاقش سلام کنیم.',
|
||
robotHello: `سلام! من روبات راهنمای ${COMPANY.shortName}م؛ تو دستگاه دفتر فنی زندگی میکنم!`,
|
||
/** @type {(company: string) => string} */
|
||
robotWelcome: (company) =>
|
||
`به ${company} خوش اومدین. بچههای همین دفتر نرمافزار دستگاهها رو مینویسن.`,
|
||
robotFirstBuy: 'اول از همین دستگاه یه چیزی بخرین؛ کلید E رو بزنین.',
|
||
robotGoToPark:
|
||
'ماشینتون جلوی همین ساختمونه. با F سوار شین و برین بوستان ملت؛ من توی همهٔ دستگاهها منتظرتونم!',
|
||
/** @type {(hours: string) => string} */
|
||
robotClosed: (hours) => `سلام! متأسفم، این دستگاه الان بسته است. ساعت کاری: ${hours}.`,
|
||
/** @type {(machine: string) => string} */
|
||
robotWelcomeBack: (machine) => `سلام دوباره! به دستگاه ${machine} خوش اومدین.`,
|
||
/** @type {(note: string) => string} */
|
||
robotNote: (note) => `${note}. برای خرید E رو بزنین.`,
|
||
robotAgain: 'باز هم خوش اومدین! برای خرید E رو بزنین.',
|
||
robotBye: 'خداحافظ! مسیر طلایی رو دنبال کنین.',
|
||
/** @type {(machine: string, hours: string) => string} */
|
||
targetClosed: (machine, hours) =>
|
||
`${machine} الان بسته است (${hours}). از نقشه مقصد دیگری انتخاب کن.`,
|
||
longWay: 'راه طولانیه؛ بهتره با ماشین بریم.',
|
||
carOn: 'کمربندها رو ببندیم! مسیر طلایی روی زمین راه رو نشون میده.',
|
||
stopFirst: 'اول نگه دار، بعد پیاده میشویم.',
|
||
tooFastToBuy: 'داریم سریع حرکت میکنیم؛ اول بایستیم، بعد خرید کنیم.',
|
||
/** @type {(hours: string) => string} */
|
||
machineClosed: (hours) => `این دستگاه الان بسته است. ساعت کاری: ${hours}.`,
|
||
childSwipes: 'بابا، کارت رو بده من بکشم!',
|
||
/** @type {(icon: string, product: string) => string} */
|
||
childGotIt: (icon, product) => `${icon} ${product} گرفتم! مرسی بابا.`,
|
||
/** @type {(mission: string) => string} */
|
||
nextMission: (mission) => `مأموریت بعدی: ${mission}`,
|
||
/** @type {(machine: string, distance: string) => string} */
|
||
routeSet: (machine, distance) =>
|
||
`مسیر تا ${machine} رو گذاشتم؛ ${distance}. دنبال خط طلایی بریم.`,
|
||
},
|
||
ranks: ['تازهوارد', 'کاوشگر', 'راهبلد', 'شکارچی دستگاه', 'استاد نقشه', 'افسانهٔ مشهد'],
|
||
bonuses: {
|
||
purchase: 'خرید موفق',
|
||
newPlace: 'کشف مکان جدید',
|
||
combo: 'ترکیب نوشیدنی و خوراکی',
|
||
allCategories: 'همهٔ انواع مکان',
|
||
},
|
||
missions: {
|
||
factory: 'در دفتر فنی مهندسی کارخانه از دستگاه وندینگ خرید کن',
|
||
first: 'با ماشین تا بوستان ملت برو و اولین خرید شهری را انجام بده',
|
||
school: 'قبل از تعطیلی مدرسه (۱۳:۳۰) از دستگاه مدرسه خرید کن',
|
||
campus: 'به دانشگاه فردوسی برو و یک خوراکی بخر',
|
||
metro: 'از دستگاه ایستگاه مترو آزادی خرید کن',
|
||
mall: 'با ماشین تا مشهد مال برو و خرید کن',
|
||
explorer: 'از ۵ مکان متفاوت شهر خرید کن',
|
||
},
|
||
snacks: {
|
||
juice: 'آبمیوه',
|
||
water: 'آب معدنی',
|
||
milk: 'شیر کاکائو',
|
||
tea: 'چای سرد',
|
||
lemonade: 'لیموناد',
|
||
biscuit: 'بیسکویت',
|
||
chocolate: 'شکلات',
|
||
nuts: 'آجیل',
|
||
cake: 'کیک',
|
||
},
|
||
categories: {
|
||
factory: 'کارخانه',
|
||
park: 'پارک',
|
||
university: 'دانشگاه',
|
||
school: 'مدرسه',
|
||
metro: 'ایستگاه مترو',
|
||
mall: 'مرکز خرید',
|
||
test: 'نقطهٔ آزمایشی GPS',
|
||
},
|
||
places: {
|
||
officeMachine: 'دستگاه دفتر فنی مهندسی',
|
||
/** @type {(address: string) => string} */
|
||
officeAddress: (address) => `${address}، ساختمان اداری، دفتر فنی مهندسی`,
|
||
officeNote: 'دستگاه دفتر برنامهنویسها؛ نصف قیمت برای مهمانهای کارخانه',
|
||
/** @type {(n: string) => string} */
|
||
testPoint: (n) => `نقطهٔ آزمایشی ${n}`,
|
||
/** @type {(coords: string) => string} */
|
||
testAddress: (coords) => `کنار کارخانهٔ ${COMPANY.shortName} · ${coords}`,
|
||
testNote: 'برای آزمایش حالت دنیای واقعی: با گوشی تا اینجا راه بروید',
|
||
comingSoon: 'خارج از محدودهٔ فعلی · بهزودی',
|
||
parkSign: 'بوستان ملت',
|
||
},
|
||
cities: {
|
||
mashhad: 'مشهد',
|
||
tehran: 'تهران',
|
||
isfahan: 'اصفهان',
|
||
shiraz: 'شیراز',
|
||
tabriz: 'تبریز',
|
||
ahvaz: 'اهواز',
|
||
kerman: 'کرمان',
|
||
rasht: 'رشت',
|
||
yazd: 'یزد',
|
||
zahedan: 'زاهدان',
|
||
kermanshah: 'کرمانشاه',
|
||
bandarAbbas: 'بندرعباس',
|
||
},
|
||
factory: {
|
||
readyToInstall: 'آمادهٔ نصب',
|
||
zones: [
|
||
['خمکاری', 'ورقکاری بدنهٔ دستگاه'],
|
||
['برش لیزر', 'برش ورق و قطعات'],
|
||
['رنگکاری', 'کابین رنگ پودری'],
|
||
['یخچالسازی', 'کمپرسور و عایقکاری'],
|
||
['مونتاژ', 'خط مونتاژ نهایی'],
|
||
['بستهبندی', 'ارسال به شهر'],
|
||
],
|
||
signs: {
|
||
engineering: ['دفتر فنی مهندسی', 'Engineering'],
|
||
accounting: ['واحد حسابداری', 'Accounting'],
|
||
management: ['مدیریت', 'آقای محمدی'],
|
||
nameplate: ['محمدی', 'مدیر شرکت'],
|
||
},
|
||
manager: { name: 'آقای محمدی', role: 'مدیر شرکت' },
|
||
staff: {
|
||
hamed: {
|
||
name: 'حامد',
|
||
lines: [
|
||
'سلام! من حامدم. رابط کاربری صفحهٔ لمسی دستگاهها رو با React میسازم.',
|
||
'هر چی روی صفحهٔ دستگاه میبینین، از همین مانیتور اومده!',
|
||
],
|
||
},
|
||
ryan: {
|
||
name: 'رایان',
|
||
lines: ['سلام! من رایانم. سرور پرداخت و گزارش فروش دستگاهها رو با Go مینویسم.'],
|
||
},
|
||
alireza: {
|
||
name: 'علیرضا',
|
||
lines: [
|
||
'سلام! علیرضام. فریمور بُرد کنترل دستگاه با C++ ـه؛ الان دارم موتورهای تحویل کالا رو تنظیم میکنم.',
|
||
],
|
||
},
|
||
reza: {
|
||
name: 'رضا',
|
||
lines: [
|
||
'سلام، خوش اومدین. من رضام؛ کد C++ سنسورها و دمای یخچال دستگاه با منه.',
|
||
'دستگاه وندینگ همین دفتر کنار دره؛ از اون خرید کنین!',
|
||
],
|
||
},
|
||
mohammad: {
|
||
name: 'محمد',
|
||
lines: [`سلام! من محمدم. به دفتر فنی مهندسی ${COMPANY.shortName} خوش اومدین!`],
|
||
},
|
||
},
|
||
accounting: {
|
||
label: 'واحد حسابداری',
|
||
lines: ['سلام! اینجا فروش همهٔ دستگاهها ثبت میشه. هر خریدی بکنین، فاکتورش اینجا میاد!'],
|
||
},
|
||
managerLines: [
|
||
`سلام، خوش اومدین! من محمدیام، مدیر ${COMPANY.shortName}.`,
|
||
'امروز چهل نفر توی سالن تولید کار میکنن: خمکاری، برش، رنگ، یخچالسازی و مونتاژ.',
|
||
'یه سر به دفتر فنی بزنین و از دستگاهش خرید کنین؛ بعد برین سراغ دستگاههای شهر!',
|
||
],
|
||
truck: 'بابا ببین! کامیون داره دستگاههای بستهبندیشده رو بار میزنه که ببره شهر!',
|
||
// One comment per production area, spoken the first time the family walks in.
|
||
areaTalks: [
|
||
'اینجا خمکاریه؛ ورقهای فلزی بدنهٔ دستگاه رو با پرس خم میکنن.',
|
||
'دستگاه برش لیزر رو ببین! ورق رو مثل کاغذ میبُره.',
|
||
`این کابین رنگه؛ بدنهها اینجا رنگ برند ${COMPANY.shortName} رو میگیرن.`,
|
||
'یخچالسازی! برای همینه که نوشیدنیهای دستگاه همیشه خنکن.',
|
||
'خط مونتاژ: روباتها و کارگرها قطعهها رو کنار هم میذارن و دستگاه کامل میشه.',
|
||
],
|
||
// Scenery text painted on office screens and boards.
|
||
decor: {
|
||
invoices: [
|
||
'فاکتور دستگاه مبلغ',
|
||
'۱۰۴۲ بوستان ملت ۴۸۰',
|
||
'۱۰۴۳ دانشگاه فردوسی ۳۲۰',
|
||
'۱۰۴۴ مترو آزادی ۲۹۰',
|
||
'۱۰۴۵ مشهد مال ۶۱۰',
|
||
'۱۰۴۶ مدرسه راحیل ۱۸۰',
|
||
'جمع ۱۸۸۰',
|
||
],
|
||
dashboard: [
|
||
'فروش امروز: ۱۲۸ دستگاه',
|
||
'تولید هفته: ۴۶ دستگاه',
|
||
'ارسال شده: ۳۸',
|
||
'',
|
||
'▇▇▇▇▇▇▇▇▇▇▇ خم',
|
||
'▇▇▇▇▇▇▇▇▇ برش',
|
||
'▇▇▇▇▇▇▇ رنگ',
|
||
],
|
||
sprintTitle: 'اسپرینت ۱۴: دستگاه نسل جدید',
|
||
sprintItems: ['صفحهٔ لمسی جدید ← React', 'سرویس پرداخت ← Go', 'فریمور موتور و سنسور ← C++'],
|
||
},
|
||
},
|
||
};
|