حلّل Accept-Language ورتّب تفضيلات اللغات والمناطق
قد تبدو ترويسة Accept-Language بسيطة، لكن معالجتها الموثوقة تتطلب أكثر من تقسيم النص عند الفواصل.
شغّل الأداة مجانًا
يمكن أن يحمل كل نطاق لغوي قيمة جودة، ويجب أن تحافظ العناصر المتساوية في الوزن على ترتيبها الأصلي، كما ينبغي رفض الوسوم غير السليمة قبل التفاوض على المحتوى. يحوّل هذا المحلل قيمة الترويسة إلى قائمة متوقعة من تفضيلات اللغات والمناطق. وهو يوحّد حالة الأحرف المعتادة للغة ونظام الكتابة والمنطقة، ويحفظ علامة البدل، ويتحقق من الجودة، ثم يعيد النتائج بترتيب الأفضلية التنازلي لاستخدامها في التوجيه والاختبار والسجلات واختيار اللغة داخل التطبيق.
حوّل الترويسة إلى تفضيلات صريحة
تعبّر ترويسة Accept-Language عن عدة اختيارات في نص قصير. فقد يرسل المتصفح أولاً لغة مرتبطة بمنطقة، ثم اللغة الأعم، وأخيراً علامة بدل لاستخدامها كخيار احتياطي. تؤدي قراءة هذه القيمة مباشرة داخل كل مسار توجيه إلى تكرار المنطق واختلاف التعامل مع الحالات الحدية. ينشئ المحلل مصفوفة تفضيلات يحتوي كل سجل فيها على لغة أو منطقة وقيمة جودة رقمية. ويحصل كل عنصر لا يذكر الجودة صراحة على القيمة القياسية 1. تُرتب القائمة من أعلى جودة إلى أدناها، بينما تبقى العناصر المتساوية في الجودة وفق ترتيب المرسل. وهذا الثبات مهم لأن الموقع يصبح إشارة الأفضلية الوحيدة عند تساوي الأوزان. كذلك تُوحّد حالة الأحرف: تُكتب اللغة بأحرف صغيرة، والمنطقة المكونة من حرفين بأحرف كبيرة، ونظام الكتابة المكون من أربعة أحرف بحرف أول كبير. وتظل النجمة كما هي كي يتعرف تطبيقك على خيار احتياطي عام من دون معاملتها بوصفها منطقة محددة.
ارفض المدخلات الملتبسة أو غير السليمة مبكراً
تأتي الترويسة عادة من عميل، ولذلك تعبر حداً من حدود الثقة. وقد يحوّل التصحيح الصامت خطأً مطبعياً إلى اختيار لغة غير متوقع، لذا يرفض المحلل المدخل بدلاً من تخمين مقصد المرسل. يجب أن يبدأ النطاق اللغوي بمقطع فرعي أبجدي، ويمكن أن تتبعه مقاطع أبجدية رقمية تفصل بينها شرطات. لا تُقبل الشرطة السفلية ولا المسافات داخل الوسم ولا المقاطع الفارغة ولا علامات الترقيم. وعلامة البدل الوحيدة المقبولة هي نجمة تمثل النطاق كاملاً. يجب أن يستخدم معامل الجودة q وقيمة بين 0 و1 بما لا يزيد على ثلاث منازل عشرية؛ وتسبب القيم الأعلى أو السالبة والمعاملات المجهولة والفواصل المنقوطة المتكررة خطأً. كما تُرفض العناصر الفارغة بين الفواصل. ويضمن حد الطول المعلن بقاء المعالجة محدودة. وبذلك تظهر الأخطاء عند حد API قبل أن تختار قراءة جزئية للترويسة محتوى لم يطلبه العميل أصلاً.
طبّق النتيجة في التفاوض على اللغة والمنطقة
صُممت المخرجات المرتبة لتكون مدخلاً واضحاً لسياسة المطابقة في تطبيقك. مرّ على التفضيلات وقارن كل لغة أو منطقة بالترجمات التي يدعمها التطبيق. يمكنك تجربة المطابقة الإقليمية الدقيقة أولاً، ثم الرجوع من قيمة مثل fr-CA إلى اللغة الأساسية، وأخيراً استخدام علامة البدل أو الإعداد الافتراضي للمنتج. لا يفرض المحلل هذه السياسة، لأن اللغات المدعومة وقواعد الرجوع وطريقة التعامل مع الجودة الصفرية تختلف باختلاف التطبيق. يجعل فصل التحليل عن الاختيار السلوك أسهل للاختبار وإعادة الاستخدام في البوابات والصفحات المعروضة من الخادم وواجهات API ومسارات التحليل. وعند ورود بلاغ عن عرض لغة خاطئة، تستطيع السجلات حفظ القائمة المنظمة بدلاً من ترويسة خام مبهمة، مما يسهّل التشخيص. تبلغ كلفة كل طلب آلي $0.002. وتشغّل نسخة المتصفح المنطق الحتمي نفسه محلياً، فتستطيع فحص الترويسات أثناء التطوير من دون إرسال محتواها إلى جهة أخرى.
حالات الاستخدام
اختر محتوى موطناً
حوّل ترويسة المتصفح إلى مرشحين مرتبين قبل مطابقتهم مع اللغات والمناطق التي يدعمها موقعك.
اختبر العملاء والخوادم الوسيطة
تحقق من أن المتصفح أو SDK أو البوابة يرسل نطاقات اللغة والأوزان المتوقعة.
وحّد سجلات الطلبات
احفظ التفضيلات المنظمة كي تبحث في حوادث توجيه اللغة وتقارنها بطريقة متسقة.
الأسئلة الشائعة
ما الذي تعيده الأداة؟
تتضمن النتيجة مصفوفة تفضيلات مرتبة تنازلياً حسب الجودة. ويحتوي كل عنصر على لغة أو منطقة موحدة وقيمة جودة رقمية.
ماذا يحدث عند حذف q؟
يحصل العنصر على قيمة الجودة 1، وهي أعلى أفضلية قياسية.
هل يعاد ترتيب العناصر المتساوية في الجودة؟
لا. فهي تحتفظ بترتيبها النسبي الأصلي.
هل يختار المحلل لغة يدعمها تطبيقي؟
لا. فهو يحلل الترويسة ويرتبها، بينما يحدد تطبيقك المطابقة الدقيقة والرجوع واللغة الافتراضية.
ما القيم غير السليمة التي تسبب خطأً؟
من أمثلتها الوسوم التي تحتوي شرطات سفلية أو مقاطع فارغة، وعناصر القائمة الخالية، والمعاملات المجهولة، وقيم الجودة الخارجة عن 0 إلى 1 أو التي تتجاوز ثلاث منازل عشرية.
ما كلفة طلب API؟
تبلغ كلفة كل طلب API $0.002. ويمكن أيضاً تشغيل الأداة الحتمية محلياً في المتصفح على هذه الصفحة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/web/accept-language-parse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"en-US,en;q=0.9,fr-CA;q=0.7,*;q=0.1"}'const res = await fetch("https://api.kit.forhosting.com/web/accept-language-parse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "en-US,en;q=0.9,fr-CA;q=0.7,*;q=0.1"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/accept-language-parse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "en-US,en;q=0.9,fr-CA;q=0.7,*;q=0.1"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/accept-language-parse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"en-US,en;q=0.9,fr-CA;q=0.7,*;q=0.1"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"en-US,en;q=0.9,fr-CA;q=0.7,*;q=0.1"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/accept-language-parse", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "en-US,en;q=0.9,fr-CA;q=0.7,*;q=0.1"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.accept_language_parse",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_chars | 8192 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |