நீங்கள் ஒரு 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-ன் பின்னால் உள்ள யோசனை இதுதான் — உங்கள் .po கோப்புகளைப் படிக்கும், மொழிபெயர்க்கப்படாத சரங்களை AI வழங்குநருக்கு அனுப்பும், சரியான வடிவத்தில் மொழிபெயர்ப்புகளை எழுதும் ஒரு திறந்த மூல Django நிர்வாகக் கட்டளை.
அமைப்பது எப்படி என்பது இங்கே.
படி 1: TranslateBot நிறுவுங்கள்
uv add --dev translatebot-django
அல்லது pip-உடன்:
pip install translatebot-django
உங்கள் நிறுவப்பட்ட செயலிகளில் சேர்க்கவும்:
# 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-உடன், பணிப்பாய்வு இவ்வாறு மாறுகிறது:
- வழக்கம் போல்
gettext()மற்றும்{% trans %}-உடன் குறியீடு எழுதுங்கள் - சரங்களைப் பிரித்தெடுக்க
makemessagesஇயக்குங்கள் - மொழிபெயர்ப்புகளை நிரப்ப
translateஇயக்குங்கள் - தொகுக்க
compilemessagesஇயக்குங்கள் - எல்லாவற்றையும் ஒன்றாக கமிட் செய்யுங்கள்
தனி டெவலப்பருக்கு, உள்ளூர்மயமாக்கல் இனி "எப்போதாவது" திட்டமிடும் திட்டம் அல்ல. இது இன்று செய்யக்கூடிய ஒன்று, ஒரு கோப்பை காபி தயாரிக்கும் நேரத்தில்.
TranslateBot திறந்த மூலமாகவும் PyPI மற்றும் GitHub-இல் கிடைக்கிறது. நிறுவுங்கள், கட்டளையை இயக்குங்கள், நிமிடங்களில் உங்கள் செயலியை புதிய மொழியில் பாருங்கள்.