మీరు ఒక 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 ఖర్చవుతుంది. సగటున 8 పదాలతో 500 స్ట్రింగ్లు ఉన్న Django యాప్ సుమారు 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 ఫైల్లో అనువదించని లేదా fuzzy ఎంట్రీలు ఉంటే అది విఫలమవుతుంది:
# .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 తో, వర్క్ఫ్లో ఇలా అవుతుంది:
- సాధారణంగా
gettext()మరియు{% trans %}తో కోడ్ రాయండి - స్ట్రింగ్లను ఎక్స్ట్రాక్ట్ చేయడానికి
makemessagesరన్ చేయండి - అనువాదాలు భర్తీ చేయడానికి
translateరన్ చేయండి - కంపైల్ చేయడానికి
compilemessagesరన్ చేయండి - అన్నీ కలిసి కమిట్ చేయండి
ఒంటరి డెవలపర్కు, ఇది స్థానికీకరణ ఇకపై "ఎప్పుడో" అని ప్లాన్ చేసే ప్రాజెక్ట్ కాదని అర్థం. ఇది మీరు ఈ రోజు చేయగలిగేది, ఒక కప్పు కాఫీ తయారు చేసే సమయంలో.
TranslateBot ఓపెన్ సోర్స్ మరియు PyPI మరియు GitHub లో అందుబాటులో ఉంది. ఇన్స్టాల్ చేయండి, కమాండ్ రన్ చేయండి, మరియు నిమిషాల్లో మీ యాప్ను కొత్త భాషలో చూడండి.