بلاگ پر واپس جائیں

اکیلے ڈویلپرز کے لیے Django ترجمہ: ہفتوں سے منٹوں تک

2026-02-11 9 منٹ پڑھنے کا وقت
اکیلے ڈویلپرز کے لیے Django ترجمہ: ہفتوں سے منٹوں تک

آپ نے ایک Django ایپ بنائی۔ یہ کام کر رہی ہے، صارفین سائن اپ کر رہے ہیں، اور اب آپ ان لوگوں تک پہنچنا چاہتے ہیں جو انگریزی نہیں بولتے۔ مسئلہ دیکھتے ہی واضح ہو جاتا ہے: Django کا بین الاقوامی کاری فریم ورک قابلِ ترجمہ سٹرنگز کو نکالنے میں بہترین ہے، لیکن ترجمے بھرنے کے لیے یہ بالکل کچھ نہیں کرتا۔ یہ حصہ آپ کو خود کرنا ہوتا ہے۔

اگر آپ ایک اکیلے ڈویلپر ہیں یا دو لوگوں کی ٹیم ہیں، تو makemessages اور مکمل طور پر ترجمہ شدہ ایپ کے درمیان فاصلہ بہت بڑا لگ سکتا ہے۔ میں حقیقت پسندانہ آپشنز کا جائزہ لوں گا، بتاؤں گا کہ ان میں سے زیادہ تر چھوٹی ٹیموں کے لیے کیوں کام نہیں کرتے، اور ایک ایسا ورک فلو دکھاؤں گا جو ترجمے کو کئی ہفتوں کے کام سے دو منٹ کے کمانڈ میں بدل دیتا ہے۔

روایتی آپشنز (اور یہ کیوں تکلیف دہ ہیں)

آپشن 1: Google Translate سے کاپی پیسٹ

سب سے عام پہلی کوشش۔ آپ اپنی .po فائل کھولتے ہیں، ہر msgid کو Google Translate میں کاپی کرتے ہیں، نتیجہ msgstr کے طور پر واپس پیسٹ کرتے ہیں، اور دہراتے ہیں۔ ہر سٹرنگ کے لیے۔ ہر زبان میں۔

ایک عام Django ایپ میں 200-500 قابلِ ترجمہ سٹرنگز ہوتی ہیں۔ اگر آپ پانچ زبانوں میں ترجمہ کر رہے ہیں تو یہ 1,000-2,500 کاپی پیسٹ سائیکل ہیں۔ چاہے ہر ایک میں صرف 30 سیکنڈ لگیں، آپ 8-20 گھنٹے کے بور کرنے والے کام کی بات کر رہے ہیں۔ اور یہ فارمیٹنگ کی غلطیوں، ٹوٹے ہوئے پلیس ہولڈرز، اور ناگزیر طور پر آنے والی متضاد اصطلاحات کو درست کرنے سے پہلے کی بات ہے۔

اس سے بھی بدتر، اگلے سپرنٹ میں نئی سٹرنگز شامل کرنے پر یہ سب دوبارہ کرنا ہوتا ہے۔

آپشن 2: پیشہ ور مترجمین

پیشہ ورانہ ترجمے کی لاگت عام طور پر $0.10 سے $0.25 فی لفظ ہوتی ہے۔ 500 سٹرنگز والی Django ایپ جس میں اوسطاً 8 الفاظ فی سٹرنگ ہیں، تقریباً 4,000 الفاظ بنتے ہیں۔ $0.15/لفظ پر، یہ فی زبان $600 ہے، یا پانچ زبانوں کے لیے $3,000۔

VC فنڈڈ سٹارٹ اپ کے لیے یہ معمولی رقم ہے۔ لیکن $9/ماہ فی صارف چارج کرنے والے اکیلے ڈویلپر کے لیے، یہ آپ کی پوری سہ ماہی آمدنی کھا سکتا ہے۔

آپشن 3: Fiverr اور فری لانس مارکیٹ پلیسز

آپ Fiverr پر $20-50 فی زبان میں مترجمین تلاش کر سکتے ہیں۔ کچھ واقعی ماہر ہوتے ہیں۔ بہت سے صرف آپ کا ٹیکسٹ Google Translate میں پیسٹ کر کے آپ سے پیسے لے رہے ہوتے ہیں۔ آپ کو آپشن 1 جیسی ہی کوالٹی ملتی ہے، مزید ایک اضافی مواصلاتی دور اور ایک ہفتے کا انتظار۔

آپشن 4: Crowdin، Transifex، یا Weblate

یہ پلیٹ فارمز طاقتور ہیں، لیکن یہ مخصوص ترجمہ ٹیموں والے پروجیکٹس کے لیے بنائے گئے ہیں۔ سیٹ اپ اوور ہیڈ (ریپوزٹریز سنک کرنا، ٹرانسلیشن میموری کنفیگر کرنا، کنٹریبیوٹر ایکسیس منیج کرنا) اس وقت ضرورت سے زیادہ ہے جب پروجیکٹ پر صرف آپ اکیلے ہوں۔ پیڈ ٹیئرز کی ماہانہ سبسکرپشنز $30-150/ماہ سے شروع ہوتی ہیں، اور فری ٹیئرز میں بھی آپ کو ایک اور تھرڈ پارٹی انٹیگریشن برقرار رکھنا ہوتا ہے۔

آپشن 5: سب کچھ ChatGPT میں پیسٹ کریں

کوالٹی کے لحاظ سے یہ حیرت انگیز طور پر اچھا کام کرتا ہے۔ آپ اپنی .po فائل کا مواد ChatGPT یا Claude میں پیسٹ کرتے ہیں، ترجمے مانگتے ہیں، اور معقول نتائج حاصل کرتے ہیں۔ مسئلہ یہ ہے کہ یہ سکیل نہیں کرتا۔ آپ کو دستی طور پر غیر ترجمہ شدہ سٹرنگز نکالنی ہوتی ہیں، پرامپٹ فارمیٹ کرنا ہوتا ہے، جواب کو .po فارمیٹ میں پارس کرنا ہوتا ہے، اور کنٹیکسٹ لمٹ سے تجاوز ہونے پر بیچنگ سنبھالنی ہوتی ہے۔ یہ ایک بار کام کرتا ہے۔ دہرائے جانے والے ورک فلو کے طور پر ٹوٹ جاتا ہے۔

آٹومیشن کا طریقہ

اگر پورا ترجمے کا مرحلہ ایک ہی کمانڈ ہو تو؟ یہی TranslateBot کے پیچھے کا خیال ہے — ایک اوپن سورس Django مینجمنٹ کمانڈ جو آپ کی .po فائلیں پڑھتا ہے، غیر ترجمہ شدہ سٹرنگز AI پرووائیڈر کو بھیجتا ہے، اور صحیح فارمیٹ میں ترجمے واپس لکھتا ہے۔

اسے سیٹ اپ کرنے کا طریقہ یہ ہے۔

مرحلہ 1: TranslateBot انسٹال کریں

uv add --dev translatebot-django

یا pip سے:

pip install translatebot-django

اسے اپنی installed apps میں شامل کریں:

# settings.py
INSTALLED_APPS = [
    # ...
    'translatebot_django',
]

مرحلہ 2: اپنا AI پرووائیڈر کنفیگر کریں

دو سیٹنگز شامل کریں:

# settings.py
import os

TRANSLATEBOT_API_KEY = os.getenv("OPENAI_API_KEY")
TRANSLATEBOT_MODEL = "gpt-4o-mini"

TranslateBot OpenAI، Anthropic Claude، Google Gemini، اور LiteLLM کے ذریعے 100+ دیگر ماڈلز کے ساتھ کام کرتا ہے۔ یہ ایک مخصوص ترجمہ بیک اینڈ کے طور پر DeepL کو بھی سپورٹ کرتا ہے۔

مرحلہ 3: TRANSLATING.md بنائیں (اختیاری لیکن تجویز کردہ)

آپ کے پروجیکٹ روٹ میں TRANSLATING.md فائل AI کو آپ کی ایپلیکیشن کے بارے میں سیاق و سباق فراہم کرتی ہے۔ یہی وہ چیز ہے جو عام مشینی ترجمے کو آپ کے پروڈکٹ سے واقعی مطابقت رکھنے والے ترجموں سے ممتاز کرتی ہے:

# Translation Context

## About This Project
A personal finance tracker for freelancers. Users track invoices,
expenses, and tax obligations.

## Tone
- Friendly and informal
- Use "du" in German, "tu" in French
- Keep financial terms precise

## Terminology
- "invoice" = "Rechnung" (German), "facture" (French)
- "dashboard" = keep as English loanword in all languages
- "freelancer" = keep as English loanword in German

یہ فائل ہر ترجمے کی درخواست کے ساتھ بھیجی جاتی ہے، اس لیے AI مسلسل صحیح لہجے اور اصطلاحات کا استعمال کرتا ہے۔

مرحلہ 4: ترجمہ کریں

python manage.py makemessages -l de -l fr -l nl -l es -l ja
python manage.py translate
python manage.py compilemessages

تین کمانڈز۔ بس اتنا ہی۔ TranslateBot آپ کی تمام .po فائلوں میں تمام غیر ترجمہ شدہ سٹرنگز تلاش کرتا ہے، انہیں بیچز میں ترجمہ کرتا ہے، اور نتائج واپس لکھتا ہے۔ بطورِ ڈیفالٹ صرف خالی اندراجات کا ترجمہ کیا جاتا ہے، اس لیے نئی سٹرنگز شامل کرنے کے بعد کمانڈ دوبارہ چلانے پر صرف نئی سٹرنگز کا ترجمہ ہوتا ہے۔

عملی طور پر یہ کیسا دکھتا ہے

پانچ زبانوں کو سپورٹ کرنے والے اکیلے ڈویلپر کے لیے ایک حقیقت پسندانہ سپرنٹ ورک فلو:

پیر: آپ ایک نئی فیچر بناتے ہیں۔ ڈویلپمنٹ کے دوران gettext() اور {% trans %} استعمال کرتے ہوئے کچھ نئی قابلِ ترجمہ سٹرنگز شامل کرتے ہیں۔

from django.utils.translation import gettext_lazy as _

class InvoiceView(View):
    def post(self, request):
        # New string added during development
        messages.success(request, _("Invoice sent successfully."))

کمٹ کرنے سے پہلے: آپ تین کمانڈز چلاتے ہیں:

python manage.py makemessages -a --no-obsolete
python manage.py translate
python manage.py compilemessages

translate کمانڈ نئے غیر ترجمہ شدہ اندراجات کا پتا لگاتا ہے اور صرف انہیں ترجمہ کرتا ہے۔ اگر آپ نے 5 نئی سٹرنگز شامل کیں اور 5 زبانیں سپورٹ کرتے ہیں تو یہ ایک ہی API کال میں 25 ترجمے کرتا ہے۔ پورا عمل ایک منٹ سے کم وقت لیتا ہے۔

آپ کمٹ کرتے ہیں اپنا کوڈ، ٹیمپلیٹس، اور اپڈیٹ شدہ .po/.mo فائلیں ایک ساتھ۔ ترجمے آپ کے عام ڈویلپمنٹ فلو کا حصہ ہیں، الگ پروجیکٹ نہیں۔

کمٹ سے پہلے پیش نظارہ

اگر آپ ترجمے ڈسک پر لکھے جانے سے پہلے دیکھنا چاہتے ہیں تو dry-run موڈ استعمال کریں:

python manage.py translate --dry-run

یہ کسی بھی فائل میں ترمیم کیے بغیر ہر ترجمہ ٹرمینل پر پرنٹ کرتا ہے۔

لاگت کا موازنہ

یہاں آٹومیشن کے خلاف بحث کرنا مشکل ہو جاتا ہے۔

طریقہ 500 سٹرنگز، 5 زبانیں وقت بار بار آنے والی لاگت
دستی کاپی پیسٹ مفت ~40 گھنٹے ~8 گھنٹے/سپرنٹ
پیشہ ور مترجمین ~$3,000 1-2 ہفتے ~$600/سپرنٹ
Fiverr مترجمین ~$100-250 3-7 دن ~$50/سپرنٹ
Crowdin/Transifex $30-150/ماہ سیٹ اپ: گھنٹے جاری
TranslateBot + GPT-4o-mini ~$0.05 ~2 منٹ ~$0.01/سپرنٹ
TranslateBot + DeepL Free $0 ~2 منٹ $0

تقریباً 500 قابلِ ترجمہ سٹرنگز والی ایک چھوٹی سے درمیانی Django ایپ کی لاگت gpt-4o-mini کے ساتھ عام طور پر فی زبان $0.01 سے کم ہوتی ہے۔ زیادہ تر سولو پروجیکٹس کے لیے، DeepL کا فری ٹیئر (500,000 حروف/ماہ) صفر لاگت پر سب کچھ کور کرتا ہے۔

واضح رہے: AI ترجمے مکمل نہیں ہوتے۔ سستے انسانی ترجمے بھی مکمل نہیں ہوتے۔ فرق یہ ہے کہ AI ترجموں کی لاگت تقریباً صفر ہے، فوری طور پر دستیاب ہیں، اور جب چاہیں دوبارہ چلائے جا سکتے ہیں۔

CI انٹیگریشن: کبھی غیر ترجمہ شدہ سٹرنگز شپ نہ کریں

اکیلے ڈویلپر کے طور پر مجھے جو سب سے مفید پیٹرن ملا وہ CI میں ترجمے کی جانچ شامل کرنا ہے۔ TranslateBot میں ایک check_translations کمانڈ شامل ہے جو ناکام ہو جاتا ہے اگر کسی بھی .po فائل میں غیر ترجمہ شدہ یا فزی اندراجات ہوں:

# .github/workflows/ci.yml
jobs:
  translations:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v4
        with:
          enable-cache: true
      - run: uv python install
      - run: uv sync --frozen
      - name: Install gettext
        run: sudo apt-get update && sudo apt-get install -y --no-install-recommends gettext
      - name: Check translations
        run: uv run python manage.py check_translations --makemessages

اگر آپ ٹیمپلیٹ میں نیا {% trans %} ٹیگ شامل کرتے ہیں اور translate چلانا بھول جاتے ہیں تو CI اسے پکڑ لے گا:

locale/de/LC_MESSAGES/django.po: 1 untranslated, 0 fuzzy
locale/fr/LC_MESSAGES/django.po: 1 untranslated, 0 fuzzy
CommandError: Translation check failed

یہ ترجموں کو ایسی چیز سے بدل دیتا ہے جو آپ کو یاد رکھنی ہوتی تھی ایسی چیز میں جو آپ بھول نہیں سکتے۔

عملی مشورے

دو یا تین زبانوں سے شروع کریں۔ آپ کو پہلے دن 15 زبانوں میں لانچ کرنے کی ضرورت نہیں۔ وہ چنیں جہاں آپ کے سب سے زیادہ صارفین ہیں یا سب سے بڑی قابلِ رسائی مارکیٹ ہے۔ جرمن، فرانسیسی اور ہسپانوی یورپی مارکیٹوں کا کافی حصہ کور کرتی ہیں۔

مقامی بولنے والوں سے اہم سٹرنگز کا جائزہ لیں۔ زیادہ تر UI ٹیکسٹ کے لیے AI ترجمے کافی اچھے ہیں، لیکن آپ کے لینڈنگ پیج کی ہیڈلائن اور آن بورڈنگ فلو انسانی نظر کے مستحق ہیں۔ کسی دوست، صارف، یا کمیونٹی فورم میں کسی سے 10 منٹ سب سے نمایاں سٹرنگز کا جائزہ لینے کو کہیں۔

اوور رائٹ کرنے سے پہلے dry-run استعمال کریں۔ اگر آپ کو کبھی سب کچھ دوبارہ ترجمہ کرنے کی ضرورت ہو (مثلاً، TRANSLATING.md میں بہتر اصطلاحاتی رہنما خطوط اپڈیٹ کرنے کے بعد)، پہلے تبدیلیوں کا پیش نظارہ کریں:

python manage.py translate --overwrite --dry-run

TRANSLATING.md کو ورژن کنٹرول میں رکھیں۔ یہ آپ کے پروجیکٹ کی ترجمہ کنفیگریشن کا حصہ ہے۔ جب آپ اصطلاحات یا لہجے کی رہنما خطوط اپڈیٹ کرتے ہیں تو اگلا translate رن ان تبدیلیوں کو کسی بھی نئی سٹرنگز کے لیے ظاہر کرے گا۔

ضرورت پڑنے پر فی ایپ ترجمہ کریں۔ اگر آپ نے صرف ایک ایپ میں سٹرنگز تبدیل کیں تو آپ ترجمے کی حد مقرر کر سکتے ہیں:

python manage.py translate --app billing

ہفتوں سے منٹوں تک

Django کا بین الاقوامی کاری فریم ورک کسی بھی ویب فریم ورک میں بہترین میں سے ایک ہے۔ makemessages، locale ڈائریکٹریز، اور compilemessages کی ٹولنگ بالغ اور قابلِ اعتماد ہے۔ صرف ایک حصہ غائب تھا — ترجمے کا مرحلہ خود۔ وہ مہنگا اور سست حصہ ہوا کرتا تھا۔

TranslateBot کے ساتھ، ورک فلو یہ بن جاتا ہے:

  1. معمول کے مطابق gettext() اور {% trans %} کے ساتھ کوڈ لکھیں
  2. سٹرنگز نکالنے کے لیے makemessages چلائیں
  3. ترجمے بھرنے کے لیے translate چلائیں
  4. کمپائل کرنے کے لیے compilemessages چلائیں
  5. سب کچھ ایک ساتھ کمٹ کریں

ایک اکیلے ڈویلپر کے لیے، اس کا مطلب ہے کہ لوکلائزیشن اب "کسی دن" کے لیے منصوبہ بندی کا پروجیکٹ نہیں رہا۔ یہ وہ چیز ہے جو آپ آج ہی کر سکتے ہیں، ایک کپ کافی بنانے میں جتنا وقت لگتا ہے اتنے میں۔

TranslateBot اوپن سورس ہے اور PyPI اور GitHub پر دستیاب ہے۔ اسے انسٹال کریں، کمانڈ چلائیں، اور منٹوں میں اپنی ایپ نئی زبان میں دیکھیں۔

.po فائلوں کو دستی طور پر ترمیم کرنا بند کریں

TranslateBot، AI کے ساتھ Django ترجمے خودکار بناتا ہے۔ ایک کمانڈ، تمام زبانیں، فی ترجمہ چند پیسے۔