A package to implementing i18n in django
Project description
i18n engine for django-framework
internationalization and localization in django
This Python package provides functionality to generate translation files for Django projects based on JSON file data.
Author
Installation
- To install the package, use the following command:
pip install mt_django_i18n
Setup
Before using library, you need setup some things in your django project, please follow this steps
- Setup all required variables in your settings.py
from django.utils.translation import gettext_lazy as _
# Mention the lanuage with respective language code which you will be using in your project
LANGUAGES = [
('en', _('English')),
('fr', _('French')),
('es', _('Spanish')),
('de',_('German')),
('en-IN',_('English (India)'))
# Add more languages as needed
]
LANGUAGE_CODE = 'en-in' # default = 'en'
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale'), # Optional, default path './locales' folder
]
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N=True
LANGUAGES_BIDI = [
'he', 'ar', # Add right-to-left languages if required
]
# Below mention localization of number system according to current language code of project
THOUSAND_SEPARATOR=','
DECIMAL_SEPARATOR='.'
USE_THOUSAND_SEPARATOR=True
NUMBER_GROUPING=(3,2,0)
- Create a JSON file with translation data in the following format:
{
"fr": {
"Hello": "Bonjour",
"Goodbye": "Au revoir"
},
"de": {
"Hello": "Hallo",
"Goodbye": "Auf Wiedersehen"
},
"es": {
"Hello": "Hola",
"Goodbye": "Adiós"
}
}
- Import and use the create_files() function from the translation_file_generator module:
from mt_django_i18n.json_to_po import create_translator_files
from django.utils.translation import gettext as _
create_files(json_file_path,project_name,target_lang)
- json_file_path = This parameter represent file path for translation
- project_name = Name of project
- target_lang = Lagunages which language file should be converted in binary format file i.e .mo files
Example
views.py
from mt_i18n.json_to_po import create_files
import os
from django.utils.translation import gettext as _
# Create your views here.
def blog(request):
'hello':_('Hello'), # this mark to value stored in _('') are to translated
if not (os.path.exists("locale") and os.path.isdir("locale")):
os.mkdir('locale')
create_files("translator.json","blog",['fr', 'de', 'es'] )
Templates - HTML pages
- The static text to be translated should be marked throught {% trans Hello world! %} or via variable format as mention below
<p>{{example}}</p>
<p>{% trans %}</p>
- For localization
{% load l10n %}
{% localize on %}
<tr>
<td><h6 class="text-muted">Category</h6></td>
<td> <h6 class="fw-bold">
{{my_currency|localize}}
</h6></td>
</tr>
<tr>
<td><h6 class="text-muted">Number</h6></td>
<td> <h6 class="fw-bold">{{my_number|localize}}
</h6></td>
</tr>
<tr>
<td><h6 class="text-muted">Date</h6></td>
<td> <h6 class="fw-bold">
{{my_date}}
</h6></td>
</tr>
</tbody>
</table>
{% endlocalize %}
#currency_format
- This function help to convert the number into currency format by passing number and language code as shown in below syntax
from mt_django_i18n.json_to_po import currency_format
my_currency= currency_format(currency,language='en-in')
- Where currency parameter is for passing number/currency and language parameter for language code.
Example
from mt_django_i18n.json_to_po import currency_format
my_currency = currency_format(currency=1234567.89,language=request.LANGUAGE_CODE)
Note Use translation package to current activate language of project.
from django.utils import translation
translation.activate(language)
#number_format
- This function help to convert the number into number format by passing number and language code as shown in below syntax
from mt_django_i18n.json_to_po import number_format
my_number= number_format(number,lang='en-in')
- Where number parameter is for pass number and lang parameter is for language code.
Example
from mt_django_i18n.json_to_po import number_format
from decimal import *
my_number=number_format(Decimal(1000000.50) ,lang=request.LANGUAGE_CODE)
urls.py
from django.conf.urls.i18n import i18n_patterns
urlpatterns+=i18n_patterns(
path('',blog,name="blog"),
# path('language_select/',language_select,name="language_select")
)
# Note: activate the language code of project every time there is
change in language so that translation perform better.
from django.utils import translation.
translation.activate(language)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file MT_PY_django_I18n-0.0.3.tar.gz
.
File metadata
- Download URL: MT_PY_django_I18n-0.0.3.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19eb08e3d8986a2d813081e095ca35b33ef222100ba68a491aed3f11d52e70dc |
|
MD5 | 70e0ed99fc70ac65670c61eab3366afe |
|
BLAKE2b-256 | a00d1517aa495ece075de15704f61b812eaf2ecfaba79a319b21a6c1b9989f1a |
File details
Details for the file MT_PY_django_I18n-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: MT_PY_django_I18n-0.0.3-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b04d29e3d041c5f65b9526a456273c62acecba97d3610cdb237bafa2f2b012d |
|
MD5 | 5b5da0534413de0fd23589cd18cce5b3 |
|
BLAKE2b-256 | 0be2374a827a2f74710c68d9e7a20fe9837d3128fb8c635241cc754212457505 |