قدم چهاردهم، پشتیبانی دو زبان
در گزارش توسعهٔ چهاردهم، یکی از بخشهایی را تمام کردم که برای نزدیکشدن دلو به سافتلانچ مهم بود: پشتیبانی کامل دو زبان. این مرحله فقط ترجمهکردن چند دکمه نبود. میخواستم متنها، فونتها و نحوهٔ نمایش آنها با زبان انتخابشده هماهنگ باشند. وقتی منو، فروشگاه و قسمتهای مختلف بازی کنار هم قرار میگیرندد، پراکندهبودن متنها خیلی زود خودش را نشان میدهد. برای همین متنها را از حالت ثابت داخل هر صفحه بیرون آوردم تا بتوانم آنها را با یک روش مشترک مدیریت کنم و تغییر زبان، معنی مشخصی در سراسر رابط داشته باشد.
یک کلید برای هر متن
روش من بر پایهٔ فایلهای JSON هست. هر متن یک کلید یکتا داره و رشتهٔ مربوط به هر زبان از روی همان کلید پیدا میشود. بهجای نوشتن مستقیم جمله در هر بخش، تکستمشپرا کلید را میگیرد و متن زبان انتخابشده را نمایش میدهد. برای من فایدهٔ اصلی این بود که جای استفادهٔ متن و خود ترجمه از هم جدا باشند. اگر عبارتی نیاز به اصلاح داشته باشد، باید سراغ دادهٔ متن بروم، نه اینکه تکتک صفحهها را برای همان جمله پیدا کنم. این ساختار، روش سفارشی پروژهٔ من هست و از همان چیزی حرف میزنم که در دلو ساختهام.
فونت، اتصال حروف و جهت جمله
فونت هم بخش مستقلی از کار بود. امکان گذاشتن فونت جدا برای هر زبان را اضافه کردم تا نمایش حروف به یک فونت نامناسب وابسته نماند. برای متن فارسی، فقط موجودبودن حرفها کافی نیست؛ اتصال حروف، فاصلهها و جهت متن هم باید درست باشند. در گزارش آن مرحله دربارهٔ نیازهای فارسی و عربی برای همین نمایش صحبت کردم. این اشاره به رفتار نوشتار هست، نه اعلام اضافهشدن زبان سوم. دلو در آن گزارش دو زبانه هست. اگر متن درست ترجمه شده باشد اما حروف جدا یا جهت جمله اشتباه دیده بشه، بازیکن هنوز با یک رابط خوانا روبهرا نیست.
متنها بخشهای پروژه را جمع کردند
این مرحله برایم حس جمعشدن قسمتهای پروژه را داشت. پیشتر روی میز بازی، منو و اقتصاد کار کرده بودم؛ حالا متنها باید تجربهٔ آن بخشها را یکدستتر میکردند. یک عبارت در فروشگاه باید همانقدر قابل فهم باشد که پیام داخل بازی، حتی اگر طول متن فارسی و انگلیسی فرق داشته باشد. رسیدن به پشتیبانی دو زبان به معنی پایان تمام کارهای رابط نیست، ولی یکی از قدمهای مشخص نزدیکشدن به عرضه بود. من دوست دارم این پیشرفتها را با همان جزئیاتی روایت کنم که واقعاً ساختهام. برای دیدن مسیر دلو و قسمتهایی که این متنها به آنها وصل میشوند، به صفحهٔ دلو سر بزنید.
مثال عملی بازی دو زبانه
اگر بخواهی بازی دو زبانه را در یک پروژهٔ کوچک بررسی کنی، بهتر است از یک موقعیت محدود شروع کنی. متن یک دکمه از فارسی به انگلیسی عوض میشود و عرض آن در موبایل کوچک تغییر میکند. ورودی را ثابت نگه دار و نتیجهٔ مورد انتظار را پیش از اجرای نسخه بنویس. این کار کمک میکند تفاوت میان رفتار منطقی و چیزی که صرفاً روی صفحه دیده میشود روشن بماند. سناریوی این بخش آموزشی است و ادعای نتیجهٔ واقعی یک آزمایش روی کاربران دلو ندارد.
خطای رایج و علت آن
چیدمان ثابت با طول متفاوت ترجمه، متن را میبُرد یا محل لمس را نامناسب میکند. این خطا معمولاً وقتی پنهان میماند که فقط مسیر موفق و ظاهر نهایی را ببینیم. برای پیدا کردن علت، آخرین وضعیت درست را از نخستین وضعیت نادرست جدا کن و ببین تغییر دقیقاً در کدام مرز رخ داده است. کلید ترجمه باید پایدار باشد و متن نمایشی در منطق قانون استفاده نشود. اگر این تفاوت در قرارداد مشخص نباشد، اصلاح یک نشانه ممکن است همان مسئله را در بخش دیگری دوباره ایجاد کند.
چطور نتیجه را بررسی کنیم؟
رشتههای بلند، متن ترکیبی، فونت و جهت رابط را با هر دو زبان بررسی کن. اجرای یکباره برای نتیجهگیری کافی نیست؛ یک بار مسیر معمول و بار دیگر همان موقعیت را با ورودی مرزی یا تکرار اقدام بررسی کن. اگر نتیجه فرق دارد، ورودی و شرایط اجرا را همراه خروجی نگه دار تا مقایسه قابل بازسازی باشد. جدول زیر خلاصهٔ مشخصات همین سناریو است و برای ثبت نتیجهٔ بررسی به کار میآید.
| بخش بررسی | آنچه باید ثبت شود |
|---|---|
| موقعیت آزمایشی | متن یک دکمه از فارسی به انگلیسی عوض میشود و عرض آن در موبایل کوچک تغییر میکند. |
| ریسک اصلی | چیدمان ثابت با طول متفاوت ترجمه، متن را میبُرد یا محل لمس را نامناسب میکند. |
| روش بررسی | رشتههای بلند، متن ترکیبی، فونت و جهت رابط را با هر دو زبان بررسی کن. |
| مرز نتیجهگیری | کلید ترجمه باید پایدار باشد و متن نمایشی در منطق قانون استفاده نشود. |
پرسشهای کاربردی دربارهٔ بازی دو زبانه
از کجا شروع کنم؟
از همان موقعیت محدود این مطلب شروع کن: متن یک دکمه از فارسی به انگلیسی عوض میشود و عرض آن در موبایل کوچک تغییر میکند. ابتدا نتیجهٔ مورد انتظار را مشخص کن و بعد سراغ پیادهسازی یا ابزار برو. وقتی مسیر پایه قابل توضیح و بررسی شد، میتوان حالتهای بیشتری اضافه کرد. ساخت همهٔ حالتها از ابتدا، فهم علت خطا را سختتر میکند.
چه زمانی میتوانم بگویم این بخش درست کار میکند؟
زمانی که رفتار در موقعیت تعریفشده با قرارداد سازگار باشد و محدودیتهای آن روشن بمانند. رشتههای بلند، متن ترکیبی، فونت و جهت رابط را با هر دو زبان بررسی کن. موفقیت در این آزمون دربارهٔ همان سناریو شاهد میدهد؛ از آن نمیتوان بدون بررسی دربارهٔ همهٔ دستگاهها، همهٔ قوانین محلی یا همهٔ حجمهای داده نتیجه گرفت. کلید ترجمه باید پایدار باشد و متن نمایشی در منطق قانون استفاده نشود.
برای ادامهٔ همین موضوع، هستهٔ مشترک دلو؛ یک میز برای چند بازی و بازی دلو را ببین. زمینهٔ ساخت این پروژهها و معرفی سازنده در صفحهٔ کیان پاک نعمت آمده است.




