Skip to content

Django loyihani ko'p tillik qilish boýicha boshlang'ích dasturchilar uchun loyiha(olx.uz) saytini demo ko'rinishida ikkita tillik qilish

Notifications You must be signed in to change notification settings

foydamiztegsin/Django_Multilanguage-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Loyiha ikki bosqichdan iborat!

- 1 - bosqich: Loyihani o'zgarmaydigan sozlarni  tarjima qilib chiqish
- 2 - bosqich: O'zimizning modelimizni  ko'p tillik qilish ma'lmotlarni chiqarish

Kerakli dasturni o'rnatib oling: Gettext

1. Loyihani yaratishni boshlang.

mkdir  DjangoMultilanguage 
cd DjangoMultilanguage
mkdir templates
mkdir static

django-admin  startproject myproject .
python  manage.py  startapp mysite
  • Loyiha uchun muhit yarating:
python -m venv venv
venv\Scripts\activate
  • Loyiha setting.py fayliga appni kiriting:
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'mysite',  #  siz yaratgan app
]
  • Loyiha setting.py faylida templates ni sozlash:
import os

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
  • Loyiha setting.py faylida static ni sozlash:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'static')
  • Loyiha setting.py faylida language(tillar sozlamalari) sozlash:
from django.utils.translation import gettext_lazy as  _
LANGUAGES = [
    ('uz', _('Uzbek')),
    ('ru', _('Russian')),
]
LOCALE_PATHS = [
    BASE_DIR/'locale/',   # locale nomli papka yarating uni ichida  uz va  ru papkalarni hosil qiling
]
  • Middlewareni o'zgartish kiriting:
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',              # kiritish
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
  • templates papkasiga index.html fayl yarating:

    • birinchi o'zgartirilmagan htmlni, templates papakasini ichidagi firsthtml faylida topasiz!
  • Siz yaratgan app ichidagi views.py fayliga quydagilarni yozing:

#(fuksiya ko'rinishi)
from django.shortcuts import render

def homepage(request):
    return render(request, 'index.html')
  • Loyiha urls.py fayliga quydagilarni kiritib qoýing:
from django.contrib import admin
from django.urls import path
from mysite import views                                         # kiritish
from django.conf.urls.i18n import i18n_patterns                  # kiritish

urlpatterns = i18n_patterns(                                     # kiritish
    path('admin/', admin.site.urls),
    path('',views.homepage),                                     # kiritish
)
  • html faylimizdagi sozlarni tarjima qilish uchun kodlarni bosh qismiga
{% load i18n %}


<h3>Главные категории</h3>
<h3>{% trans 'Главные категории' %} </h3>   # kerakli sozlarni tarjima qilish usuli

yozing va kerakli sozni shu ko'rinishga o'zgartiring

  • O'zgatirib bo'lgach terminal orqali ushbu buyruqni bering:
django-admin makemessages --all

processing locale ru processing locale uz #ushbu ko'rinishda javob olishingiz kerak!

  • locale faylidan uz papkasiga kiring va ichidagi faylni oching ushbu kodni qidiring:
#: .\templates\index.html:627
msgid "Главные категории"
msgstr "Bosh toifalar"              # qo'lda kiriting

locale faylidan ru papkasiga kiring va ichidagi faylni oching ushbu kodni qidiring:

#: .\templates\index.html:627
msgid "Главные категории"
msgstr "Главные категории"           # qo'lda kiriting

yozib bo'lgach terminal orqali ushbu buyruqni bering: tasdiqlash uchun

django-admin compilemessages

fayllarni compile qilib chiqadi, kuting....

  • Loyihani ishga tushiring
loyiha ushbu manzilda ishga tushadi:                   "http://127.0.0.1:8000/uz/"
Rus tilini tekshirish uchun uz ni ru ga o'zgartiring:  "http://127.0.0.1:8000/ru/"


2 - bosqich

  • Modelsda ma'lumotlarimizni ham ko'p tillik qilish:

  • Fayllarga o'zgaritirish kiritishni boshlang: loyiha setting.py fayliga

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
     'modeltranslation',    # malumotlarni ikkita tillik qilish uchun
    'mysite',  # siz yaratgan app
]
  • Siz yaratgan app ichdagi models.py da kerakli modellarni yarating

from django.db import models

class Categories(models.Model):
    name                = models.CharField(max_length=150)
    
    
class Products(models.Model):
    category_id         = models.ForeignKey(Categories, on_delete=models.CASCADE)
    product_name        = models.CharField(max_length=250)
    product_price       = models.IntegerField()
    product_discription = models.TextField()
  • terminal orqali buyruqlarni bering
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser   # user yaratib oling admin qismidan mahsulot kiritish uchun
  • Siz yaratgan app ichda admin.py fayliga kodlarni yozing:
from django.contrib import admin
from .models import Categories, Products
from django.contrib.auth.models import User,Group
admin.site.unregister(User)
admin.site.unregister(Group)

admin.site.register(Categories)
admin.site.register(Products)
  • Siz yaratgan app ichda views.py fayliga o'zgarishlarni yozing:
from django.shortcuts import render
from .models import Categories, Products
# Create your views here.
def homepage(request):
    
    categories = Categories.objects.all()
    products = Products.objects.all()
    data = {
        'categories': categories,
        'products': products
    }
    return render(request, 'index.html', data)
  • App(siz yaratgan app) ichda translation.py faylini hosil qiling va kodlarni yozing:
from .models import Categories, Products
from modeltranslation.translator import TranslationOptions, register

@register(Categories)
class CategoriesTranslationOptions(TranslationOptions):
    fields = ('name',)
    
@register(Products)
class CategoriesTranslationOptions(TranslationOptions):
    fields = ('product_name', 'product_discription')
  • terminal orqali buyruqlarni bering:
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
  • "html kodlarini qolgan bosqichlari kodlari loyiha fayllarida mavjud asosiylari qo'llanmada yozib chiqildi"

Mehnatimiz sizga foyda berayotgan bolsa GITHUB profilimizga obuna bo'ling va telegram kanalimizda reaksiyalarni qoldiring 👍

E'tiboringiz uchun rahmat Savollaringiz bo'lsa Telegram

About

Django loyihani ko'p tillik qilish boýicha boshlang'ích dasturchilar uchun loyiha(olx.uz) saytini demo ko'rinishida ikkita tillik qilish

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published