نص الترويسة الترحيبية %{site_name} يعطي خطأ: مفتاح الاستيفاء التالي غير صالح: site_name

مفتاح الاستيفاء التالي غير صالح: site_name

إعجاب واحد (1)

أعتقد أن “Site_text” غير متاح. عندما أحاول تعديل النص في /admin/customize/site_texts/js.welcome_banner.header.new_members?locale=en أرى أن الاسم فقط هو المتاح.


أعتقد أن site_name متاح فقط للمستخدمين المجهولين. أعتقد أن الوصف يحتاج إلى تحديث.

3 إعجابات

حسناً، شكراً على المعلومات، في الوقت الحالي أستخدم CSS لوضع اسم الموقع. كنت فقط أواجه مشكلة في وضع خط تحت الاسم في نص الترحيب.

لسبب ما، يعمل %site_name فقط للزوار المجهولين.

أرغب في القيام بما يلي:

مرحباً، %{preferred_display_name}، بك في %{site_name}!

لكن هذا غير ممكن، مما يجعل تعديلات التسطير/CSS صعبة في هذه المنطقة.

هذا منطقي. لم يسجلوا الدخول، لذلك لا نعرف من هم. لا يوجد اسم لهم في قاعدة البيانات.
الأمر أشبه عندما يرن شخص لا تعرفه جرس بابك؛ لن تتمكن من تحيته باسمه حتى يقدم نفسه.

إعجاب واحد (1)

نعم، ولكن أود استخدام %site_name هذا للمستخدمين المسجلين الدخول أيضًا :smiley:

شكرًا للإبلاغ عن ذلك! يبدو أنني بالغت في الوعود بشأن المتغيرات المتاحة… لدي تحديث قادم سيصحح هذا الأمر.

3 إعجابات

إذًا، ما زلنا لا نستطيع إضافة %{site_name} إذا كان المستخدم مسجلاً دخوله؟

حسنًا… يبدو الأمر كذلك بالتأكيد:


أفترض أنه يمكنك عرض اسم الموقع باستخدام مكون سمة (Theme Component) عن طريق إجراء طلب إلى /about.json والحصول على عنوان الموقع (لقد اطلعت على خدمة site ولم أجد أي شيء بخصوص عنوان الموقع).

قد تعمل خدمة siteSetting للحصول على قيمة إعداد الموقع title

إعجاب واحد (1)

لقد بحثت في هذا الأمر، والعائق هنا ليس الوصول إلى قيمة العنوان. بل هو أن الواجهة الخلفية (backend) تتحقق من صحة الترجمات عن طريق استخراج مفاتيح الاستيفاء (interpolation keys) الصالحة من سلاسل اللغة الافتراضية.

لذا، عندما لا يكون %{site_name} موجودًا في السلسلة الافتراضية، سترفضه الواجهة الخلفية باعتباره “مفتاح استيفاء غير صالح”.

3 إعجابات

أنا لا أعرف ما هي فكرة @NateDhaliwal. أردت فقط الإشارة إلى بديل لطلب إضافي إلى /about.json.

أعتقد أن المكون المخصص الذي ينسخ لافتة الترحيب ولكنه يوفر المفتاح site_name لجميع النصوص هو الطريق الصحيح.
أو طلب سحب (PR) يضيف site_name كمفتاح متاح للنصوص للمستخدمين المسجلين الدخول في النواة

  get headerText() {
    if (!this.currentUser) {
      return i18n("welcome_banner.header.anonymous_members", {
        site_name: this.siteSettings.title,
      });
    }

    const isNewUser = !this.currentUser.previous_visit_at;
    const key = isNewUser
      ? "welcome_banner.header.new_members"
      : "welcome_banner.header.logged_in_members";

    return i18n(key, {
      preferred_display_name: sanitize(
        prioritizeNameFallback(this.currentUser.name, this.currentUser.username)
      ),
+     site_name: this.siteSettings.title,
    });
  }
5 إعجابات

@hipp0 شكرًا لك مرة أخرى على إثارة هذا الأمر! لقد دفعنا تحديثًا يجعل المتغير site_name متاحًا في جميع حقول الرأس الثلاثة:

3 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.