وحدات قابلة للترجمة
كيف يمكننا جعل ترجمة وحدات لوا مريحة بقدر ترجمة ميدياويكي والامتدادات على translatewiki.net؟
هذه مشاورة أولية حول تنفيذ الوحدات القابلة للترجمة. وبقيت هذه المشاورة مفتوحة للتعليقات حتى نهاية سبتمبر 2020. الهدف من هذه المجموعة من الوثائق هو فهم احتياجات المطورين والمستخدمين لوحدات لوا على الويكي بطريقة تُفيد مهندسي البرمجيات الذين سيطورون الحل المحسن.
المقدمة
الوحدات القابلة للترجمة هو مشروع يهدف إلى تعريف وتنفيذ وتوثيق ونشر إطار عمل لتحسين القدرة على ترجمة الوحدات ومشاركتها.
الهدف هو أن تكون سلاسل واجهة المستخدم (الرسائل) في وحدات سكريبونتو على مواقع الويكي متعددة اللغات، مثل ويكيداتا وكومنز، قابلة للتعريب بسهولة، على غرار نواة ميدياويكي، والإضافات، والصفحات القابلة للترجمة.
الأسئلة التي لدينا لأعضاء المجتمع:
- عدة خيارات لتنظيم الكود والرسائل مُقترحة. ما هي أفضل طريقة لتنظيم كود الوحدة؟
- بمجرد تطوير هذا الإطار ونشره، هل سيكون من الملائم تطوير وحدات جديدة باستخدام هذا الإطار وربما تحويل الوحدات الحالية لاستخدامه؟
- Which existing modules would you prioritize translating?
If you mostly edit articles and other wiki pages, your user experience won’t be affected significantly, but your feedback is nevertheless welcome.
If you are involved in maintaining templates or Scribunto modules or in administering translatable pages, your user experience may change significantly in doing these tasks, so your feedback is very important.
Background
All Wikimedia projects have key features implemented as either or both wikitext templates and Lua modules: hatnotes, infoboxes, welcome messages, formatted links and references, image descriptions and license information, coordinates, and many others.
These templates and modules are a form of code. This code is developed by skilled, experienced members of the editing communities, and implements features that the communities want, need, and now regularly use. Though most are individually simple, collectively they are comparable in their complexity, criticality, and ubiquity to the code of MediaWiki extensions. Unlike extensions, however, templates and modules don’t have a robust, stable, and consistent framework for internationalization and localization, even though many of them are used in multiple languages.
All MediaWiki extensions and MediaWiki core are localized on translatewiki.net, where volunteer translators can conveniently see what messages (strings) in which components need translation into their language, and can translate them, without dealing with any code beyond simple wikitext. To use translatewiki.net they only ever need to know basic wiki syntax. The translatewiki.net software also checks the translation for technical validity and provides tools for updating outdated translations, translation statistics, searching, filtering, etc.
Conversely, templates or modules don’t have anything like this. If they are translatable at all, this is done by editing wiki pages with complex wiki syntax or Lua code. This process is error-prone, less discoverable, and considerably more difficult. Some templates are translatable as pages using the Translate extensions, which makes their localization experience similar for translators to the experience of localizing extensions, but the framework for doing this is not consistent for the template and module developers.
It is therefore desirable to make it possible to translate the human-readable user interface messages of modules and templates using a process that is comparable to the process of translating MediaWiki core and extensions.
Scope
The scope of this project only includes the translation of user interface messages used in modules, and only within a single wiki. This particularly pertains to Wikimedia sites that are already multilingual: Commons, Wikidata, Meta, mediawiki.org, Wikispecies, and others.
This current proposal does not deal with the following things:
- Localization of templates. As mentioned above, this is closely related and probably desirable as well, but it is left for a later stage. The modules’ technology (Scribunto) is more autonomous, unlike templates, which are tightly integrated with core MediaWiki, and they have somewhat different localization requirements. However, the work on translatable modules should try to be forward compatible, so that whatever is done here will also be reusable for templates.
- Localization of module titles and function identifiers. Templates and their parameters usually have names in the content language of the wiki. Unlike templates, modules are usually invoked from templates and only rarely directly from content pages or discussion pages. It is therefore not necessary to allow their translation. This project only deals with the internationalization and localization of the messages that the modules show to the readers.
- Localization of gadgets. Similarly to templates, gadgets should be conveniently localizable, but their technology is significantly different. It may be good to make it reusable, but it’s not the highest priority for this project.
- Using templates and modules across wikis (“Global templates”). This is desirable as well, and making modules robustly translatable will make the implementation of Global templates and modules much easier. This is not in the scope of the project described in this document, however. It makes sense to make modules translatable as one of the first steps towards global modules and templates, and the project should certainly try to be forward-compatible with global templates and modules, but it nevertheless stands on its own.
- Data conversion. The conversion of digits (123 / ١٢٣ / १२३ / ၁၂၃), units (km / miles), script variants (Latin / Cyrillic Serbian, Simplified / Traditional Chinese, etc.), and so on are not a part of this project. These things are already handled by MediaWiki internationalization functions or by the code of modules and templates. This project is only about the user interface messages.
More information
- Discuss at Talk:Translatable modules.
- Stakeholders in the project
- Development and design principles
- Current solutions
- Proposed solutions - the part that needs the most discussion and review
- Engineering considerations