Directionality support/ar: Difference between revisions
Created page with "محتوى باللغة الإنجليزية (من اليسار إلى اليمين) مع واجهة باللغة العبرية (من اليمين إلى اليسار)." |
Importing a new version from external source |
||
| (5 intermediate revisions by the same user not shown) | |||
| Line 2: | Line 2: | ||
{{i18n navigation}} |
{{i18n navigation}} |
||
[[File:LTR content with RTL interface (after).png|thumb|350px|[http://translatewiki.net/wiki/Translating:MediaWiki?uselang=he محتوى باللغة الإنجليزية (من اليسار إلى اليمين) مع واجهة باللغة العبرية (من اليمين إلى اليسار).]]] |
[[File:LTR content with RTL interface (after).png|thumb|350px|[http://translatewiki.net/wiki/Translating:MediaWiki?uselang=he محتوى باللغة الإنجليزية (من اليسار إلى اليمين) مع واجهة باللغة العبرية (من اليمين إلى اليسار).]]] |
||
يُعد دعم اتجاهات {{ll|Writing systems|الكتابة}} المختلفة (من اليسار إلى اليمين ومن اليمين إلى اليسار) جانبًا مهمًا في البرمجيات متعددة اللغات. |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">Support for different {{ll|Writing systems|writing}} directions (left-to-right, right-to-left) is an important aspect for multilingual software.</span> |
|||
منذ {{ll|MediaWiki 1.18|MediaWiki 1.18}}، تحسّن الدعم بشكل ملحوظ. |
|||
تقدّم هذه الصفحة بعض المعلومات والإرشادات ذات الصلة للمطورين وإداريي الويكي، إذا كنتم ترغبون في جعل إحدى الميزات أو الإضافات متوافقة مع الواجهة من اليمين إلى اليسار ومع اختلاف اتجاهات الكتابة عمومًا. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
This page gives some relevant information, and guidelines for developers and wiki administrators if you want to make a feature or extension compatible with the right-to-left interface and different directionality in general. |
|||
</div> |
|||
<span id="User-level_tips"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
== نصائح على مستوى المستخدم == |
|||
== User-level tips == |
|||
</div> |
|||
بعض النصائح العامة للمستخدمين، قبل الانتقال إلى التفاصيل الخاصة بالمطورين: |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
Some general tips for users, before getting to details for developers: |
|||
</div> |
|||
* تدعم معظم المتصفحات تغيير اتجاه مساحة تحرير النص العادي، مثل صناديق بحث المقالات، وتحرير صيغة الويكي، وملخص التعديل، وغيرها. بناءً على المتصفحات وأنظمة التشغيل، يتم ذلك بواسطة {{Key press|Ctrl|Shift}} (كروم وإنترنت إكسبلورر على ويندوز)، {{Key press|Ctrl|Shift|X}} (فايرفوكس)، Option-Click-تغيير الاتجاه (ماك). من المفترض أن يساعدك هذا في الكتابة باتجاه مختلف عن الاتجاه المعتاد للموقع. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* عند كتابة قسم بلغة ذات اتجاه يختلف عن اتجاه الموقع، أضف وسم div مع خصائص lang و dir و class المناسبة. على سبيل المثال، عند كتابة قسم باللغة الإنجليزية في ويكيبيديا العربية، اكتب <syntaxhighlight lang=html inline><div lang="en" dir="ltr" class="mw-content-ltr"></syntaxhighlight> في البداية و {{tag|div|close}} في النهاية. |
|||
* Most browsers support changing the direction of a plain-text editing area, such as article search boxes, wiki syntax editing, edit summary, etc. |
|||
* عند كتابة بضع كلمات فقط داخل فقرة، ضعها داخل وسم {{tag|span|open}} مع خصائص lang و dir المناسبة. (تحتوي العديد من مواقع الويكي على قالب لهذا الغرض، مثل <nowiki>{{lang}}</nowiki>). |
|||
</div> <span lang="en" dir="ltr" class="mw-content-ltr">Depending on browsers and operating systems, this is done by {{Key press|Ctrl|Shift}} (Chrome and IE on Windows), {{Key press|Ctrl|Shift|X}} (Firefox), Option-Click-Change direction (Mac).</span> <span lang="en" dir="ltr" class="mw-content-ltr">This should help you typing in a direction that is different from the site's usual direction.</span> |
|||
* لفصل الأرقام عن كلمة مجاورة ذات اتجاه مختلف، استخدم علامات RLM أو LRM. العديد من مواقع الويكي تحتوي على قوالب لهذا الغرض، على سبيل المثال <nowiki>{{כ}}</nowiki> في ويكيبيديا العبرية، و <nowiki>{{RLM}}</nowiki> في ويكيبيديا العربية، و <nowiki>{{رچ}}</nowiki> في ويكيبيديا الفارسية، إلخ. عندما يكون هناك قالب متاح، يُفضل عادةً استخدامه بدلاً من استخدام حرف يونيكود نفسه. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* When typing a section in a language that has a direction that is different from the site's, add a div tag with appropriate lang, dir and class attributes. |
|||
</div> <span lang="en" dir="ltr" class="mw-content-ltr">For example, when typing an English section in the Arabic Wikipedia, type <syntaxhighlight lang=html inline><div lang="en" dir="ltr" class="mw-content-ltr"></syntaxhighlight> in the beginning and {{tag|div|close}} in the end.</span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* When typing just a few words inside a paragraph, put them inside a {{tag|span|open}} tag with appropriate lang and dir attributes. |
|||
</div> <span lang="en" dir="ltr" class="mw-content-ltr">(Many wikis have a template for this, such as <nowiki>{{lang}}</nowiki>).</span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* To separate numbers from an adjacent word with different directionality, use RLM or LRM characters. |
|||
</div> <span lang="en" dir="ltr" class="mw-content-ltr">Many wikis have templates for this, for example <nowiki>{{כ}}</nowiki> in the Hebrew Wikipedia, <nowiki>{{RLM}}</nowiki> in the Arabic Wikipedia, <nowiki>{{رچ}}</nowiki> in the Persian Wikipedia, etc.</span> <span lang="en" dir="ltr" class="mw-content-ltr">When a template is available, it's usually preferred to using the Unicode character itself.</span> |
|||
يمكنك الإبلاغ عن الأخطاء في التعامل مع النصوص من اليمين إلى اليسار (RTL) في فابريكاتور في أي مشروع متعلق بميدياويكي باستخدام وسم RTL. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
You can report bugs in RTL handling in Phabricator in any MediaWiki-related project using the RTL tag. |
|||
</div> |
|||
<span id="ResourceLoader"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
== ResourceLoader == |
== محمل الموارد (ResourceLoader) == |
||
بفضل [[ResourceLoader]] الذي يتضمن [https://github.com/cssjanus/cssjanus CSSJanus]، يتم قلب CSS تلقائيًا من اليمين إلى اليسار عندما تكون لغة المستخدم RTL. |
|||
</div> |
|||
هذا هو الوضع الافتراضي منذ 1.18 (في الإصدارات السابقة كان [[bugzilla:6100|يعتمد على لغة محتوى الويكي]]). |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">Thanks to [[ResourceLoader]] including [https://github.com/cssjanus/cssjanus CSSJanus], CSS is automatically flipped to right-to-left when the user language is RTL.</span> |
|||
هناك القليل نسبيًا من CSS الذي يجب أن يعتمد على لغة المحتوى. |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">This is default since 1.18 (in previous versions it was [[bugzilla:6100|dependent on the wiki content language]]).</span> |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">There is relatively little CSS that must depend on the content language.</span> |
|||
* '''انتباه:''' عند استخدام [[ResourceLoader/Architecture#Debug mode|وضع التنقيح]] الخاص بمحمل الموارد (ResourceLoader)، قد يتم تصيير CSS بشكل غير متسق مقارنة بوضع الإنتاج. كحل مؤقت، اختبر واجهة RTL مع إيقاف تشغيل وضع التنقيح. (يتم تتبع المشكلة على أنها [[Phabricator:T29025]].) |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* '''Attention:''' when using ResourceLoader's [[ResourceLoader/Architecture#Debug mode|debug mode]], the CSS may be inconsistently rendered compared to the production mode. |
|||
</div> <span lang="en" dir="ltr" class="mw-content-ltr">As a temporary work-around test RTL interface with debug off. (Issue being tracked as [[Phabricator:T29025]].)</span> |
|||
<span id="What_kind_of_languages?"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
== |
== ما نوع اللغات؟ == |
||
</div> |
|||
مقال رئيسي: |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
Main article: |
|||
</div> |
|||
{{ll|Manual:Language}} |
{{ll|Manual:Language}} |
||
* $wgLang - لغة المستخدم (والاتجاه الخاص بها) |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* $wgContLang - لغة محتوى الموقع (والاتجاه الخاص بها) -> هنا من اليسار لليمين (LTR) |
|||
* $wgLang - user language (and the respective direction) |
|||
* Title->getPageLanguage() - لغة محتوى الصفحة (والاتجاه الخاص بها) -> افتراضيًا نفس لغة محتوى الموقع |
|||
</div> |
|||
** هناك بعض الاستثناءات الافتراضية: انظر أدناه |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
** يمكن تعيينه في الإضافات بواسطة الخطاف {{ll|Manual:Hooks/PageContentLanguage|PageContentLanguage}} |
|||
* $wgContLang - site content language (and respective direction) -> here LTR |
|||
** هذا يعيّن جدول المحتويات (TOC) (وأشياء أخرى مثل القواعد، رغم أنها ليست ذات صلة غالبًا) إلى تلك اللغة. للقيام بذلك فقط، استخدم parserOptions->setTargetLanguage() |
|||
</div> |
|||
* في الإضافات التي يجب أن تظل متوافقة مع الإصدار 1.17، يمكنك استخدام wfUILang()، ومع ذلك فإن هذا يكسر التوافق مع 1.16 وما دونه. هذا يُرجع $wgLang في الإصدار 1.18 وما فوق ولكنه يُرجع $wgContLang في 1.17 (افتراضيًا). |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* Title->getPageLanguage() - page content language (and respective direction) -> by default the same as site content language |
|||
</div> |
|||
** <span lang="en" dir="ltr" class="mw-content-ltr">There are some default exceptions: see below</span> |
|||
** <span lang="en" dir="ltr" class="mw-content-ltr">It can be set in extensions by the hook {{ll|Manual:Hooks/PageContentLanguage|PageContentLanguage}}</span> |
|||
** <span lang="en" dir="ltr" class="mw-content-ltr">This sets the TOC (and stuff like grammar, although not really relevant mostly) to that language. To do that only, use parserOptions->setTargetLanguage()</span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* In extensions that should remain compatible with 1.17, you can use wfUILang(), however this breaks compatibility with 1.16 and below. |
|||
</div> <span lang="en" dir="ltr" class="mw-content-ltr">This returns $wgLang in 1.18 and higher but $wgContLang in 1.17 (by default).</span> |
|||
<span id="What_should_follow_which_kind?"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
=== |
=== ماذا يجب أن يتبع أي نوع؟ === |
||
</div> |
|||
* الصفحات الخاصة تتبع لغة المستخدم افتراضيًا. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* يجب أن يكون الكود المصدري باللغة الإنجليزية (يتم تعيين صفحات CSS/JS إلى الإنجليزية افتراضيًا). |
|||
* Special pages follow the user language by default. |
|||
* الصفحات التي تحتوي على ترجمة كصفحات فرعية يجب أن تتبع لغة الترجمة (على سبيل المثال "Page" هي wgContLang، و "Page/he" هي "he"). هذا هو الوضع الافتراضي لنطاق ميدياويكي. |
|||
</div> |
|||
* صناديق الإدخال ومساحات النص تتبع اتجاه المحتوى افتراضيًا. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* عند عرض فرق التعديلات، فإنه يتبع لغة المستخدم، لكن نص الفرق الفعلي يكون بلغة محتوى الصفحة. |
|||
* Source code should be English (CSS/JS pages are set to English by default). |
|||
[[File:Wait, -tahW- The Twisted Road to Right-to-Left Language Support.webm|thumb|قد يكون اتجاه النص مربكًا، لكن يمكنك مشاهدة حديث [[User:Mooeypoo|mooeypoo]] في مؤتمر [[w:Linux.conf.au|linux.conf.au]] بعنوان "Wait, ?tahW: The Twisted Road to Right-to-Left Language Support" للحصول على فهم أفضل للقضايا والحلول المتعلقة به.]] |
|||
</div> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* Pages with translation as subpages should follow the language of the translation (e.g. "Page" is wgContLang, "Page/he" is "he"). This is the default for the MediaWiki namespace. |
|||
</div> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* Input boxes and textareas follow content direction by default. |
|||
</div> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* When viewing a diff, it follows the user language, but the actual diff text is in the page content language. |
|||
[[File:Wait, -tahW- The Twisted Road to Right-to-Left Language Support.webm|thumb|Directionality can be confusing, but you can watch [[User:Mooeypoo|mooeypoo]]'s [[w:Linux.conf.au|linux.conf.au]] talk entitled "Wait, ?tahW: The Twisted Road to Right-to-Left Language Support" to get a better understanding of the issues and solutions involved.]] |
|||
</div> |
|||
<span id="What_should_I_add_in_the_source_code?"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
== ماذا يجب أن أضيف في الكود المصدري؟ == |
|||
== What should I add in the source code? == |
|||
* أي شيء في الصفحات الخاصة يختلف عن لغة المستخدم يجب أن يحتوي على وسم <syntaxhighlight lang=html inline><div dir="..." lang="..."></syntaxhighlight>. |
|||
</div> |
|||
*: مثال: SpecialRecentchanges->setTopText() الذي يضيف رسالة "recentchangestext" بلغة محتوى الويكي. |
|||
* <span lang="en" dir="ltr" class="mw-content-ltr">Anything on special pages that is different from the user language should have a <syntaxhighlight lang=html inline><div dir="..." lang="..."></syntaxhighlight> tag.</span> |
|||
* أي شيء في النطاقات المخصصة يحتوي على نص يختلف عن محتوى الويكي الافتراضي يجب أن يحتوي أيضًا على وسم <code>div</code>. |
|||
*: <span lang="en" dir="ltr" class="mw-content-ltr">Example: SpecialRecentchanges->setTopText() which adds the "recentchangestext" message in the wiki content language.</span> |
|||
* عندما لا يكون نص فرق التعديلات هو نفس لغة محتوى الصفحة، استخدم {{phpi|$diff->setTextLanguage( 'code' );}} حيث $diff هو كائن DifferenceEngine. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* Anything on custom namespaces that contains text different from the default wiki content should also have a <code>div</code> tag. |
|||
</div> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* When the diff text is not the same as the page content language, use {{phpi|$diff->setTextLanguage( 'code' );}} where $diff is a DifferenceEngine object. |
|||
</div> |
|||
<span id="lang/dir_attributes"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
=== lang/dir |
=== خصائص lang/dir === |
||
</div> |
|||
يجب عليك استخدام HTML: |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
You should use HTML: |
|||
</div> |
|||
<syntaxhighlight lang="php"> |
<syntaxhighlight lang="php"> |
||
| Line 115: | Line 67: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
لكن أحيانًا يكون ذلك صعبًا في العناصر المُنشأة ديناميكيًا ويمكنك اللجوء إلى CSS: |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">but sometimes that is difficult in dynamically generated elements and you can fall back on CSS:</span> |
|||
<syntaxhighlight lang="css"> |
<syntaxhighlight lang="css"> |
||
| Line 121: | Line 73: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
<span id="Wiki_content"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
=== |
=== محتوى الويكي === |
||
</div> |
|||
{{MW 1.18|and after}} |
{{MW 1.18|and after}} |
||
يمكنك استخدام أصناف <code>mw-content-ltr</code> و <code>mw-content-rtl</code> للاستفادة من روابط تحرير الأقسام وعناصر ul/ol بناءً على ذلك الاتجاه. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
You can use <code>mw-content-ltr</code> and <code>mw-content-rtl</code> classes to make use of edit section links and ul/ol elements based on that direction. |
|||
</div> |
|||
:على سبيل المثال |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
:E.g. |
|||
</div> |
|||
<syntaxhighlight lang="php"> |
<syntaxhighlight lang="php"> |
||
| Line 142: | Line 89: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
يُستخدم هذا بالطبع لمحتوى صفحات المقالات. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
This is of course used for the page content of articles. |
|||
</div> |
|||
* في صفحات الملفات، يُضاف فقط حول النص الفعلي بينما بقية صفحة الملف عبارة عن واجهة مستخدم مخصصة (تاريخ الملف، وما إلى ذلك). |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* في صفحات التصنيفات يُضاف كما في الصفحات العادية، لكن النص بلغة المستخدم يتم تضمينه في <code>div</code> مع خصائص <code>lang</code> و <code>dir</code> وفقًا للغة المستخدم. |
|||
* On file pages, it is only added around the actual text while the rest of the file page is custom UI (file history, ...). |
|||
* في الصفحات الخاصة ''لا'' يُضاف لأنها تكون في الغالب بلغة المستخدم. يمكن أن يكون جزء من النص في الصفحات الخاصة بلغة المحتوى، والذي يجب عندئذٍ تضمينه في هذه الأصناف. يتم استخدامه على سبيل المثال في إضافة CodeReview لملخص الكود وتعليقاته، والتي يمكن أن تحتوي على عناصر ul/ol (نص الويكي * و #) بلغة محتوى الويكي ومن حيث المبدأ ليس بلغة المستخدم بوضوح. |
|||
</div> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* On category pages it is added as on regular pages, but the text in the user language is embedded in a <code>div</code> with <code>lang</code> and <code>dir</code> attributes according to the user language. |
|||
</div> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* On special pages it is ''not'' added because these are largely in the user language. |
|||
</div> <span lang="en" dir="ltr" class="mw-content-ltr">A piece of text on special pages can be in the content language, which should then be embedded in these classes.</span> <span lang="en" dir="ltr" class="mw-content-ltr">It is for example used in the CodeReview extension for the code summary and code comments, which can contain ul/ol elements (* and # wikitext) in the wiki content language and in principle not the user language obviously.</span> |
|||
يجب عدم إضافة عناصر واجهة المستخدم داخل هذه الأصناف. |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">Adding UI stuff within these classes should not be done.</span> |
|||
على سبيل المثال، روابط التصنيفات ونموذج مراجعة FlaggedRevs موجودة داخل #bodyContent ولكن خارج .mw-content-ltr/rtl. |
|||
انظر أيضًا [[Special:MyLanguage/Manual:Interface/IDs and classes|المعرفات والأصناف (IDs and classes)]]. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
See also [[Special:MyLanguage/Manual:Interface/IDs and classes|IDs and classes]]. |
|||
</div> |
|||
<span id="body_classes"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
=== body classes === |
=== أصناف body (body classes) === |
||
يحتوي وسم body على صنف <code>ltr</code> أو <code>rtl</code> افتراضيًا، والذي يتبع لغة المستخدم. |
|||
</div> |
|||
لا ينبغي لك استخدام ذلك، لأن CSS يتم قلبه تلقائيًا بناءً على لغة المستخدم. |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">The body tag has an <code>ltr</code> or <code>rtl</code> class by default, which follows the user language.</span> |
|||
يتميز وسم body أيضًا بصنف <code>sitedir-ltr</code> و <code>sitedir-rtl</code> جديدين (بدءاً من الإصدار 1.18) يتبعان {{phpi|$wgContLang->getDir()}}. |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">You shouldn't use that, because CSS is automatically flipped based on the user language.</span> |
|||
إذا كانت هناك حاجة لذلك، يمكن إضافة "userlang-ltr/rtl" و/أو "pagelang-ltr/rtl" أيضًا. |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">The body tag also features a new (1.18) <code>sitedir-ltr</code> and <code>sitedir-rtl</code> class which follows {{phpi|$wgContLang->getDir()}}.</span> |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">If there is need for it, a "userlang-ltr/rtl" and/or "pagelang-ltr/rtl" could be added as well.</span> |
|||
<span id="float/text-align"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
=== float/text-align === |
=== المحاذاة float/text-align === |
||
</div> |
|||
يمكنك استخدام {{phpi|$wgLang->alignStart()}}, {{phpi|$wgContLang->alignStart()}}, {{phpi|$wgLang->alignEnd()}}, {{phpi|$wgContLang->alignEnd()}} والذي يعطي القيم المناسبة 'right' أو 'left'. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
You can use {{phpi|$wgLang->alignStart()}}, {{phpi|$wgContLang->alignStart()}}, {{phpi|$wgLang->alignEnd()}}, {{phpi|$wgContLang->alignEnd()}} which gives the appropriate 'right' or 'left' values. |
|||
</div> |
|||
يمكنك استخدام <code>float</code> أو <code>text-align</code> من CSS والذي تنعكس قيمته (left/right) للغات الواجهة من اليمين إلى اليسار (RTL). |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
You can use CSS <code>float</code> or <code>text-align</code> of which the value (left/right) is flipped for RTL interface languages. |
|||
</div> |
|||
<span id="Examples"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
== |
== أمثلة == |
||
</div> |
|||
Special:AllMessages هي صفحة خاصة، مما يعني أنها تتبع اتجاه لغة المستخدم. ومع ذلك، يجب أن تتبع الرسائل الفعلية اتجاه اللغة المحددة. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
Special:AllMessages is a special page, which means it follows the user language direction. However, the actual messages should follow the direction of the selected language. |
|||
</div> |
|||
* |
* [[Special:Allmessages]] = الإنجليزية، LTR (من اليسار إلى اليمين) |
||
* |
* [[Special:Allmessages/he]] = العبرية، RTL (من اليمين إلى اليسار) |
||
الخلايا في الجدول التي تحتوي على محتوى الرسائل، لها خاصية <code>lang</code> و <code>dir</code>. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
The cells in the table containing the content of the messages, have a <code>lang</code> & <code>dir</code> attribute. |
|||
</div> |
|||
تقوم الإضافة {{ll|Extension:Translate|Translate}}، بالاستفادة من خطاف PageContentLanguage، بتعيين اللغة الصحيحة (وبالتالي الاتجاه الصحيح) للصفحات المترجمة، انظر على سبيل المثال [[meta:Wikimedia_maintenance_notice/ar]] والتي تستفيد من صنف mw-content-rtl في موقع ويكي LTR. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
The {{ll|Extension:Translate|Translate}} extension, making use of the PageContentLanguage hook, sets the right language (and consequently direction) for translated pages, see e.g. [[meta:Wikimedia_maintenance_notice/ar]] which benefits from the mw-content-rtl class on an LTR wiki. |
|||
</div> |
|||
<span id="Local_wikis"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
== مواقع الويكي المحلية == |
|||
== Local wikis == |
|||
صفحات MediaWiki:Common.css وما يتعلق بها يتم قلبها أيضًا. |
|||
</div> |
|||
هذا يعني أنه عليك إضافة @noflip عند الحاجة. |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">MediaWiki:Common.css pages and relatives are also flipped.</span> |
|||
<span lang="en" dir="ltr" class="mw-content-ltr">This means that you have to add @noflip where needed.</span> |
|||
انظر [[phab:T33923|T33923]]: يجب ألا يتم قلب CSS الخاص بالموقع افتراضيًا. |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
See [[phab:T33923|T33923]]: site CSS should not be flipped by default. |
|||
</div> |
|||
<span id="Issues"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
== |
== مشاكل == |
||
* تم تحسين الدعم لمعظم الميزات والإضافات الرئيسية منذ الإصدار 1.19 تقريبًا، انظر [[translatewiki:Project:Better directionality and i18n development]] لمعرفة ذلك. |
|||
</div> |
|||
* المشاكل المتبقية المعروفة: |
|||
* <span lang="en" dir="ltr" class="mw-content-ltr">Most major features and extensions have improved support since about 1.19, see [[translatewiki:Project:Better directionality and i18n development]] for that.</span> |
|||
** يتم قلب أيقونات الروابط الخارجية وفقًا لاتجاه لغة المستخدم (مشكلة بسيطة) |
|||
* <span lang="en" dir="ltr" class="mw-content-ltr">Known remaining issues:</span> |
|||
** {{ll|Extension:LiquidThreads|LiquidThreads}} - استخدم <code>contlang</code> بدلاً من <code>pagelang</code>، وإلا فإن الصفحة الخاصة ستُرجع <code>userlang</code> |
|||
** <span lang="en" dir="ltr" class="mw-content-ltr">External link icons are flipped according to user language direction (minor issue)</span> |
|||
** {{ll|Extension:WikiLove|WikiLove}} - صورة القطط المحاذاة لليسار (<code><nowiki>[[File:Blabla.jpg|left]]</nowiki></code>) يجب محاذاتها لليمين في مواقع الويكي ذات اتجاه RTL (مشكلة بسيطة) |
|||
** {{ll|Extension:LiquidThreads|LiquidThreads}} - <span lang="en" dir="ltr" class="mw-content-ltr">Use <code>contlang</code> instead of <code>pagelang</code>, otherwise special page returns <code>userlang</code></span> |
|||
** أوميغا ويكي (OmegaWiki): بحاجة إلى إصلاح شامل (يجب أن تتبع صفحات Expression و DefinedMeaning اتجاه المستخدم) + [[bugzilla:23035|23035]] |
|||
** {{ll|Extension:WikiLove|WikiLove}} - <span lang="en" dir="ltr" class="mw-content-ltr">kittens aligned left (<code><nowiki>[[File:Blabla.jpg|left]]</nowiki></code>) should be aligned right in RTL wikis (minor issue)</span> |
|||
* أخطاء البحث: https://bugzilla.wikimedia.org/buglist.cgi?quicksearch=rtl |
|||
** <span lang="en" dir="ltr" class="mw-content-ltr">OmegaWiki: needs general overhaul (Expression and DefinedMeaning pages should follow user direction) + [[bugzilla:23035|23035]]</span> |
|||
* <span lang="en" dir="ltr" class="mw-content-ltr">Search bugs: https://bugzilla.wikimedia.org/buglist.cgi?quicksearch=rtl</span> |
|||
<span id="See_also"></span> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
== |
== انظر أيضًا == |
||
</div> |
|||
* {{ll|Manual:Interface/IDs and classes}} |
* {{ll|Manual:Interface/IDs and classes}} |
||
* {{ll|Localisation}} |
* {{ll|Localisation}} |
||
* [[translatewiki:Project:Better directionality and i18n development]] |
* [[translatewiki:Project:Better directionality and i18n development]] (حوالي عام 2011) والأقدم بكثير [[m:BiDi workgroup]] |
||
* {{ll|Manual:Hooks/PageContentLanguage}} |
* {{ll|Manual:Hooks/PageContentLanguage}} |
||
* {{ll|Visual editor/Bidirectional text requirements}} |
* {{ll|Visual editor/Bidirectional text requirements}} |
||
* {{ll|Extension:RevisionSlider/Developing a RTL-accessible feature in MediaWiki - what we've learned while creating the RevisionSlider}} |
* {{ll|Extension:RevisionSlider/Developing a RTL-accessible feature in MediaWiki - what we've learned while creating the RevisionSlider}} |
||
* |
* [https://www.youtube.com/watch?v=xpumLsaAWGw مقدمة سريعة: خوارزمية يونيكود ثنائية الاتجاه] بواسطة [[User:MSchottlender-WMF]] |
||
* [http://rtl.wtf/ rtl.wtf] - |
* [http://rtl.wtf/ rtl.wtf] - مقالات وأمثلة حول كيفية دعم الاتجاه من اليمين إلى اليسار على الإنترنت |
||
[[Category:Localisation{{#translation:}}]] |
[[Category:Localisation{{#translation:}}]] |
||
Latest revision as of 00:15, 12 August 2026

يُعد دعم اتجاهات الكتابة المختلفة (من اليسار إلى اليمين ومن اليمين إلى اليسار) جانبًا مهمًا في البرمجيات متعددة اللغات. منذ MediaWiki 1.18، تحسّن الدعم بشكل ملحوظ.
تقدّم هذه الصفحة بعض المعلومات والإرشادات ذات الصلة للمطورين وإداريي الويكي، إذا كنتم ترغبون في جعل إحدى الميزات أو الإضافات متوافقة مع الواجهة من اليمين إلى اليسار ومع اختلاف اتجاهات الكتابة عمومًا.
نصائح على مستوى المستخدم
بعض النصائح العامة للمستخدمين، قبل الانتقال إلى التفاصيل الخاصة بالمطورين:
- تدعم معظم المتصفحات تغيير اتجاه مساحة تحرير النص العادي، مثل صناديق بحث المقالات، وتحرير صيغة الويكي، وملخص التعديل، وغيرها. بناءً على المتصفحات وأنظمة التشغيل، يتم ذلك بواسطة Ctrl+⇧ Shift (كروم وإنترنت إكسبلورر على ويندوز)، Ctrl+⇧ Shift+X (فايرفوكس)، Option-Click-تغيير الاتجاه (ماك). من المفترض أن يساعدك هذا في الكتابة باتجاه مختلف عن الاتجاه المعتاد للموقع.
- عند كتابة قسم بلغة ذات اتجاه يختلف عن اتجاه الموقع، أضف وسم div مع خصائص lang و dir و class المناسبة. على سبيل المثال، عند كتابة قسم باللغة الإنجليزية في ويكيبيديا العربية، اكتب
<div lang="en" dir="ltr" class="mw-content-ltr">في البداية و</div>في النهاية. - عند كتابة بضع كلمات فقط داخل فقرة، ضعها داخل وسم
<span>مع خصائص lang و dir المناسبة. (تحتوي العديد من مواقع الويكي على قالب لهذا الغرض، مثل {{lang}}). - لفصل الأرقام عن كلمة مجاورة ذات اتجاه مختلف، استخدم علامات RLM أو LRM. العديد من مواقع الويكي تحتوي على قوالب لهذا الغرض، على سبيل المثال {{כ}} في ويكيبيديا العبرية، و {{RLM}} في ويكيبيديا العربية، و {{رچ}} في ويكيبيديا الفارسية، إلخ. عندما يكون هناك قالب متاح، يُفضل عادةً استخدامه بدلاً من استخدام حرف يونيكود نفسه.
يمكنك الإبلاغ عن الأخطاء في التعامل مع النصوص من اليمين إلى اليسار (RTL) في فابريكاتور في أي مشروع متعلق بميدياويكي باستخدام وسم RTL.
محمل الموارد (ResourceLoader)
بفضل ResourceLoader الذي يتضمن CSSJanus، يتم قلب CSS تلقائيًا من اليمين إلى اليسار عندما تكون لغة المستخدم RTL. هذا هو الوضع الافتراضي منذ 1.18 (في الإصدارات السابقة كان يعتمد على لغة محتوى الويكي). هناك القليل نسبيًا من CSS الذي يجب أن يعتمد على لغة المحتوى.
- انتباه: عند استخدام وضع التنقيح الخاص بمحمل الموارد (ResourceLoader)، قد يتم تصيير CSS بشكل غير متسق مقارنة بوضع الإنتاج. كحل مؤقت، اختبر واجهة RTL مع إيقاف تشغيل وضع التنقيح. (يتم تتبع المشكلة على أنها Phabricator:T29025.)
ما نوع اللغات؟
مقال رئيسي: Manual:Language
- $wgLang - لغة المستخدم (والاتجاه الخاص بها)
- $wgContLang - لغة محتوى الموقع (والاتجاه الخاص بها) -> هنا من اليسار لليمين (LTR)
- Title->getPageLanguage() - لغة محتوى الصفحة (والاتجاه الخاص بها) -> افتراضيًا نفس لغة محتوى الموقع
- هناك بعض الاستثناءات الافتراضية: انظر أدناه
- يمكن تعيينه في الإضافات بواسطة الخطاف PageContentLanguage
- هذا يعيّن جدول المحتويات (TOC) (وأشياء أخرى مثل القواعد، رغم أنها ليست ذات صلة غالبًا) إلى تلك اللغة. للقيام بذلك فقط، استخدم parserOptions->setTargetLanguage()
- في الإضافات التي يجب أن تظل متوافقة مع الإصدار 1.17، يمكنك استخدام wfUILang()، ومع ذلك فإن هذا يكسر التوافق مع 1.16 وما دونه. هذا يُرجع $wgLang في الإصدار 1.18 وما فوق ولكنه يُرجع $wgContLang في 1.17 (افتراضيًا).
ماذا يجب أن يتبع أي نوع؟
- الصفحات الخاصة تتبع لغة المستخدم افتراضيًا.
- يجب أن يكون الكود المصدري باللغة الإنجليزية (يتم تعيين صفحات CSS/JS إلى الإنجليزية افتراضيًا).
- الصفحات التي تحتوي على ترجمة كصفحات فرعية يجب أن تتبع لغة الترجمة (على سبيل المثال "Page" هي wgContLang، و "Page/he" هي "he"). هذا هو الوضع الافتراضي لنطاق ميدياويكي.
- صناديق الإدخال ومساحات النص تتبع اتجاه المحتوى افتراضيًا.
- عند عرض فرق التعديلات، فإنه يتبع لغة المستخدم، لكن نص الفرق الفعلي يكون بلغة محتوى الصفحة.
ماذا يجب أن أضيف في الكود المصدري؟
- أي شيء في الصفحات الخاصة يختلف عن لغة المستخدم يجب أن يحتوي على وسم
<div dir="..." lang="...">.- مثال: SpecialRecentchanges->setTopText() الذي يضيف رسالة "recentchangestext" بلغة محتوى الويكي.
- أي شيء في النطاقات المخصصة يحتوي على نص يختلف عن محتوى الويكي الافتراضي يجب أن يحتوي أيضًا على وسم
div. - عندما لا يكون نص فرق التعديلات هو نفس لغة محتوى الصفحة، استخدم
$diff->setTextLanguage( 'code' );حيث $diff هو كائن DifferenceEngine.
خصائص lang/dir
يجب عليك استخدام HTML:
Xml::rawElement( 'div', array( 'lang' => $wgContLang->getCode(), 'dir' => $wgContLang->getDir() );
لكن أحيانًا يكون ذلك صعبًا في العناصر المُنشأة ديناميكيًا ويمكنك اللجوء إلى CSS:
.class { direction: ltr; }
محتوى الويكي
| إصدار ميدياويكي: | ≥ 1.18 |
يمكنك استخدام أصناف mw-content-ltr و mw-content-rtl للاستفادة من روابط تحرير الأقسام وعناصر ul/ol بناءً على ذلك الاتجاه.
- على سبيل المثال
Xml::rawElement( 'div', array(
'class' => 'mw-content-' . $wgLang->getDir(),
'lang' => $wgLang->getCode(),
'dir' => $wgLang->getDir(),
'Text'
);
يُستخدم هذا بالطبع لمحتوى صفحات المقالات.
- في صفحات الملفات، يُضاف فقط حول النص الفعلي بينما بقية صفحة الملف عبارة عن واجهة مستخدم مخصصة (تاريخ الملف، وما إلى ذلك).
- في صفحات التصنيفات يُضاف كما في الصفحات العادية، لكن النص بلغة المستخدم يتم تضمينه في
divمع خصائصlangوdirوفقًا للغة المستخدم. - في الصفحات الخاصة لا يُضاف لأنها تكون في الغالب بلغة المستخدم. يمكن أن يكون جزء من النص في الصفحات الخاصة بلغة المحتوى، والذي يجب عندئذٍ تضمينه في هذه الأصناف. يتم استخدامه على سبيل المثال في إضافة CodeReview لملخص الكود وتعليقاته، والتي يمكن أن تحتوي على عناصر ul/ol (نص الويكي * و #) بلغة محتوى الويكي ومن حيث المبدأ ليس بلغة المستخدم بوضوح.
يجب عدم إضافة عناصر واجهة المستخدم داخل هذه الأصناف. على سبيل المثال، روابط التصنيفات ونموذج مراجعة FlaggedRevs موجودة داخل #bodyContent ولكن خارج .mw-content-ltr/rtl.
انظر أيضًا المعرفات والأصناف (IDs and classes).
أصناف body (body classes)
يحتوي وسم body على صنف ltr أو rtl افتراضيًا، والذي يتبع لغة المستخدم.
لا ينبغي لك استخدام ذلك، لأن CSS يتم قلبه تلقائيًا بناءً على لغة المستخدم.
يتميز وسم body أيضًا بصنف sitedir-ltr و sitedir-rtl جديدين (بدءاً من الإصدار 1.18) يتبعان $wgContLang->getDir().
إذا كانت هناك حاجة لذلك، يمكن إضافة "userlang-ltr/rtl" و/أو "pagelang-ltr/rtl" أيضًا.
المحاذاة float/text-align
يمكنك استخدام $wgLang->alignStart(), $wgContLang->alignStart(), $wgLang->alignEnd(), $wgContLang->alignEnd() والذي يعطي القيم المناسبة 'right' أو 'left'.
يمكنك استخدام float أو text-align من CSS والذي تنعكس قيمته (left/right) للغات الواجهة من اليمين إلى اليسار (RTL).
أمثلة
Special:AllMessages هي صفحة خاصة، مما يعني أنها تتبع اتجاه لغة المستخدم. ومع ذلك، يجب أن تتبع الرسائل الفعلية اتجاه اللغة المحددة.
- Special:Allmessages = الإنجليزية، LTR (من اليسار إلى اليمين)
- Special:Allmessages/he = العبرية، RTL (من اليمين إلى اليسار)
الخلايا في الجدول التي تحتوي على محتوى الرسائل، لها خاصية lang و dir.
تقوم الإضافة Translate، بالاستفادة من خطاف PageContentLanguage، بتعيين اللغة الصحيحة (وبالتالي الاتجاه الصحيح) للصفحات المترجمة، انظر على سبيل المثال meta:Wikimedia_maintenance_notice/ar والتي تستفيد من صنف mw-content-rtl في موقع ويكي LTR.
مواقع الويكي المحلية
صفحات MediaWiki:Common.css وما يتعلق بها يتم قلبها أيضًا. هذا يعني أنه عليك إضافة @noflip عند الحاجة.
انظر T33923: يجب ألا يتم قلب CSS الخاص بالموقع افتراضيًا.
مشاكل
- تم تحسين الدعم لمعظم الميزات والإضافات الرئيسية منذ الإصدار 1.19 تقريبًا، انظر translatewiki:Project:Better directionality and i18n development لمعرفة ذلك.
- المشاكل المتبقية المعروفة:
- يتم قلب أيقونات الروابط الخارجية وفقًا لاتجاه لغة المستخدم (مشكلة بسيطة)
- LiquidThreads - استخدم
contlangبدلاً منpagelang، وإلا فإن الصفحة الخاصة ستُرجعuserlang - WikiLove - صورة القطط المحاذاة لليسار (
[[File:Blabla.jpg|left]]) يجب محاذاتها لليمين في مواقع الويكي ذات اتجاه RTL (مشكلة بسيطة) - أوميغا ويكي (OmegaWiki): بحاجة إلى إصلاح شامل (يجب أن تتبع صفحات Expression و DefinedMeaning اتجاه المستخدم) + 23035
- أخطاء البحث: https://bugzilla.wikimedia.org/buglist.cgi?quicksearch=rtl
انظر أيضًا
- Manual:Interface/IDs and classes
- التوطين
- translatewiki:Project:Better directionality and i18n development (حوالي عام 2011) والأقدم بكثير m:BiDi workgroup
- Manual:Hooks/PageContentLanguage
- Visual editor/Bidirectional text requirements
- Extension:RevisionSlider/Developing a RTL-accessible feature in MediaWiki - what we've learned while creating the RevisionSlider
- مقدمة سريعة: خوارزمية يونيكود ثنائية الاتجاه بواسطة User:MSchottlender-WMF
- rtl.wtf - مقالات وأمثلة حول كيفية دعم الاتجاه من اليمين إلى اليسار على الإنترنت