drager / faker

A library for Dart that generates fake data.
MIT License
231 stars 54 forks source link

add multi language support #30

Open easazade opened 3 years ago

easazade commented 3 years ago

it will be great to add support for other languages as well. though I understand that there are alot of languages and comming up with a solution to this problem can be hard.

one problem is that some languages are RTL (like farsi aka persian) unlike english which is LTR. and developers who make their app RTL first will override the flutter app locale to show the entire app in RTL. because of this showing faker's fake text which are read from left to right (LTR) because they are in english in an app which loaded its entire widget tree in (RTL) is very confusing.

drager commented 3 years ago

@easazade Makes sense and sounds like good addition. Feel free to send a PR!

easazade commented 3 years ago

@drager Great, do you have any suggestion on how to approach implementing feature?

I'm thinking something like this for example :

faker.languages.farsi.words(3)
drager commented 3 years ago

Good question! I think we should first of look at other faker implementations and get ideas from them. Do for example the python/ruby package supports LTR? If they do, perhaps their way is a good starting point. If they don't, then perhaps faker.languages can be the way forward.

easazade commented 3 years ago

@drager I checked. Python package supports Localization of Data and implemented it using different Data Providers to provide localized data for each different Locale.

here is what they do :

from faker import Faker
fake = Faker('it_IT')
for _ in range(10):
    print(fake.name())

# 'Elda Palumbo'
# 'Pacifico Giordano'
# 'Sig. Avide Guerra'
# 'Yago Amato'
# 'Eustachio Messina'
# 'Dott. Violante Lombardo'
# 'Sig. Alighieri Monti'
# 'Costanzo Costa'
# 'Nazzareno Barbieri'
# 'Max Coppola'
drager commented 3 years ago

@drager I checked. Python package supports Localization of Data and implemented it using different Data Providers to provide localized data for each different Locale.

here is what they do :

from faker import Faker
fake = Faker('it_IT')
for _ in range(10):
    print(fake.name())

# 'Elda Palumbo'
# 'Pacifico Giordano'
# 'Sig. Avide Guerra'
# 'Yago Amato'
# 'Eustachio Messina'
# 'Dott. Violante Lombardo'
# 'Sig. Alighieri Monti'
# 'Costanzo Costa'
# 'Nazzareno Barbieri'
# 'Max Coppola'

Awesome, that seems like a good way of doing it? Or what do you think? :blush:

easazade commented 3 years ago

@drager I was thinking we should add LocaleDataProvider for each locale (which falls to the community to do so). but also allow user to add its own CustomDataProvider. this is really helpful for demo purposes when creating Flutter apps and creating fake data which is more relevent to the app. So I think starting with the CustomDataProvider makes more sense

easazade commented 3 years ago

@drager thanks for the merge. I will start adding DataProvider to the rest of the faker features that can be customized by localizations or etc.

drager commented 3 years ago

@easazade Thank you! Sounds great!

rumbleh commented 3 years ago

I would like to help with portuguese br translation when available.

drager commented 3 years ago

@rumbleh Feel free to work on it!

easazade commented 3 years ago

next time I contributed in order to finish this. I remember to add some documentation.

nombrekeff commented 3 years ago

Is anyone working on this? I would love to give it a go if nobody is working on it.

I'm wanting to localize it for randomizing Spanish data

easazade commented 3 years ago

@nombrekeff thank you for the comment. reminded me there is unfinished work to be done here. I decided to add the rest of the data providers to other data generators like address , food job and etc. after that everyone can add their own customized DataProviders like SpanishLoremProvider or SpanishAddressProvider and so force

easazade commented 3 years ago

I should also update the docs

nombrekeff commented 3 years ago

Ohh cool 👍

Thanks for the info, I will check it out when it's ready. Let me know if I can help in any other way, adding translations, docs, etc... I have some free time at the moment and would be glad to help out!

easazade commented 3 years ago

hey @nombrekeff I added the rest of the DataProviders in here (#49) . feel free to check it