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
Close
Hashes for MT_PY_django_I18n-0.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b04d29e3d041c5f65b9526a456273c62acecba97d3610cdb237bafa2f2b012d |
|
MD5 | 5b5da0534413de0fd23589cd18cce5b3 |
|
BLAKE2b-256 | 0be2374a827a2f74710c68d9e7a20fe9837d3128fb8c635241cc754212457505 |