> ## Documentation Index
> Fetch the complete documentation index at: https://docs.youka.io/llms.txt
> Use this file to discover all available pages before exploring further.

# إعدادات المشروع

> قراءة وتحديث إعدادات المشروع النشطة

يمتلك كل مشروع إعدادات نشطة — القصّ (trim)، الخلفية، نمط الترجمة، التخطيط — تتحكم في كيفية إخراج عمليات التصدير.

استخدم إعدادات المشروع عندما تريد تجاوزات محلية على مستوى المشروع لا تستحق تجميعها ضمن إعداد مسبق (preset) مشترك.

راجع [مرجع إعدادات العرض](/en/render-settings-reference) لخريطة الحقول المشتركة
`preset` و`settings.style` و`settingsOverride`.

## `client.projects.getSettings(projectId, options?)`

اجلب الإعدادات النشطة للمشروع.

```ts theme={null}
const config = await client.projects.getSettings("prj_abc123");
console.log(
  config.settings.trim,
  config.settings.style?.background,
  config.settings.displayLanguages,
);
```

## `client.projects.updateSettings(projectId, body, options?)`

حدّث (Patch) إعدادات المشروع النشطة. يمكنك تطبيق إعداد مسبق، أو تمرير إعدادات خام، أو كليهما (يُطبَّق الإعداد المسبق أولًا، ثم تُدمَج تجاوزات الإعدادات فوقه).

```ts theme={null}
const updated = await client.projects.updateSettings("prj_abc123", {
  presetId: "preset_abc123",
  settings: {
    trim: { startSeconds: 5, endSeconds: 180 },
  },
});
```

### الحقول

<ParamField path="presetId" type="string">
  طبّق إعدادًا مسبقًا قابلًا لإعادة الاستخدام. احذفه لترك الإعداد المسبق الحالي دون تغيير.
</ParamField>

<ParamField path="settings" type="object">
  تحديث يُطبَّق فوق الإعداد المسبق. استخدم `style` للتجاوزات المطابقة لشكل الإعداد المسبق،
  بالإضافة إلى الحقول المحلية بالمشروع مثل `displayLanguages` و`chordSettings` و
  `duetSingerFilter`.
</ParamField>

### اكتشاف الحقول الصالحة

حوّل مخطط التحديث إلى JSON Schema أثناء التشغيل لاكتشاف كل حقل صالح:

```ts theme={null}
import { RestUpdateProjectSettingsRequestSchema } from "@youka/sdk";

const schema = RestUpdateProjectSettingsRequestSchema.toJSONSchema();
console.log(JSON.stringify(schema, null, 2));
```

<Tip>
  ينبغي على الوكلاء استدعاء هذا قبل تعديل إعدادات المشروع لكي يعرفوا دائمًا
  الشكل الحالي.
</Tip>

## أنماط شائعة

<Tabs>
  <Tab title="قصّ">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      settings: {
        trim: { startSeconds: 5.0, endSeconds: 180.0 },
      },
    });
    ```
  </Tab>

  <Tab title="لون الخلفية">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      settings: {
        style: {
          background: { type: "color", color: "#101010" },
        },
      },
    });
    ```
  </Tab>

  <Tab title="لغات العرض">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      settings: {
        displayLanguages: ["en", "es"],
      },
    });
    ```
  </Tab>

  <Tab title="تطبيق إعداد مسبق">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      presetId: "preset_abc123",
    });
    ```
  </Tab>
</Tabs>

## إعدادات المشروع مقابل الإعدادات المسبقة

| السؤال                                     | استخدم                       |
| ------------------------------------------ | ---------------------------- |
| نفس المظهر عبر عدة مشاريع؟                 | الإعدادات المسبقة            |
| قصّ لمرة واحدة أو تعديل لون في مشروع واحد؟ | إعدادات المشروع              |
| مظهر أساسي + تجاوزات صغيرة خاصة بالمشروع؟  | إعداد مسبق + إعدادات المشروع |

## ما التالي

* [مرجع إعدادات العرض](/en/render-settings-reference) — جميع مسارات الحقول المشتركة وقيم enum
* [الإعدادات المسبقة](/ar/sdk/presets) — إعدادات قابلة لإعادة الاستخدام
* [الوسائط](/ar/sdk/media) — رفع الخلفيات والشعارات
* [إعدادات مشروع API](/ar/api/project-settings) — نفس التدفق عبر HTTP الخام
* [مشاريع CLI](/ar/cli/projects) — نفس التدفق من الطرفية
* [عمليات التصدير](/ar/sdk/exports) — استخدم `settingsOverride` لتعديلات خاصة بالتصدير فقط
