در این تمرین شما یک TranslationService ارائه میدهید که اعضای دارای اشتراک به کمک آن از کیفیت مطلوب اطمینان حاصل میکنند.
شما یک API جادویی ترجمه پیدا کردهاید که میتواند هر درخواست ترجمه را در زمانی معقول برآورده کند و میخواهید از این فرصت بهره ببرید.
این API جادویی یک رابط بسیار ساده دارد:
api.fetch(text) ترجمهی text را دریافت میکند و دو مقدار برمیگرداند:
translation: خود ترجمهquality: کیفیت که بهصورت یک عدد بیان میشوداگر ترجمهای در دسترس نباشد (چون هنوز درخواست نشده است)، API یک خطا پرتاب میکند. این اتفاق زمانی هم رخ میدهد که متنی قابل ترجمه نباشد.
api.request(text, callback) ترجمهی text را درخواست میکند و وقتی آماده شد، callback را بدون هیچ مقداری فراخوانی میکند.
API مربوط به request ناپایدار است، یعنی گاهی API تابع callback را با یک خطا فراخوانی میکند. اگر چنین شد، اشکالی ندارد که دوباره درخواست کنید.
چون برخی کاربران قبلی هنگام برنامهنویسی تنبلی کردهاند و همیشه بدون اینکه بررسی کنند متن قبلاً ترجمه شده یا نه، درخواست ترجمه میفرستادهاند، API اگر متنی از قبل ترجمه شده باشد یک خطا برمیگرداند و دسترسی را برای همیشه بهطور کامل میبندد.
اینها نمونههایی از وظایفی هستند که با داستان سرویس ترجمه جور در میآیند:
اینها توصیهاند، نه قانون، دربارهی اصطلاحات تکرارشونده در دستورالعملها (از جمله توضیحات نوشتهشده در فایل اولیه)
TranslationService یا API میگویندasync است، اما هیچجا به این موضوع اشاره نمیشودcallback را با یک خطا فراخوانی میکند
همهی متنهایی که ترجمه میشوند، از کلینگون به انگلیسی هستند.
ترجمهی درست 'arlogh Qoylu'pu'? این است: How many times has it been heard?.