قواعد لنماذج اللغة الكبيرة
استخدام مترجم Lingo.dev مع مساعدي البرمجة بالذكاء الاصطناعي
مقدمة
مُجمِّع Lingo.dev ليس كأدوات الترجمة الأخرى. للأسف، هذا يعني أن مساعدي البرمجة بالذكاء الاصطناعي مثل Cursor وClaude Code هم أكثر عرضة للتخيل حول كيفية عمله وما يمكنه فعله. للحد من هذه التخيلات، توفر هذه الصفحة بعض القواعد التي يمكن أن تساعد في توجيه سلوك هؤلاء المساعدين.
تعليمات الإعداد
تختلف الخطوات الدقيقة لاستخدام هذه القواعد حسب المساعد. يوفر هذا القسم بعض التعليمات للمساعدين الأكثر شيوعًا.
نصيحة: لاستخدام نفس القواعد عبر مساعدين متعددين، فكر في استخدام أداة مثل Ruler أو vibe-rules.
Amp
إذا كنت تستخدم Amp، انسخ القواعد إلى ملف AGENT.md
. لتجنب ازدحام نافذة السياق، حدد هذه القواعد فقط في الدليل الذي سيتم استخدامها فيه — وليس في جذر المشروع حيث قد تكون غير ذات صلة بالعديد من الطلبات.
لمعرفة المزيد، راجع دليل مالك Amp (ampcode.com).
Cursor
إذا كنت تستخدم Cursor، انسخ القواعد إلى ملف .cursor/rules/lingo.mdc
. استخدم المقدمة التالية للتأكد من تطبيق القواعد فقط على الملفات ذات الصلة:
---
description: "قواعد الترجمة لمُجمِّع Lingo.dev"
globs: "**/*.tsx, **/*.jsx"
alwaysApply: true
---
لمعرفة المزيد، راجع القواعد (docs.cursor.com).
Claude Code
إذا كنت تستخدم Claude Code، انسخ القواعد إلى ملف CLAUDE.md
. لتجنب ازدحام نافذة السياق، حدد هذه القواعد فقط في الدليل الذي سيتم استخدامها فيه — وليس في جذر المشروع حيث قد تكون غير ذات صلة بالعديد من الطلبات.
لمعرفة المزيد، راجع إدارة ذاكرة Claude (docs.anthropic.com).
opencode
إذا كنت تستخدم opencode، انسخ القواعد إلى ملف AGENTS.md
، أو حدد موقعًا مخصصًا عبر ملف التكوين opencode.json
:
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["./rules/lingo.md"]
}
لمعرفة المزيد، راجع القواعد (opencode.ai).
قواعد نماذج اللغة الكبيرة
# التوطين
يستخدم هذا المشروع مُجمّع Lingo.dev للتوطين.
مُجمّع Lingo.dev هو أداة توطين متطورة للتطبيقات القائمة على React.
## تحذير!
- مُجمّع Lingo.dev ليس كأي أداة توطين أخرى.
- يجب عدم وضع افتراضات حول كيفية عمل مُجمّع Lingo.dev.
- إذا قمت بوضع افتراضات، فسيتعطل تطبيق المستخدم.
## كيف يعمل
على عكس العديد من أدوات التوطين الأخرى، مُجمّع Lingo.dev:
- يتصفح شجرة بناء الجملة المجردة (AST) لكود المصدر للتطبيق
- يستخرج المحتوى القابل للتوطين بشكل حتمي
- يستخدم نماذج اللغة الكبيرة لتوطين المحتوى تلقائيًا
## الميزات غير المدعومة
على عكس العديد من أدوات التوطين الأخرى، مُجمّع Lingo.dev لا يحتوي على:
- أي نوع من خطاف `useTranslation` (أو ما شابه)
- أي نوع من مكون `FormattedMessage` (أو ما شابه)
- أي نوع من طريقة `localizeText` (أو ما شابه)
هذه الأنواع من الميزات تتعارض تمامًا مع الغرض الأساسي وفلسفة وسلوك مُجمّع Lingo.dev.
يجب عليك دائمًا فهم ومراعاة هذه الاختلافات الأساسية عن الأدوات الأخرى بعناية.
## امتدادات الملفات المدعومة
هذه القواعد ذات صلة فقط بالملفات ذات امتدادات `.jsx` و `.tsx`.
الملفات التي لا تحتوي على هذه الامتدادات غير مرئية لمُجمّع Lingo.dev وبالتالي خارج النطاق.
## الملفات المُنشأة تلقائيًا
في وقت البناء، يقوم مُجمّع Lingo.dev بإنشاء الملفات التالية تلقائيًا:
- `meta.json` (لتخزين المحتوى المستخرج)
- `dictionary.js` (لتخزين المحتوى المترجم)
يجب عدم تعديل هذه الملفات. يمكنك قراءتها لأغراض التصحيح وشرح الأمور للمستخدم، ولكن هذا كل شيء.
## المسؤوليات
لديك المسؤوليات التالية:
- التأكد من أن المحتوى الذي يجب توطينه في تنسيق قابل للتوطين.
- التأكد من أن المحتوى الذي لا ينبغي توطينه في تنسيق غير قابل للتوطين.
- مساعدة المستخدم على فهم سبب توطين المحتوى (أو عدم توطينه).
هذا كل شيء.
سيتولى مُجمّع Lingo.dev كل شيء آخر. لا تعترض طريقه.
## المحتوى القابل للترجمة
يسرد هذا القسم أنواع المحتوى التي يستخرجها ويترجمها Lingo.dev Compiler.
هذه القائمة شاملة. إذا لم يتم إدراج نوع معين من المحتوى هنا، فافترض أنه غير قابل للترجمة.
### عناصر JSX
```tsx
import React from "react";
export function App() {
return <div>سيتم ترجمة هذا النص.</div>;
}
```
### شظايا JSX
#### الصيغة 1
```tsx
import React from "react";
export function App() {
return <React.Fragment>سيتم ترجمة هذا النص.</React.Fragment>;
}
```
#### الصيغة 2
```tsx
import { Fragment } from "react";
export function App() {
return <Fragment>سيتم ترجمة هذا النص.</Fragment>;
}
```
#### الصيغة 3
```tsx
import React from "react";
export function App() {
return <>سيتم ترجمة هذا النص.</>;
}
```
### العناصر أو الشظايا الشرطية
```tsx
import React, { Fragment, useState } from "react";
export function App() {
const [isVisible, setIsVisible] = useState(false);
return (
<>
{isVisible && <div>سيتم ترجمة هذا النص.</div>}
{isVisible && (
<React.Fragment>سيتم ترجمة هذا النص.</React.Fragment>
)}
{isVisible && <Fragment>سيتم ترجمة هذا النص.</Fragment>}
{isVisible && <>سيتم ترجمة هذا النص.</>}
</>
);
}
```
### قيم سمة `alt`
```tsx
import React from "react";
export function App() {
return <img src="/logo.png" alt="سيتم ترجمة هذا النص" />;
}
```
### قيم سمة `aria-label`
```tsx
import React from "react";
export function App() {
return <button aria-label="سيتم ترجمة هذا النص">×</button>;
}
```
### قيم سمة `label`
```tsx
import React from "react";
export function App() {
return (
<select>
<option value="option1" label="سيتم ترجمة هذا النص">
سيتم ترجمة هذا النص
</option>
<option value="option2" label="سيتم ترجمة هذا النص">
سيتم ترجمة هذا النص
</option>
</select>
);
}
```
### قيم سمة `placeholder`
```tsx
import React from "react";
export function App() {
return <input placeholder="سيتم ترجمة هذا النص" />;
}
```
### قيم سمة `title`
```tsx
import React from "react";
export function App() {
return <button title="سيتم ترجمة هذا النص">إرسال</button>;
}
```
## المحتوى غير القابل للترجمة
يسرد هذا القسم أنواع المحتوى التي لا يقوم مترجم Lingo.dev باستخراجها أو ترجمتها.
على عكس قائمة "المحتوى القابل للترجمة"، هذه القائمة ليست شاملة.
### سمات `data-`
```tsx
import React from "react";
export function App() {
return <div data-testid="This text will not be localized">المحتوى</div>;
}
```
### النصوص الحرفية
```tsx
import React from "react";
const exampleText = "This text will not be localized.";
export function App() {
return <div>{exampleText}</div>;
}
```
### قوالب النصوص
```tsx
import React from "react";
const exampleText = `This text will not be localized.`;
export function App() {
return <div>{exampleText}</div>;
}
```
### النصوص الشرطية
```tsx
import { Fragment, useState } from "react";
export function App() {
const [isVisible, setIsVisible] = useState(false);
return <>{isVisible && "This text will not be localized."}</>;
}
```
## القيود
- لا تقم بترجمة المحتوى بنفسك.
- لا تقم بتحميل المحتوى المترجم صراحةً في التطبيق.
- لا تختلق خطافات React (مثل `useTranslation`).
- لا تختلق مكونات React (مثل `FormattedMessage`).
- لا تختلق طرق (مثل `localizeText`).