Добавлена локализация #26

Merged
Derinhelm merged 3 commits from feat_11 into master 2021-06-08 06:51:04 +03:00
7 changed files with 121 additions and 18 deletions
Showing only changes of commit fbd033e6ef - Show all commits

View File

@@ -15,4 +15,4 @@ repos:
rev: 3.9.0 rev: 3.9.0
hooks: hooks:
- id: flake8 - id: flake8
args: ["--ignore=E203,W503,FI10,FI11,FI12,FI13,FI14,FI15,FI16,FI17,FI58,E501"] args: ["--ignore=E203,W503,FI10,FI11,FI12,FI13,FI14,FI15,FI16,FI17,FI58,E501", "--builtins=_"]

View File

@@ -32,10 +32,16 @@
## Как запустить проект ## Как запустить проект
### Frontend ### Frontend
Интерфейс на русском языке
```bash ```bash
python3 todo_tk.py python3 todo_tk.py
``` ```
Интерфейс на английском языке
```bash
LANG=eng python3 todo_tk.py
```
### backend ### backend
```bash ```bash
docker-compose up docker-compose up

View File

@@ -1,7 +1,10 @@
import gettext
import tkinter as tk import tkinter as tk
from user import User from user import User
import message import message
gettext.install("todo", localedir="po")
class LoginFrame(tk.Frame): class LoginFrame(tk.Frame):
@@ -57,21 +60,22 @@ class LoginFrame(tk.Frame):
tk.Grid.columnconfigure(self, columns, weight=1) tk.Grid.columnconfigure(self, columns, weight=1)
# Подпись и поле ввода для логина # Подпись и поле ввода для логина
login_label = tk.Label(self, text="Введите логин") t = _("Введите логин")
login_label = tk.Label(self, text=t)
login_label.grid(row=9, column=12, columnspan=3, rowspan=1, sticky="nsew") login_label.grid(row=9, column=12, columnspan=3, rowspan=1, sticky="nsew")
self.login = tk.Entry(self) self.login = tk.Entry(self)
self.login.grid(row=10, column=12, columnspan=3, rowspan=1, sticky="nsew") self.login.grid(row=10, column=12, columnspan=3, rowspan=1, sticky="nsew")
# Подпись и поле ввода для пароля # Подпись и поле ввода для пароля
password_label = tk.Label(self, text="Введите пароль") password_label = tk.Label(self, text=_("Введите пароль"))
password_label.grid(row=11, column=12, columnspan=3, rowspan=1, sticky="nsew") password_label.grid(row=11, column=12, columnspan=3, rowspan=1, sticky="nsew")
self.password = tk.Entry(self, show="*") self.password = tk.Entry(self, show="*")
self.password.grid(row=12, column=12, columnspan=3, rowspan=1, sticky="nsew") self.password.grid(row=12, column=12, columnspan=3, rowspan=1, sticky="nsew")
# Кнопка авториазции # Кнопка авториазции
btn = tk.Button(self, text="Войти", command=self.login_clicked) btn = tk.Button(self, text=_("Войти"), command=self.login_clicked)
btn.grid(row=14, column=12, columnspan=3, rowspan=1, sticky="nsew") btn.grid(row=14, column=12, columnspan=3, rowspan=1, sticky="nsew")
# Если захочется реализовать в логине # Если захочется реализовать в логине

View File

@@ -1,8 +1,11 @@
from tkinter import messagebox as mb from tkinter import messagebox as mb
import gettext
TITLE_INFO_BOX = "Сообщение!" gettext.install("todo", localedir="po")
MESSAGE_INVALID_LOGIN = "Неправильный логин или пароль"
MESSAGE_EMPTY = "Сдесь могло быть ваше сообщение" TITLE_INFO_BOX = _("Сообщение!")
MESSAGE_INVALID_LOGIN = _("Неправильный логин или пароль")
MESSAGE_EMPTY = _("Сдесь могло быть ваше сообщение")
def infobox(msg: str = None) -> None: def infobox(msg: str = None) -> None:

View File

@@ -0,0 +1,83 @@
# English (United States) translations for PROJECT.
# Copyright (C) 2021 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
#
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-06-06 23:42+0300\n"
"PO-Revision-Date: 2021-06-07 00:24+0300\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en_US\n"
"Language-Team: en_US <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.1\n"
#: todo_tk.py:20
msgid "Приложение для планирования"
msgstr "ToDo Application"
#: message.py:6
msgid "Сообщение!"
msgstr "Message!"
#: message.py:7
msgid "Неправильный логин или пароль"
msgstr "Wrong login or password"
#: message.py:8
msgid "Сдесь могло быть ваше сообщение"
msgstr "This could have been your message"
#: login.py:63
msgid "Введите логин"
msgstr "Enter your username"
#: login.py:71
msgid "Введите пароль"
msgstr "Enter your password"
#: login.py:78
msgid "Войти"
msgstr "Enter"
#: workspace.py:17
msgid "Не реализовано"
msgstr "Not implemented"
#: workspace.py:25
msgid "Текст"
msgstr "Text"
#: workspace.py:28
msgid "Выполнено"
msgstr "Done"
#: workspace.py:31
msgid "Создано"
msgstr "Created"
#: workspace.py:60
msgid "Удалить"
msgstr "Delete"
#: workspace.py:88
msgid "Добавить заметку"
msgstr "Add note"
#: workspace.py:91
msgid "Удалить лист"
msgstr "Delete list"
#: workspace.py:149
msgid "Запомнить меня"
msgstr "Remember me"
#: workspace.py:158
msgid "Добавить лист"
msgstr "Add list"

View File

@@ -1,11 +1,14 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import gettext
import sys import sys
import tkinter as tk import tkinter as tk
from login import LoginFrame from login import LoginFrame
from workspace import WorkSpaceFrame from workspace import WorkSpaceFrame
from user import User from user import User
gettext.install("todo", localedir="po")
if "win" in sys.platform.lower(): if "win" in sys.platform.lower():
DEFAULT_URL = "http://localhost:8000" DEFAULT_URL = "http://localhost:8000"
else: else:
@@ -14,7 +17,7 @@ else:
BASE_W = 600 BASE_W = 600
BASE_H = 400 BASE_H = 400
TITLE_APP = "ToDo Application" TITLE_APP = _("Приложение для планирования")
class Application(tk.Tk): class Application(tk.Tk):
@@ -50,7 +53,6 @@ class Application(tk.Tk):
def center_window(self, width: str = BASE_W, heigh: str = BASE_H) -> None: def center_window(self, width: str = BASE_W, heigh: str = BASE_H) -> None:
""" """
Центрирует приложение по центру экрана Центрирует приложение по центру экрана
:param width: ширина окна :param width: ширина окна
:param heigh: высота окна :param heigh: высота окна
""" """

View File

@@ -1,5 +1,8 @@
import gettext
import tkinter as tk import tkinter as tk
gettext.install("todo", localedir="po")
def str_time(time): def str_time(time):
return time.strftime("%Y-%m-%d %H:%M:%S") return time.strftime("%Y-%m-%d %H:%M:%S")
@@ -11,7 +14,7 @@ TODO_ITEM_TABLE_CREATED_AT_WIDTH = 15
def placeholder(): def placeholder():
print("Не реализовано") print(_("Не реализовано"))
class ToDoItemWidget(tk.Frame): class ToDoItemWidget(tk.Frame):
@@ -19,13 +22,13 @@ class ToDoItemWidget(tk.Frame):
def header(parent): def header(parent):
body = tk.Frame(parent) body = tk.Frame(parent)
text = tk.Label(body, text="Текст", width=TODO_ITEM_TABLE_TEXT_WIDTH) text = tk.Label(body, text=_("Текст"), width=TODO_ITEM_TABLE_TEXT_WIDTH)
text.pack(side="left") text.pack(side="left")
text = tk.Label(body, text="Выполнено", width=TODO_ITEM_TABLE_FINISHED_WIDTH) text = tk.Label(body, text=_("Выполнено"), width=TODO_ITEM_TABLE_FINISHED_WIDTH)
text.pack(side="left") text.pack(side="left")
text = tk.Label(body, text="Создано", width=TODO_ITEM_TABLE_CREATED_AT_WIDTH) text = tk.Label(body, text=_("Создано"), width=TODO_ITEM_TABLE_CREATED_AT_WIDTH)
text.pack(side="left") text.pack(side="left")
return body return body
@@ -53,7 +56,9 @@ class ToDoItemWidget(tk.Frame):
) )
self.createdAt.pack(side="left") self.createdAt.pack(side="left")
self.remove = tk.Button(self, text="Удалить", command=lambda: self.parent.remove(self.item)) self.remove = tk.Button(
self, text=_("Удалить"), command=lambda: self.parent.remove(self.item)
)
self.remove.pack(side="left") self.remove.pack(side="left")
def finishedButton_command(self): def finishedButton_command(self):
@@ -80,10 +85,10 @@ class ToDoListWidget(tk.Frame):
self.itemToAdd = tk.Text(self, width=15, height=1) self.itemToAdd = tk.Text(self, width=15, height=1)
self.itemToAdd.pack(side="top") self.itemToAdd.pack(side="top")
add = tk.Button(self, text="Добавить заметку", command=self.add_command) add = tk.Button(self, text=_("Добавить заметку"), command=self.add_command)
add.pack(side="top") add.pack(side="top")
delete = tk.Button(self, text="Удалить лист", command=self.delete_list) delete = tk.Button(self, text=_("Удалить лист"), command=self.delete_list)
delete.pack(side="top") delete.pack(side="top")
def update(self, itemList=None): def update(self, itemList=None):
@@ -141,7 +146,7 @@ class WorkSpaceFrame(tk.Frame):
# Запомнить пользователя # Запомнить пользователя
self.rbtn_var = tk.IntVar(value=1) self.rbtn_var = tk.IntVar(value=1)
rbtn = tk.Checkbutton(self, text="Запомнить меня", variable=self.rbtn_var, command=None) rbtn = tk.Checkbutton(self, text=_("Запомнить меня"), variable=self.rbtn_var, command=None)
rbtn.pack(anchor="n") rbtn.pack(anchor="n")
# data # data
@@ -150,7 +155,7 @@ class WorkSpaceFrame(tk.Frame):
self.add_list_text = tk.Text(self, width=15, height=1) self.add_list_text = tk.Text(self, width=15, height=1)
self.add_list_text.pack(anchor="sw") self.add_list_text.pack(anchor="sw")
add = tk.Button(self, text="Добавить лист", command=self.add_list) add = tk.Button(self, text=_("Добавить лист"), command=self.add_list)
add.pack(anchor="sw") add.pack(anchor="sw")
# select list box # select list box