Skip to content

Latest commit

 

History

History
380 lines (276 loc) · 19.5 KB

README.md

File metadata and controls

380 lines (276 loc) · 19.5 KB

الهوكيلة

لماذا لا يمكنني تشغيل تطبيقي أو موقعي بالكامل من خلال الترجمة من Google والحصول على ترجمة أساسية بلغة أخرى؟

الآن انت تستطيع!

الاسم hokeylization هو Portmanteau ، ويعني "hokey localization"

إنه أمر مضحك إلى حد ما لأنه بسيط للغاية: فهو يرسل سلاسل إلى خدمة الترجمة من Google

وهو بسيط ولكنه قوي جدًا أيضًا. يحتوي على دعم خاص لمستندات HTML ، مقاود JS قوالب ، و Markdown ملفات.

تستطيع ان تترجم:

  • كائن JavaScript يحتوي على رسائل
  • أي عدد من الملفات أو الدلائل ، يتم عبور الدلائل دائمًا بشكل متكرر

اقرأ هذا بلغة أخرى

تمت ترجمة هذا المستند README.md ، باستخدام أداة hokeylization نفسها ، إلى ** كل لغة تدعمها ترجمة Google! **

أنا متأكد من أنها ليست مثالية ، لكني آمل أن تكون أفضل من لا شيء!

[🇸🇦 عربي](lang / ar / README.md) [🇧🇩 بنغالي](lang / bn / README.md) [🇩🇪 الألمانية](lang / de / README.md) [🇺🇸 إنجليزي](lang / en / README.md) [🇪🇸 إسباني](lang / es / README.md) [🇫🇷 فرنسي](lang / fr / README.md) [🇹🇩 الهوسا](lang / ha / README.md) [🇮🇳 هندي](lang / hi / README.md) [🇮🇩 إندونيسي](lang / id / README.md) [🇮🇹 إيطالي](lang / it / README.md) [🇯🇵 باليابانية](lang / ja / README.md) [🇰🇷 كوري](lang / ko / README.md) [🇮🇳 مارانثي](lang / السيد / README.md) [🇵🇱 البولندية](lang / pl / README.md) [🇧🇷 برتغالي](lang / pt / README.md) [🇷🇺 الروسية](lang / ru / README.md) [🇰🇪 السواحيلية](lang / sw / README.md) [🇵🇭 تاجالوج](lang / tl / README.md) [🇹🇷 التركية](lang / tr / README.md) [🇵🇰 الأردية](lang / ur / README.md) [🇻🇳 فيتنامي](lang / vi / README.md) [🇨🇳 الصينية](lang / zh / README.md)

** [📚 ... كل اللغات ...](lang / README.md) **

هل هناك مشكلة في هذه الترجمة من README؟

هذه الترجمة المحددة لـ [README] الأصلي (https://github.com/cobbzilla/hokeylization/blob/master/README.md) قد يكون معيبًا - * نرحب بالتصحيحات! * يُرجى إرسال طلب سحب على GitHub ، أو إذا لم تكن مرتاحًا لفعل ذلك ، افتح مشكلة

عند إنشاء مشكلة GitHub جديدة حول الترجمة ، يرجى القيام بما يلي:

  • تضمين عنوان URL للصفحة (نسخ / لصق من شريط عنوان المتصفح)
  • تضمين النص الخاطئ بالضبط (نسخ / لصق من المتصفح)
  • يرجى وصف ما هو الخطأ - هل الترجمة غير صحيحة؟ هل التنسيق معطل بطريقة ما؟
  • يرجى تقديم اقتراح بترجمة أفضل ، أو كيفية تنسيق النص بشكل صحيح
  • شكرًا لك!

محتويات

  • [المصدر](# المصدر)
  • [الدعم والتمويل](# دعم وتمويل)
  • [التثبيت](# التثبيت)
  • [إعداد](# إعداد)
  • [Translating a JavaScript string Resource file](# Translating-a-JavaScript-string-Resource-file)
  • [ترجمة دليل ملفات نصية](# Translating-a-directory-of-text-files)
  • [خيارات أخرى](# خيارات أخرى)
  • [أوامر دفعية JSON](أوامر دفعة JSON #)

مصدر

الدعم والتمويل

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

لذلك سأحاول كتابة برنامج مفيد ومعرفة ما إذا كان ذلك يعمل

إذا كنت تستمتع باستخدام هذا البرنامج ، فسأكون سعيدًا جدًا لتلقي حتى ملفات أصغر مساهمة شهرية عبر Patreon

شكرًا لك!

تثبيت

لاستخدام أداة سطر الأوامر ، قم بالتثبيت باستخدام npm yarn :

npm install -g hokeylization
yarn global add hokeylization

لاستخدامها كمكتبة ، قم بتثبيت الإصدار lite ، وهو أصغر بكثير:

npm install -g hokeylization-lite
yarn global add hokeylization-lite

ثم انظر إلى التعليمات الخاصة hokey :

hokey --help
hokey -h

هل تريد رؤية الإخراج بلغتك أو بلغة أخرى؟

يحاول hokey اكتشاف اللغة تلقائيًا من متغيرات بيئة قوقعتك

يمكنك فرض لغة عن طريق تعيين متغير البيئة LC_ALL :

LC_ALL=it hokey --help

لاحظ أنه إذا قمت بتثبيت hokeylization-lite ، فإن تعليمات الأمر تكون متاحة فقط باللغة الإنجليزية

اقامة

قم بتعيين متغير البيئة GOOGLE_TRANSLATE_PROJECT_ID لتحديد مشروع ترجمة Google الخاص بك

عيّن متغير البيئة GOOGLE_APPLICATION_CREDENTIALS على بيانات اعتماد JSON التي نزّلتها بعد معرفة كيفية عمل المصادقة على Google cloud (يمكن أن يكون ذلك ممتعًا)

إذا كنت تعمل من التعليمات البرمجية المصدر ، فيمكنك أيضًا وضعها في ملف .env في المصدر الدليل الذي سيتم تحميله في وقت التشغيل عبر dotenv

ترجمة ملف مورد سلسلة JavaScript

يجب أن يكون جدول السلسلة ** الخاص بك ** في ملف JavaScript بأحد هذين الشكلين:

تصدير ES6:

export default {
  string_key: "some value",
  another_key: "another value",
  ... more keys ...
}

تصدير CommonJS

module.exports = {
  string_key: "some value",
  another_key: "another value",
  ... more keys ...
}

إذا كان هذا الملف يسمى myfile.en.js ، فيمكنك ترجمته إلى الإسبانية والألمانية باستخدام:

hokey -l es,de -o myfile.LANG.js myfile.en.js

إن LANG الواردة أعلاه خاصة - إنها كلمة محجوزة في هذه الأداة!

يتم استبدال LANG برمز اللغة لملفات الإخراج

وهكذا يقوم الأمر أعلاه بإنشاء الملفات:

myfile.es.js
myfile.de.js

-l / --languages هو قائمة رموز لغة ISO مفصولة بفواصل مدعوم من Google Translate

إذا كان ملف الإخراج موجودًا بالفعل ، فسيتم فحصه لتحديد المفاتيح الموجودة بالفعل. لن تتم ترجمة المفاتيح الموجودة. سيتم إنشاء وإلحاق ترجمات المفاتيح المفقودة إلى نهاية كائن JS. تتم إعادة كتابة الملف بأكمله دائمًا.

لفرض إعادة ترجمة جميع المفاتيح ، استخدم الخيار -f / --force

ترجمة دليل ملفات نصية

يمكنك أيضًا ترجمة دليل الملفات. hokeylization سوف تزور بشكل متكرر كل ملف في الدليل وتشغيل محتوياته من خلال ترجمة جوجل ، وحفظ الإخراج إلى ملف مُسمى بشكل مماثل في شجرة دليل منفصلة

عندما يكون هدف ترجمتك هو دليل ، يتم تمكين هذا الوضع

يحدد الخيار -o / --outfile دليل الإخراج

** تحذير كبير **: عند ترجمة الدلائل ، ** لا ** حدد دليل إخراج هذا ضمن دليل الإدخال الخاص بك! إذا قمت بذلك ، فسوف:

  • تحريض العودية اللانهائية
  • تشغيل فاتورة Google الخاصة بك
  • املأ القرص الخاص بك
  • أقل متعة

فيما يلي مثال لما * لا يجب فعله *:

hokey -l es -o templates/es templates # <--- DON'T DO THIS!

عند تشغيل ذلك ، تتم كتابة الملفات المترجمة إلى templates/es ، وبالتالي تصبح جديدة ملفات المصدر المراد ترجمتها ، نظرًا لأنها موجودة ضمن templates/ - تستمر هذه العملية إلى الأبد ، لا تفعل ذلك!

الاستخدام الصحيح

حسنًا ، لنفترض أن لديك بعض قوالب البريد الإلكتروني في دليل:

templates/email/en/welcome.txt
templates/email/en/welcome.html
templates/email/en/verify-account.txt
templates/email/en/verify-account.html
templates/email/en/reset-password.txt
templates/email/en/reset-password.html

لترجمة كل ذلك إلى الإسبانية والألمانية ، قم بتشغيل:

hokey -l es,de -o templates/email/LANG templates/email/en

في ما سبق ، LANG كلمة محجوزة وسيتم استبدالها برمز لغة ISO

ماذا يحدث عندما يتم تشغيل ما سبق:

  • سيتم إنشاء مجلدات "القوالب / البريد templates/email/es " و templates/email/de " (إذا لم تكن موجودة)
  • سيتم ترجمة كل ملف في templates/email/en " إلى الإسبانية والألمانية
  • لن يتم إعادة إنشاء ملفات الإخراج الموجودة إلا إذا استخدمت -f / --force
  • ستنتهي ببنية دليل وملفات متطابقة داخل es de كما هو الحال لديك ضمن en

خيارات أخرى

ركض جاف

قم بتمرير -n / --dry-run لعرض ما يمكن فعله ، ولكن لا تقم فعليًا بإجراء أي استدعاءات لواجهة برمجة التطبيقات أو كتابة أي ملفات

القوة

مرر -f " / --force دائمًا ، حتى لو كانت موجودة بالفعل

مباراة

قم بتمرير -m / --match للحد من الملفات التي تتم معالجتها عند التشغيل في وضع الدليل

قد لا ترغب دائمًا في ترجمة * كل * ملف في دليل المصدر إلى الدليل الهدف

قيمة الخيار -m / --match هي عبارة عن regex (احذر من قواعد اقتباس الصدفة!) التي تحدد ما هي الملفات التي يجب ترجمتها

في حالة الشك ، يمكنك دمج هذا الخيار مع -n / --dry-run لمعرفة الملفات التي سيتم ترجمتها

يستبعد

أحيانًا يتطابق -m مع عدد كبير جدًا من الملفات. استخدم الخيار -e " / --excludes صراحةً الملفات التي لولا ذلك لتتطابق

يمكنك سرد العديد من regexes ، مفصولة بمسافات

قد يكون الاستخدام الشائع: --excludes node_modules dist \.git build tmp

المقاود

قد تحتوي السلاسل المراد ترجمتها على قوالب {{ handlebars }} ، إما باستخدام اثنين أو ثلاثة من الأقواس المتعرجة

ربما تريد * DON'T * أن تتم ترجمة العناصر الموجودة داخل تلك القوالب

مرر علامة -H " / --handlebars {{ ... }}

تخفيض السعر

Markdown ليس نصًا ولا html ، لذلك تواجه ترجمة Google بعض الصعوبات في استخدامه

تتيح العلامة -M / --markdown معالجة خاصة لملفات markdown

مع ملفات markdown ، إذا لم تستخدم علامة -M ، فستجد على الأرجح هذه المشكلات:

  • كسر الروابط. في الترجمة ، يظهر حرف مسافة بعد انتهاء وصف ارتباط علامة التبويب (بعلامة ] ) ولكن قبل أن يبدأ ارتباط الهدف الخاص به (بـ ( ). يؤدي هذا إلى عرض علامة التخفيض بشكل غير صحيح ، والارتباط معطل عند عرض المستند.
  • يتم ترجمة كتل التعليمات البرمجية. لا تعرف خدمة Google Translate ما الذي يعتبره تخفيض السعر في الكود وما لا يعرفه
  • تباعد غير صحيح لكتل التعليمات البرمجية ذات المسافات البادئة. يصعب الحفاظ على المسافات في الترجمة
  • ستتم ترجمة الأشياء الموجودة داخل backticks ، عندما تريد دائمًا أن تكون قيمًا حرفية

عند تمكين علامة "-M" / --markdown -M

  • النمط ]( سيتم تكثيفه إلى ]( وبالتالي إصلاح روابط تخفيض السعر المعطلة
  • سيتم وضع غلاف "بدون ترجمة" حول كتل التعليمات البرمجية ذات المسافة البادئة ، مع الحفاظ على المسافة البادئة المناسبة والتأكد من عدم ترجمتها
  • سيتم وضع غلاف "بدون ترجمة" حول النص داخل backticks لضمان عدم ترجمتها

عملية كما

عادة تتم معالجة كل شيء كنص عادي

إذا كان المحتوى الخاص بك بتنسيق HTML ، فسيتم تشويهه ما لم تمرر الخيار -p html / --process-as html

منقي

للمغامرين: عند معالجة الملفات في دليل ، يمكنك تمرير الخيار -F / --filter لتصفية الإخراج قبل كتابته في نظام الملفات

يجب أن تكون قيمة هذا الخيار عبارة عن مسار إلى ملف JS يقوم بتصدير وظيفة تسمى filter

يجب أن تكون وظيفة async filter await سيتم استدعاء "انتظار" عليها

قبل كتابة الملفات على القرص ، سيتم تمرير محتويات الملف بالكامل إلى وظيفة filter كسلسلة

القيمة filter هي ما سيتم كتابته بالفعل إلى التخزين

وبالتالي ، لديك سيطرة كاملة على ما سيتم كتابته في النهاية

سيتم البحث عن البرنامج النصي filter عامل التصفية" في المواقع التالية (مع .js إلى عامل التصفية الاسم ، ما لم يكن ينتهي بالفعل .js )

  • الدليل الحالي
  • دليل باسم .hokey-filters داخل الدليل الحالي
  • دليل باسم ${HOME}/.hokey-filters ، حيث يكون ${HOME}` هو الدليل الرئيسي للمستخدم الحالي
  • [دليل الفلاتر] المدمج (https://github.com/cobbzilla/hokeylization/tree/master/util/filter)

معلمات الفلتر

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

مساعدة

استخدم -h " / --help لإظهار المساعدة

أوامر دفعة JSON

باستخدام الخيار -j / --json ، يمكنك تشغيل عدة أوامر hokey

يُطلق على هذا الملف اسم hokey.json ، ولكن يمكنك تسميته كما تريد

إذا قمت بتمرير دليل على أنه الخيار "-j" ، hokey عن hokey.json -j هذا الدليل

يجب أن يحتوي ملف JSON على كائن واحد. داخل هذا الكائن ، تكون أسماء خصائصه هي نفسها خيارات سطر الأوامر ، بالإضافة إلى خاصية إضافية واحدة تسمى hokey

خاصية hokey هي مجموعة من الأوامر لتشغيلها. سيتم الإعلان عن الخصائص ضمن هذه الأوامر تجاوز أي تصريحات مكررة في الكائن الخارجي.

داخل كل كائن في المصفوفة hokey ، يجب تحديد name الإدخال والإخراج

فيما يلي مثال على hokey.json

{
    "inputLanguage": "en",
    "languages": "es,fr,ja", # can also be an array of strings
    "force": false,
    "match": null,
    "processAs": null,
    "excludes": ["exclude-1", "exclude-2"],
    "handlebars": false,
    "markdown": false,
    "regular": false,
    "dryRun": false,
    "filter": "theFilter.js",
    "hokey": [
      {
        "name": "locale names",
        "infile": "messages/locales_en.js",
        "outfile": "messages/locales_LANG.js",
        "handlebars": true
      },
      {
        "name": "CLI messages",
        "infile": "messages/en_messages.js",
        "outfile": "messages/LANG_messages.js",
        "handlebars": true
      },
      {
        "name": "README",
        "infile": "README.md",
        "outfile": "lang/LANG/",
        "excludes": ["lang/", "node_modules/", "\\.git/", "tmp/"],
        "filter": "relativizeMarkdownLinks lang",
        "markdown": true,
        "index": "lang/README.md"
      }
    ]
}

ملفات إدخال متعددة

قم بتمرير مصفوفة من مسارات الملفات كـ infiles بدلاً من مسار واحد infile ، كما في هذا المثال:

{
  ... [
    {
      "name": "my docs",
      "infiles": ["README.md", "INSTALL.md", "TUTORIAL.md"],
      "outfile": "docs/LANG/",
      "markdown": true
  ]
}

الفهارس

عند الترجمة إلى العديد من اللغات ، يمكن hokey إنشاء ملف فهرس يسرد جميع الترجمات التي تمت ويوفر روابط لهم

  • عند إنشاء الفهارس ، يمكن أن يكون لديك مصدر إدخال واحد فقط *

مرر الخيار -I " / --index ، القيمة هي المكان الذي سيتم إنشاء ملف الفهرس فيه ، والذي يمكن أن يكون ملفًا أو دليل. إذا كان دليلًا ، فسيتم استخدام اسم ملف افتراضي ، بناءً على القالب (انظر أدناه)

استخدم -A / --index-template لتحديد كيفية تنسيق ناتج الفهرس. يمكنك تحديد "html" ، "markdown" أو "text" أو مسار الملف إلى نموذجك HandlebarsJS

إذا حددت قالبك الخاص ، يجب عليك أيضًا تحديد ملف (وليس دليل) لـ -I / --index اختيار

استمتع بوقتك في ترجمة اللغات!