Skip to content

Commit

Permalink
Merge pull request #1 from MajAhd/fea-farsi
Browse files Browse the repository at this point in the history
Fea farsi
  • Loading branch information
MajAhd authored Jun 25, 2022
2 parents e0e884e + 57b6258 commit a570c4e
Show file tree
Hide file tree
Showing 7 changed files with 460 additions and 4 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

***

## V0.3.3

- Support Farsi language

***

## V0.3.2

- Support Deutsch language
Expand Down
7 changes: 7 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,15 @@ rules = {
"first_name": ["required", "string", "max:128"]
}

# by default return messages in English
PyValidations.make(data, rules)

# get error messages in Deutsch language
PyValidations.make(data, rules , "de")

# get error messages in Farsi language
PyValidations.make(data, rules , "fa")

```

## Documentation
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

setup(
name='PyValidations',
version='0.3.2',
version='0.3.3',
author='Majid Ahmaditabar',
keywords='validation, data_validator , python_validator ,PyValidations',
author_email='[email protected]',
Expand Down
2 changes: 1 addition & 1 deletion src/pyvalidations/factory/bind_exception.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ def build(self, rule, lang="en"):
message = Languages(lang) \
.set_key(self.__key) \
.set_value(self.__value) \
.messages()[lang]
.messages()[lang.lower()]
return message[rule]
64 changes: 64 additions & 0 deletions src/pyvalidations/lang/fa.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
class Fa:
"""
Validation Exception message in English
:param attribute : name of validation target
:param value : value of attribute
"""

def __init__(self, attribute, value):
self.attribute = attribute
self.value = value

def messages(self):
"""
validation messages
:return: dict
"""
return {
"field": f"فیلد {self.attribute} وجود ندارد",
"required": f" فیلد {self.attribute} الزامی است.",
"required_if": f" وقتی {self.value} وجود داشته باشد، فیلد {self.attribute} مورد نیاز است.",
"required_unless": f"فیلد {self.attribute} مورد نیاز است مگر اینکه {self.value} وجود نداشته باشد یا خالی باشد.",
"required_with": f"فیلد {self.attribute} زمانی لازم است که {self.value} وجود داشته باشد.",
"required_without": f"فیلد {self.attribute} زمانی لازم است که {self.value} موجود باشد/نیست.",
"accepted": f"{self.attribute} باید پذیرفته شود.",
"alpha": f"{self.attribute} باید فقط دارای حروف باشد.",
"boolean": f"مقدار {self.attribute} باید: true، false، 1 یا 0 باشد.",
"string": f"{self.attribute}باید از نوع متنی باشد. ",
"start_with": f"{self.attribute} باید با {self.value} شروع شود.",
"end_with": f"{self.attribute} باید با {self.value} ختم شود.",
"numeric": f"{self.attribute} باید یک عدد باشد. ",
"digits": f"{self.attribute} باید رقم {self.value} باشد.",
"max": f"{self.attribute} نباید بزرگتر از {self.value} باشد. ",
"min": f"{self.attribute} باید حداقل {self.value} باشد. ",
"email": f"{self.attribute} باید یک آدرس ایمیل معتبر باشد. ",
"url": f"{self.attribute} باید یک آدرس URL معتبر باشد.",
"ip": f"{self.attribute} باید یک آدرس IP معتبر باشد. ",
"ipv4": f"{self.attribute} باید یک آدرس IPv4 معتبر باشد.",
"ipv6": f"{self.attribute} باید یک آدرس IPv6 معتبر باشد.",
"in": f"{self.attribute} انتخاب شده نامعتبر است. ",
"not_in": f"{self.attribute} انتخاب شده نامعتبر است.",
"uuid": f"{self.attribute} باید یک UUID معتبر باشد.",
"date": f"{self.attribute} تاریخ معتبری نیست. ",
"time": f"{self.attribute} زمان معتبری نیست.",
"datetime": f"{self.attribute} تاریخ معتبری نیست.",
"timezone": f"{self.attribute} یک منطقه زمانی معتبر نیست. ",
"date_equals": f"{self.attribute} باید تاریخی برابر با {self.value} باشد. ",
"after": f"{self.attribute} باید تاریخ بعد از {self.value} باشد.",
"after_or_equal": f"{self.attribute} باید تاریخ بعد یا برابر با {self.value} باشد.",
"before": f"{self.attribute} باید تاریخ قبل از {self.value} باشد.",
"before_or_equal": f"{self.attribute} باید تاریخ قبل یا برابر با {self.value} باشد.",
"different": f"{self.attribute} باید با {self.value} متفاوت باشد.",
"equal": f"{self.attribute} باید برابر با {self.value} باشد.",
"gt": f"{self.attribute} باید بزرگتر از {self.value} باشد.",
"gte": f"{self.attribute} باید بزرگتر یا مساوی با {self.value} باشد.",
"lt": f"{self.attribute} باید کمتر از {self.value} باشد. ",
"lte": f"{self.attribute} باید کمتر یا برابر با {self.value} باشد.",
"confirmed": f"تأیید {self.attribute} مطابقت ندارد.",
"nullable": f"{self.attribute} می تواند تهی باشد.",
"file": f"{self.attribute} باید یک فایل باشد.",
"mimes": f"{self.attribute} باید فایلی از نوع: {self.value} باشد.",
"mime_types": f"{self.attribute} باید فایلی از نوع: {self.value} باشد.",
"max_size": f"{self.attribute} نباید بیشتر از {self.value} کیلوبایت باشد.",
"min_size": f"{self.attribute} باید حداقل {self.value} کیلوبایت باشد.",
}
6 changes: 4 additions & 2 deletions src/pyvalidations/lang/language.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from .en import En
from .de import De
from .fa import Fa


class Languages:
Expand All @@ -10,7 +11,7 @@ class Languages:
__value = None

def __init__(self, lang_name="en"):
self.lang_name = lang_name
self.lang_name = lang_name.lower()

def set_key(self, key):
"""
Expand All @@ -34,5 +35,6 @@ def messages(self):
"""
return {
"en": En(self.__key, self.__value).messages(),
"de": De(self.__key, self.__value).messages()
"de": De(self.__key, self.__value).messages(),
"fa": Fa(self.__key, self.__value).messages(),
}
Loading

0 comments on commit a570c4e

Please sign in to comment.