رتب قائمة أبجديًا حسب اللغة
الترتيب الأبجدي ليس قاعدة واحدة في جميع اللغات؛ فموضع الحروف المشكولة والحروف اللاتينية الكبيرة والكتابات اليابانية وتسلسلات الأرقام يتغير حسب اللغة. ترتب هذه الأداة القائمة وفق الإعداد المحلي المطلوب، وتحافظ على كل نص كما أُرسل، وتعرض الإعدادات التي استُخدمت فعليًا.
شغّل الأداة مجانًا
ترتيب رموز الحاسوب لا يساوي ترتيب الكلمات
المقارنة البسيطة تنظر إلى الرقم الداخلي لكل محرف، لا إلى الطريقة التي يتوقع بها القارئ العثور على الكلمة. لذلك قد تظهر الحروف اللاتينية الكبيرة قبل الصغيرة، وقد تبتعد الكلمة ذات العلامة الصوتية عن حرفها الأساسي، وقد يأتي العنصر 12 قبل العنصر 2. تكون النتيجة ثابتة للحاسوب لكنها غير طبيعية في دليل أسماء أو قائمة منتجات أو فهرس. تستخدم المقارنة المحلية قواعد وسم BCP-47 المحدد، ولا تترجم النص ولا تنقله إلى أبجدية أخرى ولا تحذف علاماته؛ بل تغير موضعه فقط.
حدد الفروق التي يجب أن تؤثر في النتيجة
تستقبل الأداة مصفوفة من النصوص وإعدادًا محليًا مثل ar أو ar-SA أو es أو ja. يحدد خيار الحساسية ما إذا كانت العلامات الصوتية وحالة الحروف اللاتينية تميز بين القيم ذات الحرف الأساسي نفسه. قد تتساوى cafe وcafé وCAFE عند اختيار base، بينما يحتسب variant كل فرق. ويفهم الخيار numeric مجموعات الأرقام داخل النص ليضع الفصل 2 قبل الفصل 12. يمكن أيضًا تجاهل علامات الترقيم. تعرض الاستجابة requested_locale وresolved_locale وجميع الخيارات الفعلية حتى لا يبقى أي رجوع تلقائي مخفيًا.
تحافظ القيم المتساوية على ترتيبها الأصلي
قد تعتبر المقارنة نصين مختلفين متساويين عندما تتجاهل العلامات أو حالة الحروف أو الترقيم. قبل الفرز، تسجل القدرة موضع كل قيمة في القائمة الأصلية، ثم تستخدم ذلك الموضع معيارًا أخيرًا عند التعادل. يبقى ترتيب العناصر المتساوية كما وصل، حتى عند اختيار الترتيب التنازلي. تعيد النتيجة النصوص المرتبة ومصفوفة original_indexes معًا، وبذلك يمكن إعادة ترتيب أعمدة مرتبطة أو إبقاء المعرّفات بمحاذاة سجلاتها أو معرفة مصدر كل صف من دون تخمين أو مقارنة جديدة.
معالجة محلية وأتمتة قابلة للتدقيق
تعمل أداة المتصفح محليًا ومجانًا، ولا تحتاج إلى حساب أو اتصال خارجي أو نموذج ذكاء اصطناعي. وتقدم API العقد النقي نفسه لأعمال التصدير والمعالجة الدورية؛ تستخدم المهمة الناجحة السعر الأساسي المنشور، بينما تسجل الوحدة كل ألف صف حتى مع كون السعر الهامشي الحالي صفرًا. تفرض القدرة حدًا لعدد العناصر وحدًا لإجمالي المحارف كي تبقى الذاكرة ومدة التنفيذ متوقعتين. تناسب فهارس الأسماء وقوائم المشاركين ومرشحات المنتجات والمسارد متعددة اللغات التي يجب أن تبدو مرتبة بصورة مألوفة للقارئ.
حالات الاستخدام
أدلة العملاء والأعضاء
رتّب الأسماء وفق لغة القارئ مع الحفاظ على العلامات وحالة الحروف والسجلات المكررة كما هي.
التنقل في كتالوج المنتجات
اعرض الفئات والطرازات بترتيب طبيعي، بما في ذلك الأسماء التي تحتوي على أرقام.
المسارد متعددة اللغات
أنشئ فهرسًا مستقلًا لكل لغة من دون نقل المصطلحات الأصلية إلى الأبجدية اللاتينية.
عمليات تصدير قابلة للتكرار
استخدم المواضع الأصلية لإعادة ترتيب الأعمدة المرتبطة مع إبقاء تسلسل العناصر المتساوية.
الأسئلة الشائعة
كيف أرتب قائمة تحتوي على حروف مشكولة أو لاتينية؟
أرسل النصوص مع الإعداد المحلي المناسب وحدد الحساسية المطلوبة؛ عندها تتبع المقارنة قواعد اللغة بدل ترتيب Unicode الخام.
هل تغير الأداة النص أو تنقله إلى أبجدية أخرى؟
لا. يعود كل نص بالشكل نفسه الذي أُرسل به، ولا يتغير سوى موضعه داخل القائمة.
ما فائدة resolved_locale في الاستجابة؟
يوضح الإعداد المحلي المستخدم فعليًا. إذا كانت علامة BCP-47 صالحة لكن بيئة التشغيل لا تعرفها، يعود الفرز صراحةً إلى الإنجليزية بدل الإعداد الافتراضي للمتصفح، وتكون قيمة resolved_locale هي en.
هل تُرتب الأرقام داخل النص ترتيبًا عدديًا؟
نعم افتراضيًا، ولذلك يأتي العنصر 2 قبل العنصر 12. يمكن تعطيل numeric عند الحاجة إلى مقارنة المحارف.
هل ترتيب القائمة الأبجدية مجاني؟
أداة المتصفح مجانية ومحلية. تستخدم طلبات API الرصيد المدفوع مقدمًا بالسعر الأساسي المنشور $0.002، ولا تُحاسب المهام الفاشلة.
ماذا يحدث للقيم التي تعتبرها المقارنة متساوية؟
تحافظ على ترتيبها النسبي الأصلي، وتوضح original_indexes موضع المصدر لكل نتيجة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/locale/sort \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["Ángel","angel","ñandú","nandu","item 12","item 2"]}'const res = await fetch("https://api.kit.forhosting.com/locale/sort", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"Ángel",
"angel",
"ñandú",
"nandu",
"item 12",
"item 2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/locale/sort",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"Ángel",
"angel",
"ñandú",
"nandu",
"item 12",
"item 2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/locale/sort", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["Ángel","angel","ñandú","nandu","item 12","item 2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["Ángel","angel","ñandú","nandu","item 12","item 2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/locale/sort", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"items": [
"Ángel",
"angel",
"ñandú",
"nandu",
"item 12",
"item 2"
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "locale.sort",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_items | 10000 |
max_chars | 500000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |