تعرض المدونات عبارة «٥ دقائق قراءة» فوق المقال. يأتي الرقم من عدّاد كلمات، ولا يشك فيه أحد. حتى يكون النص بالفارسية.
ما وجدناه في المصدر
أثناء إعداد هذه المدونة، استخدمنا s.metadata() من Velite. تعد وثائقها بإرجاع readingTime وwordCount، وهي تفعل ذلك فعلًا. لكن المصدر المثبت يوضح طريقة الحساب:
var wordLength = (str) => {
const reWord = /['’]?([a-zA-Z]+(?:['’]?[a-zA-Z]+)*)/g;
const words = str.match(reWord) || [];
return words.length;
};لا يتعرف العدّاد إلا على كلمات a-zA-Z. يوجد مسار منفصل للصينية واليابانية والكورية، لكن الفارسية والعربية لا تقعان في أي من المجموعتين. لذلك يصبح wordCount قريبًا من الصفر لمقال فارسي من ألفي كلمة، ويصبح readingTime دقيقة واحدة في كل مرة.
الأسوأ هو الصمت: لا خطأ ولا تحذير. يُعرض الرقم الخاطئ بثقة تامة.
الحل في ثلاثة أسطر
تفصل الفارسية كلماتها بمسافات أيضًا. لذا يمنحنا عدّ الأجزاء المفصولة بمسافات تقديرًا عمليًا لوقت القراءة:
const plain = context().file.plain ?? '';
const words = plain.split(/\s+/u).filter(Boolean).length;
const minutes = Math.max(1, Math.round(words / WORDS_PER_MINUTE));هناك تفصيل مهم: الفاصل غير الواصل عديم العرض (U+200C) في «میکنند» ليس مسافة ولا يطابق \s. لذلك تبقى الكلمة وحدة واحدة، كما ينبغي.
الدرس المستفاد
ذكرت الوثائق ما تُرجعه الدالة، لا كيف تحسبه. عند التعامل مع كتابة غير لاتينية، يبقى المصدر المثبت المرجع الأخير.
إن كنت تدير مدونة فارسية، راجع أوقات القراءة. ربما تعرض كلها «دقيقة واحدة».

