A package that allows you to write basic python in multiple languages
Project description
Introduction
This Python package allows users to code Python in their native language. The package then translates the syntax and keywords into English, allowing the code to be run as normal.
Supported Python Features:
- Keywords: Control flow (
if,else,for,while, etc.), function definitions, class definitions, etc. - Basic Libraries:
math - Basic Syntax: Variables, loops, conditionals, functions, classes, and imports.
Purpose and Scope
The goal of this project is to enable beginners to learn Python programming in their native language. By being able to use Python syntax and keywords in a more familiar language, learners can focus on understanding programming concepts without being hindered by unfamiliar English terms. This approach ensures that learners can build foundational programming skills before transitioning to English-based Python coding.
Key Objectives:
- Provide a tool to translate Python code from a native language syntax to standard English-based Python.
- Simplify the learning curve for beginners by removing the language barrier.
- Support a gradual transition to English-based programming, preparing learners for real-world coding environments.
This project is designed for:
- Absolute beginners: By removing the language barrier, we aim to introduce Python as a language, and coding in general, to a wider, non-English speaking population.
- Educational Settings: We can enable instructors to teach Python in their native language, perhaps in a bootcamp setting.
Using the CLI tool
The run_cli.py script (located at app/translate_lib/src) includes a command-line interface (CLI) that allows users to translate Python files or directories written in a native language to English-based Python syntax. Below are the available commands and their usage.
1. Command syntax:
python run_cli.py <command> <input_path> [options]
<command>: The action to perform (e.g., translate, run, etc.).<input_path>: The file or directory to process.[options]: Additional arguments (e.g., output path, language file, main file).
2. Available commands:
a. translate : Translates a single Python file from the source language to English and saves it to an output file.
- Usage:
python run_cli.py translate <input_file> -o <output_file> -l <language_file>
- Example:
python run_cli.py translate my_script.py -o translated_script.py -l hindi_to_english.json
Options:
-o: Path to the output file (default: translated.py).-l: Path to the language mapping JSON file (default: hindi_to_english.json).
b. run: Translates a single Python file, saves it to an output file and then executes the translated code.
- Usage:
python run_cli.py run <input_file> -o <output_file> -l <language_file>
- Example:
python run_cli.py run my_script.py -o translated_script.py -l hindi_to_english.json
c. run_direct: Translates and executes a Python file without saving the translated file.
- Usage:
python run_cli.py run_direct <input_file> -l <language_file>
- Example:
python run_cli.py run_direct my_script.py -l hindi_to_english.json
d. translate_dir: Translates all Python files in a directory and its subdirectories, saving the results in a new output directory.
- Usage:
python run_cli.py translate_dir <input_dir> -o <output_dir> -l <language_file> -m <main_file>
- Example:
python run_cli.py translate_dir my_project -o translate_project -l hindi_to_english.json -m main.py
- Options:
-o: Path to the output directory (default: translated_dir).-l: Path to the language mapping JSON file (default: hindi_to_english.json).
e. run_dir: Translates all Python files in a directory and then executes a specified main file from the translated directory. Note: Does not save a translated directory.
- Usage:
python run_cli.py run_dir <input_dir> -l <language_file> -m <main_file>
- Example:
python run_cli.py run_dir my_project -l hindi_to_english.json -m main.py
-
Options:
-
-l: Path to the language mapping JSON file (default: hindi_to_english.json). -
-m: Name of the main file to execute after translation (required).
Using the Library: PreProcessor Class functions'
- Once you pip install the package you can import the
PreProcessorclass. - You only need a keyword translation json file to initialize the class, which can be found here: https://github.com/aadityayadav/translate_lib/tree/master/app/translate_lib/src/lang_map_json
- After initilaization you can use the following methods:
a. translate_file: Translates a single Python file from the source language to English and saves the translated version to a specified output file.
Definition:
def translate_file(self, input_file, output_file):
Parameters:
input_file: Path to the Python file in the native language to be translated.output_file: Path where the translated Python file will be saved.
How It Works:
- Reads the content of the
input_file. - Calls
translate_codeto perform the translation. - Writes the translated code to the
output_file.
Example:
preprocessor = PreProcessor("hindi_to_english.json")
preprocessor.translate_file("my_script.py", "translated_script.py")
b. execute_file_directly: Translates a single Python file and executes the translated code without saving it to a file.
Definition:
def execute_file_directly(self, input_file):
Parameters:
input_file: Path to the Python file in the native language to be translated and executed.
How It Works:
- Reads the content of the
input_file. - Calls
translate_codeto perform the translation. - Executes the translated code using
exec().
Example:
preprocessor = PreProcessor("hindi_to_english.json")
preprocessor.execute_file_directly("my_script.py")
c. translate_directory: Translates all .py files in a directory and its subdirectories and saves the translated files to a specified output directory.
Definition:
def translate_directory(self, input_dir, output_dir):
Parameters:
input_dir: Path to the directory containing Python files in the native language.output_dir: Path to the directory where the translated Python files will be saved.
How It Works:
- Recursively traverses all subdirectories of
input_dir. - Identifies
.pyfiles for translation. - Translates each file using
translate_fileand saves them in theoutput_dir.
Example:
preprocessor = PreProcessor("hindi_to_english.json")
preprocessor.translate_directory("\path\to\native_scripts", "\path\to\translated_scripts")
d. execute_directory: Translates all Python files in a directory and executes a specified main file from the translated directory.
Definition:
def execute_directory(self, input_dir, main_file):
Parameters:
input_dir: Path to the directory containing Python files in the native language.main_file: Name of the main Python file to execute after translation.
How It Works:
- Calls
translate_directoryto translate all files ininput_dirand save them in a temporary directory (temp_translated_dir). - Locates the translated version of
main_filein the temporary directory. - Adds the temporary directory to
sys.pathto allow imports from translated modules. Reads and executes the translatedmain_file.
Example Usage:
preprocessor = PreProcessor("hindi_to_english.json")
preprocessor.execute_directory("native_project", "main.py")
Functionality and Feature Limitations + How To Contribute
Please note the current limitations in this Python package (your help would be greatly appreciated to mitigate these limitations!):
1. Limited Language Keyword Mapping
- The tool relies on a JSON-based language mapping file for translations.
- Only the provided or configured keywords, methods, and functions will be translated. Custom keywords or unsupported syntax will remain untranslated.
- If you wish to include a library that you personally find useful, please translate all relevant keywords and update the respective
.jsonfile for your language.
3. Translation Ambiguities
- Context-sensitive keywords or ambiguous mappings may lead to incorrect translations.
- If you notice such ambiguities, please update the respective
.jsonfiles accordingly.
3. Limited Language Files
- Arguably the biggest limitation, we require the community's support in translating the main Python keywords in as many languages as possible.
- If you notice that your native language has not been represented yet, please feel free to create a json language mapping. If you would like a reference, please refer to
hindi_to_english.jsonand simply replace the hindi words with the respective keyword translations in your language. Save this file toapp/translate_lib/src/lang_map_jsonso that others can access it.
4. Syntax Errors in Source Files (Feature TBA)
- Files with syntax errors will fail to run after translation. These errors will be displayed in English.
- If you are able to assist in translating the errors, fork this repository and reach out to us with your solution!
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file multilingual_python-0.0.10.tar.gz.
File metadata
- Download URL: multilingual_python-0.0.10.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
924a2ace4a9a41a824df5312e3b8224db748e4c567cb0c3b03da00838b919eb0
|
|
| MD5 |
3e3deb8526afafd372205b491715dbe3
|
|
| BLAKE2b-256 |
2f1e73813384eb8caf37d762a24941dee52c9747f4ec3ae99373106037510d72
|
File details
Details for the file multilingual_python-0.0.10-py3-none-any.whl.
File metadata
- Download URL: multilingual_python-0.0.10-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76e61562a3c6e56b66f084c6d926c0a3bc2cf651418760b31b2c297d40e9d2f4
|
|
| MD5 |
f70b7fce5c4b44f26256b2b2f530f2e4
|
|
| BLAKE2b-256 |
7aaa78df4a4987cac1b155f367c11444243cdf99a714c8978e53b45dcc104545
|