Transcript: Translations - Andrew Knight
Hello, and welcome to another episode of Django Chat, a weekly podcast on the Django Web Framework.
I'm Will Vincent, joined by Carlton Gibson. Hi, Carlton.
Hello, Will.
And this week, we're very pleased to have Andrew Knight join us to talk about translations. Hi, Andy.
Hey, thanks for having me. I'm glad to be here.
Thank you for coming on.
There's a lot of things we want to talk to you about. The big one is translations,
but perhaps we can start with your background. How'd you get into programming and your day job,
which is also quite interesting. Sure. Cool. So man, I first started programming when I was in
high school, ninth grade, I went to Parkville high school in Baltimore, Maryland center for
math science and computer science. And as part of joining that special program, you had to get the
TI 83 plus graphing calculator. And so here I am, I think I'm going to be doing math, right? Because
I've been told I'm good at math and I don't really know what the world is like. And within the first
two weeks of ninth grade and my intro to computer science course for programming math formulas on
the calculator. And I thought this was the coolest thing ever. And so I became addicted. I just kept
making more and more formulas. I went to the back of my math textbook. I put in all the formulas I
could. Then I started making games on the calculator. Then I started doing graphics things.
I mean, this is, you know, a TID three plus it's nothing sophisticated, but then, um, thankfully
because my high school had computer science courses. In 10th grade, I learned to program
Java. And then in 11th grade, I took the AP exam and the rest was history. I went to RIT,
got my degree in computer science, and I've just loved doing it ever since. So that's how I got
started. Well, that's fantastic. You had it in high school. That's still quite unusual in the
States. I recall the graphing calculators in math class. I think I'm a bit older than you are, but
I think it was a TI-82 I had and when I could download not just Tetris was cool but I was able
to get Super Mario Brothers and that felt so I wasn't even trying to do formulas I was just
playing games but that was that was quite fun um so you came out and then um what was your
job cycle up until now my goodness so I've or when I went to school at RIT they require every
student to do internships. You don't graduate unless you do internships. It's pretty cool.
And so that's how I landed in North Carolina. I've been in the Triangle area permanently for
the past decade. I've worked at IBM, then NetApp, then, oh gosh, there's too many,
MaxPoint Interactive, which got bought out by Velasys, then LexisNexis, the legal software.
And today, for the past almost two years, I'm working at a company called Precision Lender, which recently got acquired by Q2 Software.
In my day-to-day job, I am a software engineer in test.
So I focus heavily on testing, automation, better processes, team collaboration.
I like to tell people when they ask, well, what is a software engineer in test?
I develop solutions to testing problems.
So, hey, we do nothing but manual testing solution.
Let's try to automate some of those tests.
Problem, hey, we're struggling to figure out what should be developed and what should be tested.
And we don't have these specs.
OK, let's do some example mapping and let's do some three Amigo sessions and actually come together as a team and plan before we code that kind of stuff.
I guess two questions come to mind for me.
The first is which what technologies have you been using?
Are you able to use Django or it sounds like maybe not Django for these?
So, yeah, it's great you asked that question.
In my day job, I'm not using Django.
I'm not even using Python.
Precision Lender is a Microsoft shop.
So my testing and automation solution is developed in .NET C Sharp.
The data scientists at Precision Lender use Python.
That side is all, you know.
In fact, they've even done an internal side project
where they're using a Django server to do some cool metadata stuff.
But as far as me, all my Python and Django is kind of moonlighting.
And how long have you been doing the testing angle?
Is that just at this most recent job or have you been testing tracks since you came out
of school?
I first touched testing and automation in 2007 with my first internship at IBM, but
I came back to it like, you know, full time, you know, never gone back since about 2011.
That's when I got my job at NetApp because they hired me on a QA team specifically because,
oh, he's the new college grad.
He's got all the programming skills.
We'll just make him do all the scripting.
That was basically the attitude.
and so right um i spent four years at netapp and i basically had to rewrite their
the team's uh automation solution because it was it was rough and yeah so that's that's where i've
been now that you're a relative gray beard well how does that differ sorry carlton well i was
gonna just say that aren't all automation solutions kind of gnarly and in exactly that way
oh so yeah i mean i've i've had the pleasure of helping several companies several teams i've done
my own consulting and test automation code i hate to say this man it's some scary stuff
because a lot of people don't treat it like regular quote-unquote software even though it is
so a lot of best practices get jettisoned very quickly people have this attitude that is
just writing test scripts versus you know building a software stack and a solution
that has to be maintainable that has its own unique challenges it's it's a domain just like
web development or microservices test automation is a special domain and so you need to have a
good expertise with it yeah like anything else so what does your testing look like within your
side project django apps what sort of setup do you like to do actually with with my django apps
my django just no testing at all yeah just fly by the cv your parents well because my django apps
that i've developed are actually pretty small like i can talk about them a little bit later
but they are pretty small so i don't do a lot of front-end ui testing with them because honestly
the django apps i've made the front end is just the admin which is beautiful because it just gives
you the front end that you that i needed for my purposes and that has ui testing as part of the
framework so exactly exactly so it's like i'm not going to repeat history there but the testing that
i do do i've done um a lot with the django test client i gotta say that django test client is lit
it gives you so much cool stuff and so i've done like unit testing i've done basic database testing
you know setting up a test database and throwing it away um i've done oh gosh what else you know
just basic utility function testing i've i've tied it in with unit test i've tied it in with
pi test pi test is lit of pi test so yeah that's what i was gonna ask do you use primarily pi test
or do you do a mixture?
I strongly, strongly advocate for PyTest.
I believe very strongly that PyTest
is a far superior framework than UnitTest.
The one advantage UnitTest has,
I think, well, okay, maybe two.
Two advantages UnitTest has.
First of all, it's in the standard library,
so you don't need to do a pip install to get it.
Secondly, because it is in the traditional XUnit format,
people coming from other languages
like Java and C Sharp and whatever,
they are immediately more familiar with unit test style tests yeah now that doesn't make it
better it just makes it easier for some people to come in but not just i find it's not just people
who are familiar with that i think beginners find um the way pi test deals with fixtures difficult
and they create some sort of giant conf test file in the root of their test directory and it's got
all the fixtures in and it's it's it's spaghetti and it's difficult right and it's what i find
unit test test cases they're really nice because they make you put the fixtures in the setup in the
in the scope automatically scope just to that class and i you know as you come to as you come
to use pytest more you learn ah but i can just create a fixture in my test class and i'm grouping
my thing and you can do the same thing but it's not as automatic i would say with pytest it's
there's not a pattern that's dictated to you yeah i could see that but yeah pytest go
yeah i mean i find that the fixtures are far more flexible and reusable than setup and cleanup
methods i find that the code is a lot cleaner when you're done with it and the other thing i
absolutely love about pytest are the plugins like you you can just choose from a whole bunch of
things you want code coverage boom you want reports boom you want bdd with the same thing
boom oh you you want something that's not in there make it yourself you know it's it's i think
like i've i've dealt with tons of these test frameworks across all sorts of languages right
now today my opinion is pytest is the best framework for testing in any language today
super and i'll stand by that what what would you change about pytest just to like round out this
conversation are there because i've heard for you what areas would you change if you could about it
what would i change about pi tests especially given that you you have such a broad experience
of other testing you know ways outside of the python ecosystem that's a great question i never
considered that um i'm not sure if there's much i would need to change in pi tests simply because
you do have that plug-in architecture where if you want to change something you can um maybe some
some quality of life things like uh making it easier oh no never mind that that's covered by
tags um some of the naming of things like uh parametrize is is british english not english
american english yeah stuff like that not english english you nearly said that
yeah i don't know i always thought the name conf test.py was a little weird you know i i do like
how that one though can can apply to different directory levels which is nice yeah that's super
that's really super yeah yeah so they're like the nice thing about pytest is it's it's comprehensive
and flexible yet it still feels minimal so i'm yeah i'm not sure there would be much i would
want to change at least not right now maybe i'll think about it and you know tomorrow i'll wake up
and be like oh there's this thing but yeah i think beyond the syntax it's the it's the fixture nature
of pytest that trips up beginners in my experience when they want to make that transition just as you
said, trying to figure out how to use them properly, the fact that you don't have to
have one massive fixture. I mean, even just using fixtures, the concept of fixtures,
if someone's learning on their own, is a foreign concept. So I agree with you. That's the big leap
for people when they jump to PyTest. And for me, at some point, I'm going to release a course on
just specifically Django testing. And that's one of the questions I'm asking myself is,
what's that structure? I'm probably going to start to go through Django tests and then
and probably have fixtures.
then go to PyTest. So there's already some introduction to fixtures if that's new to people
and, and then kind of get into the plugins, but have that be more like where you go from here,
the, you know, there's so many plugins for, for PyTest and everyone seems to kind of
like their different flavors. Yep. Yep. So definitely want to talk to you about translations,
which was, uh, I mentioned at the beginning. So you gave a talk, which we'll link to in the notes
at PyCascades recently. And yeah, we've got lots of questions. I'd love you to maybe
tee up the talk and how it came about for you personally?
Sure, sure. So I'll give the story. I'm from America. My wife is from China. And we've been
married for coming up on six years now. My wife, since being in the United States has been very
entrepreneurial. She's always looking for, you know, ways she can employ herself, use her creative
talents, do stuff. So she's done like a dance studio, she's done photography. And she's also
done importing and exporting with China. We've imported custom-made, tailor-made suits and
dresses. We've exported all different kinds of different goods and such. And so with that import
export business, she wanted a way to be able to track all of the orders to make it easy. She was
using big, scary spreadsheets and it was sloppy and all that stuff. Anytime you see the big,
scary spreadsheet software solution opportunity boom there you go yep so it the first thing we
did was the suits and dresses but it moved on to other things and so we wanted to make a better
software solution for this and we also wanted to enable her mom to be able to contribute to this
as well so my wife is bilingual english mandarin i speak english i can pretend to speak chinese
and mama speaks mandarin only so problem so i was thinking okay what's what's the best way to
to make this kind of software solution and that's when i i discovered the django project i was like
okay well here is a web application framework it gives you the orm for a database and it will give
you this admin site for your front basic front end where you can go in and manipulate the data
models. It gives you the forms and it also has that translation framework built into it. Like
this, this is perfect. So I, I built the application. I did the translations throughout
the entire thing and I deployed it to Heroku and it's, um, one of them is still being hosted there
today. Were you thinking you wanted to use Python or is it just on its own Django? So this is the
first time you used Django. It was the, I guess I'm wondering why or what else factored in? Was
Did you want to use Python or was it really just knowing about the translation app and
the admin said, oh, and knowing multiple languages, you're like, oh, that's a good
reason to do Django Python.
Sure.
I think it was both.
It was both the language as well as the framework itself.
Because this was, gosh, I don't even remember.
I want to say this was like 2016 when I started this journey, so to speak.
I had done Python at MaxPoint at that time.
In fact, I had done Python in high school way long ago, like 2005, 2006.
It was 2.4, 2.5-ish, I think, at that time.
I can't remember.
And then I had left Python, never touched it again until I went to MaxPoint in 2015, and I started doing it again.
And I fell in love.
I was like, this language is great.
And then with that in mind, when I went into looking at, okay, I need to develop a web application for these side businesses that we're partnering up with, what's the best thing out there?
And I had not done web development myself at that point.
I had tested web apps, but I had not done web development.
And so it was all new to me.
And I'm like, well, what web frameworks are out there?
And so you Google and you see things like Angular and React.
maybe i don't even remember if that at that time they were out i think i think angular was but i
was looking at yeah i think i think yeah react came out 2015 16 yeah yeah so those were kind of
like new hot off the press so i was looking at those and then i saw a django and i saw a flask
i'm like you know this django thing looks looks pretty good and i i know python python's awesome
um so i started doing like a feature comparison and that's when django just blew it away because
It's like it has everything I need, and it's easy, and there's tutorials online from the official documentation.
And so I ripped through that tutorial, and that's how I learned Django.
That was kind of like the test case of, is this really what I think it is?
And it was, and I'm like, done.
So I decided Django it is, never looked back.
Yep, fair enough.
For listeners who haven't used translations, I liked in your talk, you kind of broke down the workflow into, I think it was four different parts?
Yes, yes.
So let's see if I can recall this off the top of my head.
The four stages of translation are, first, you have to prepare your settings.py file.
There's some bitwares, there's some options, some paths you, I don't want to say need to set, but should set.
Just kind of prepare your Django application.
The second part would be then setting up your URL routing.
Django has a nifty feature where you can have these language prefixes in your URL so that if you want to force it to go to a Chinese page, you can just shove that in the URL and it navigates right there.
The third step is marking all of your strings in your application for translation.
That's the most painful part.
Yeah.
If you are starting a Greenfield project from scratch and you have that in mind, it's not as difficult because it's a tax-as-you-go kind of thing.
oh well yeah of course these model names need to be translated of course these view strings need
to be translated but if you already have an established project and you're going back and
trying to find everything right especially if your projects of any size oh that can be rough
the fourth bit is actually making those message files you'll you run a basic django command it
gives you the templates for them and the message files are basically a one-to-one mapping you have
a string in either the language you wrote or a token that you've used for the application front
end and then it gives you an empty string for what the translation is for that particular locale
and you've got to put that in django doesn't give you chinese so there were many many nights
on the couch where i would be working on this thing i'd say to my wife hey hon can you please
translate these strings for me my personal experience with with translations is this
there's a website called quizlet and we i led the translation of it into a bunch of languages
and the interesting thing was figuring out especially when it's a language like chinese
which is one of the ones we did you know what is that string like length is it can you just do a
phrase can you do a word can you do a sentence i'm curious you know what how you've learned
doing that right because it's one thing to maybe you could change the word the directly translate
but if it's a phrase or it's slang that's kind of where it gets a little bit harder to decide right
like absolutely yeah i i always did at the phrase level um thankfully i've never had a lot of long
text to translate but even in the times i did i would just use you know the full thing because
if you try to piece it word by word and try to splice that together the grammar is not going
to be right it's going to be it was going to be weird so always always at the the phrase level
what are you trying to say translate based on that intention and carlton have you dealt with
translations personally in the the django realm i think yes yeah i've used it but not not on
personal sites on client sites used translation but um things and the issue is exactly right
marking the translation scheme um translation strings and then in my experience you'd always
higher out there are agencies that will um then they do a great job i can't remember any off the
top of my head but they do a really good job you you outsource your your your string files with
the target languages and they will go and recruit you know people and that's a very
scalable way of doing it and you know quite affordable really given what you're trying to
achieve um if i was building my own site i'd be able to translate it into gatlan or spanish but
beyond that i'd need outside help well and then there's the phases too of i guess this would apply
more to a larger scale site of so you do the first wave of translations but then um sites change and
then figuring out how you know tip of the spear are you with with the translations do you do it
monthly do you say certain number of new text you kick it over those are sort of the maintenance
realm questions that kind of come up but i guess that's not really django specific but more just
something that happens also in these projects that you may not think about it up front i
I will say Django does make it very easy to identify new strings because when you go to
regenerate those message files, the new strings are always, I believe, like popped at the bottom
or something, or you can do like a quick control F and see all the empty or the fuzzies. So it's
very, very easy just to rerun that command and just see all the new stuff pop out so that you're
not missing anything. Recently within Precision Lender, the company where I work in the past year
to they had to do translations for our application and it was a nightmare of work because it was
it's huge application so many places and even to this day we still struggle with missing tokens
right well somebody will pop in a new token on the front end but because there's no mechanism
to just scrape the entire application and find all of those it's it's really just up to the
quote-unquote best practice for the developer to you know add it i believe to or to notify
somebody to say hey we need a translation for this thing and of course they get missed right
and that's why i was asking you carlton i actually haven't used django the translation app myself so
that's kind of why i was teeing up the earlier question to you no i mean i about you know for
my own personal sites i'm very lazy and i don't uh put it on my probably should but uh the sign
of a good programmer practice laziness yeah the reality is i'm not going to translate my own
personal site you know my own personal project but if it's a work project then you know more or
less now um it's it's kind of compulsory i mean it has been for a long time since mobile apps came
along you know and app stores put it in you know so many countries it's just become widespread it's
become you know you it if you're going to do business in europe you need english you need
spanish you need french you need german you need dutch you need hungarian you need but you know
the 27 member states they've all got their own languages well and one thing that's
changed and at least since i was working on quizlet a couple number
of years ago was the browser level automatic translations, especially if you're using Chrome,
are quite good, actually. For me, with my work, I write books. I have them as PDFs right now. I'm
moving that all online in part because people can translate it. So it's not perfect, but they can
get a lot of the way there in a way that I would like to have translated versions of my books,
but I update them all the time. And that's sort of like a nice hack at my low level.
but if i was a company you know i would want to do formal translations as opposed to in browser
well it's it's cool but that's something that's quality it's pretty powerful actually i mean i
use it sometimes it's like that quality fit well if you're a company you want that sort of quality
feel and like you know you can tell that it's it's a little hacky yeah um another point you
made in your in your talk that i really liked was localization versus internationalization
i wonder if you could sure what's the difference between the two because they sound yeah yeah yeah
and actually a lot of times people use them interchangeably but if you want to nuance those
terms localization is the process of fitting an app to a specific locale usually a locale being
like a country so a good example of locale versus language would be british english versus american
english versus australian english right or spanish or spain spanish versus mexican spanish right
those those are the same language but they're different locales and so usually when we say
locale it is a difference between like english and spanish or english and chinese but it can be
small things like phrases or spelling locale also includes things like date format yeah right do you
put the month first or you put the day first right it could include um other things beyond
just linguistic things things like uh are are certain pictures or gestures or things
taboo in another culture yeah um right well the map the mapping companies certainly know how to
do that yeah yeah yeah um one one that i always like to think of because i'm a video gamer well
maybe not as much as i used to be i'm a nintendo fanboy and nintendo always removes religious
references when they send stuff to the united states so anything with like a cross shape on it
that's scrubbed out for localization oh but in japan i guess it just flies wherever it's not
yeah so that's that would be an example of a non-linguistic localization so now um comparing
that to internationalization. Internationalization refers more to the tools and the frameworks and
the processes for doing localization. So the localization would be, if you think about the
artifacts, whereas the internationalization is more of the process and the platform. So
internationalization could be something like the fact that Django provides a translation framework
and the localization would be my mandarin chinese message files that's helpful that's definitely
something i've i've had i've confused those phrases myself and if you go i like that you
if you go back to call that out if you go back to sorry well if you go back to your four steps
only like the internalization is the first couple right you said you said you do the settings you
mark the strings for translation and then the localization is the end the latter steps
correct that's a great way to see it i didn't even think about that i should update that because
i've given this talk at the the pycon virtual um conference thing um yeah the first three steps
would be internationalization and the fourth step would be the localization that's great
that's a great way to frame it i'm gonna i'm gonna take that no problem in terms of testing
your translations is it is it just basically you can see what so there's two levels one is just
seeing string or token hasn't been translated which i assume you can sort of see it's like a
coverage version um and i guess that's the one you have to focus on because the other is qualitative
and yes it'd be a bit challenging yeah yeah so that it testing localization is actually a a great
or i should say testing translations to be correct with terms that is that is a very very um interesting
aspect for testing and specifically testing and automation because there's so many layers to it
The first thing would be testing the internationalization. Does your application actually have the mechanisms in place to flip from, say, Chinese to English and back again? So there's that kind of testing that has to happen. Because, yeah, if you think it's being translated into Chinese, but it's not, and it's at the framework level, that's a problem.
Now, thankfully, Django, I'm assuming Django has test cases, unit tests for that somewhere buried in the framework.
I haven't looked at the source code of that.
I mean, it must for that.
No, I mean, we test things like, for instance, when you put in the language prefixed into the URL, you know, is that respected?
And then what's the active language inside the test case at that point?
And I kind of, you know, all of those stuff is quite robustly tested because it's hard.
So when we talk about the URLs, so for example, if it's example.com, it'd be like slash, you know, GB if it's Great Britain English, whereas it'd be slash, I don't know, BR for Brazilian Portuguese, right?
That's kind of what we're talking about in terms of why you're configuring the URLs.
Yes, yes.
Whereas if you were in a, I suppose if you were in a single page application setting, you might just have it all being AJAX loaded and you wouldn't need the different URLs.
but it seems simpler to me anyways to have it in the URLs.
You can do it by the user preference as well.
So there are various ways of configuring it,
but you can have it such that the same URL will serve multiple languages
depending on what the user set by.
You could set a cookie or something in the session to give them a language option.
Because you can see in their browser, yeah, you can see their default browser setting.
Yeah, browsers have preferences as well.
And Django falls back through, there's a various ordering as to which one it will accept.
You know, you fall back to the browser preference, but then the URL or the cookie, or I'd need
to go and look at the source code to remember the exact ordering.
Yeah, it's all in that middleware.
And I should also say, you're not required to do the URL language prefix in Django.
It's more of an optional thing you can add on if you so choose.
I just find it to be very, very helpful.
And so that's why I always recommend it.
so that was phase one of the testing so your first thing would be making sure your framework is
doing the language stuff that internationalization stuff correctly then even even though django would
handle most of that you would still want to do things like hey if you are limiting your available
languages you'd want to have a few test cases for that like the in django you have that languages
option in the settings py py that if you set that it will say it will only serve these sets of
languages and anything else is errored out, I believe. So you might want to have a few tests
against that just to make sure that, you know, that's good to go. And if somebody changes
something, you know, all that kind of stuff. Um, the, the next type of, uh, translation testing
would be a visual test. And that would be to make sure that you actually have the page trans or you
have all of these strings being translated on your page. So when I was doing English to Chinese,
it was very easy for me because I can read English. I can't read Chinese. So I would do
manual testing, load the page, switch it to Chinese. If I can read anything on the page,
then I've missed something. Yeah. Now that's something that is very, very difficult to do
with traditional automation, because what are you going to do? You're going to scrape every
single field that's a case where visual testing is a much much better solution so there's there
are tools out there like selenium base has a a screenshot and comparison function excuse me you
can pay for a tool as a service like appletools where they'll take snapshots of your application
and then compare them over time use use ai to try to find the most critical parts just kind of flag
you to say, hey, was this changed? And it seems critical. Can you give a thumbs up or thumbs down?
So that's where that kind of testing, I think, would be very, very useful for
automating language translation on a live application. Because it's like, oh, it's right
there. Boom. Visual is the way to go. Because clearly, if you have English words versus Spanish
words versus French words, they're going to appear very differently to a machine. But you make loss
over with your eyes as a manual tester. And then, yeah, the third thing would be the qualitative
test. Do the language phrases you put in make sense? And you really need somebody who's fluent
in that language to look at it and be like, hey, this ain't right. And I've had that happen a
couple of times because context is so important with your translations, right? When you send off
those language files, those messages files, right? Sometimes it may only be a single word or maybe a
small phrase isolated from everything else and you give it to i would give it to my wife and say
here translate this phrase and she would translate it and then that language file with that translation
would get sucked up into the application i deploy it out there in heroku and say okay here's the
page does it look good and she'd be like what the hell is this field what that doesn't make any sense
it's like what do you mean you gave me the translation and she's like well no it really
should be this instead okay there's your qualitative test yeah well one thing you just
quick point that comes up is one thing you can do is when you're marking the your strings for
translation you can add a special translator's comment which is appears in the string file that
they can then it gives a bit of context you say look this is true this is appearing here or try
to keep this short or you know sure sure um which is kind of handy but it's very nice we're short
of getting a native speaker to look at your result and tell you if it's any good yeah there's no
solution right yeah carlton do you know is the perhaps most likely django historian in this chat
when translation was added no like ages ago long because i don't know actually know who's
responsible for it i mean it's one of those black box parts of django i'd have to go and ask some of
the old hands um exactly the story there but it's been there for ages and ages and ages and ages and
ages, like a decade, like more and more.
Wow.
Okay.
I was going to add, for listeners who want to see an example specifically of changing
in the URL routes, the site listennotes.com, we had the founder Wenben on, he's got a
really nice home page and at the bottom you can scroll down and uh cycle through it's like 20
different languages and you can see both that the url changes at the top there'll be a slash
and then the language prefix and then also you can see that the um the text changes and so
because i'm assuming your your site is it's like a private one yeah or we could share yours as well
if you'd like well it's it is private so okay yes but listen notes is a really good example of
of it and the django docs of course jack docs.django project.com they're translated into
you know what seven eight languages um hadn't even thought of that
and the source code for that is uh available yeah oh good call yeah why did we think of that like
what's the way to represent there are there are dogs it actually makes me yeah i haven't actually
looked at it but i've also you know i wonder if you know when the way django also does the
version numbers where you can click through and it changes that seems like that'd be a
like a mutation of the language framework but i don't know how it's actually implemented
yeah right it's a very similar yeah so there's there's the language prefix and then there's
the version prefix and then inside that is the docs for each particular um each particular build
but like you know going back to well what's if i click on the versions going back to 1.8 you can
see there um and then all the languages going back to 1.8 are live and then the development
version is only in english um that will be translated for um you know 3.1 when we when
we tag 3.1 when we branch 3.1 who does who does this translation right so this is a really good
question because while we have people listening there's a translations team an international
internationalization team a translations team that you can join and contributes and you can
help translate um the strings inside the django framework and the docs as well and we can have
more docs versions but they need to be translated into the languages and they need to be i think 70
or 80 complete before we'll put that new version up so if you want your language you know come and
join the team if you go to the the list of mailing lists there's an international internationalization
mailing list that you can join it's just a google group you can say hey i'd like to volunteer
and it's all run on a thing called trans effects which is a service which enables you to log in
and you can translate individual strings and collaborate on that translation and yeah we'll
put a link to that in the in the notes and we should actually come and join in it's it it's
interesting now that i'm on the django board so instead of saying oh someone should do something
or other it's like i should i should do it one thing i really do want to do is write some blog
posts, official blog posts, talking about these various teams that we have and the people who do
unsung work. So translations, the ops team, the security team, I'm sure there's other teams I'm
not thinking of more just to let people know and do, you know, little call outs to folks because
I'm certainly I've dealt with the ops and security team quite a bit recently. And, you know, they do
a ton of work for and most people don't know about it. Same with translations. So note to self,
I need to write those blog posts and, and also, yeah, make it, let people know, like,
you don't just have to sit there and say, I wish Django was translated into this language. Like
you can, you can, you can help. Yeah. And that's great. Okay. So we'll link to that.
It's very knowledgeable people that have been doing it for a long time that
had sort of head up that effort. And yeah. Yeah. Perhaps we could have one of them on too.
There was one more thing, Andy, I wanted to ask you about, and then obviously whatever you want
to talk about. So PyCarolinas, you've been involved in work around that? What's the context
for that? Sure. So a little bit of history. There's only ever been one PyCarolinas, and that
was way before I was back into Python. It was 2012. It was held here in the Triangle. It was at UNC.
Very small conference. Nice. Calvin Spielman was the chair. Iron Froggy on Twitter. Then his life
changed, never happened again, so be it. Then in 2016, we had a PyData conference here in the
Carolinas. And the only reason I even knew about that was because my company, MaxPoint, was one of
the top level sponsors. It was here in Research Triangle Park. IBM was the main sponsor of it.
There were like three, four, maybe 500 people. It was a good size. And that was actually the first
conference that I spoke at, I gave a talk on Python testing because my company at the time
was like, everybody submit to speak. Like, okay. And I just got accepted because the testing talks
are always the token talks at Python conferences and you always get at least one. So boom. And
nobody else really submits for them. Don't take my secret. I really, really got involved in the
Python community starting in 2018, that's when I spoke at PyCon the first time. It's when I went
to PyOhio, PyGotham, PyCon Canada. I've been addicted to these things. I've been going all
over the world for Python conferences. But at PyCon 2019, I was thinking to myself, you know,
it'd be really cool if we had a Python conference in the Carolinas again. And I was talking with
some other people from the Carolinas. They're like, yeah, yeah, we should do that. We should
do that. And I'm like, okay, well, I guess it's a duocracy. So I might as well try to make this
happen. So I went to an open space for conference organizers, and I just wanted to learn what it
means to run a conference. And then Dustin Ingram, who was leading that open space, he comes up to
me afterwards. It's like, Hey, Andy, do you want to announce a call to action to get a pie Carolinas
going tomorrow on stage in front of like a thousand people? And I say, yes, because I just,
I don't know.
I was so excited at the time.
So I get up on stage and I make the call to action.
Please help me get this Pi Carolinas thing going.
I got in touch with Calvin.
I met him.
And so, yeah, we've been trying to get it going, but it's been a little bit tough because life.
I'm already uber busy with so many things.
But we have some organizers together.
We have a lot of people excited.
We have a venue.
It'll be in Raleigh.
It's scheduled for June 20th.
We'll see with coronavirus how that goes.
It's going to be somewhere between 100 and 200 people.
The original view was to make it like a two-day traditional Python regional conference.
But given the whole coronavirus mess and the fact that we hadn't organized a whole lot because we've been busy,
I decided to change up the format to make it an unconference.
So one day, lightning talks only, there'll be a sign up ahead of time, but no, no official call for proposals, no big review committee, not looking to have like a huge expo area. Basically, it's going to be lightning talks and open space and collab clusters. And then we'll have maybe a few sponsors, you know, somebody for lunch, Red Hat is our sponsor for the venue, that kind of stuff. Keep it, keep it small so that if we need to postpone it, it'll be easy.
right um so that's kind of the vision we have for pie carolinas right now um i'm still hopeful that
we can pull it off i am i have just a few small little tasks left to get the official website
out the door i've developed it using flask with um zappa and uh amazon web services so that it's
all serverless just kind of push it out there and boom you're a madman yeah tell me about it
Because spinning up an EC2 instance was too hard.
No, I'm joking, I'm joking.
I'm admiring you.
I mean, Zappa is one of those things too.
I see talks and I briefly tried and I was just like,
oh my God, until I have to, I won't.
It was really easy getting the thing out there
just as a function.
I mean, I have the development one out there.
It's just a really ugly URL.
The only thing that I haven't done yet
is connected to the PyCarolina.org domain.
That's one of those things where I'm just like,
I don't have time right now.
It's been about a week of no time.
If you want to do that before we launch this episode, we'll put a link to one of them in the notes, either the official.
I'll get on that.
That's one of the things about web that I just, yeah, every time I have to just grip my teeth when I'm dealing with DNS stuff.
I don't know about you, Carlton.
No, it's horrible. It's horrific.
It's like, it's because it's not hard. It's just frustrating.
And because of the timing, like, I never know. It's like, did it work? Did it not work?
is it because either it happens like in 10 seconds or it's like 48 hours for no reason
and it just takes like a week every time i need to do some something or other like you know you've
got you've got a day-long ttl and you type one character wrong and you hit submit and you've
yeah it's like no
yeah and that happens every time it even and even just custom domains like i i had a whole
chapter in my uh my jenga for professionals book on how to do this because it's such a
pain but it's like every provider is you know who's got your domain is different and you know
heroku is i don't know could be clearer and yeah i was just like i just uh it's a shame though
because even for me right like you know it's like every year or two i'm like how do i do this yeah
oh my god yeah so so many things i i understand it takes it's not just like flipping the switch
yeah yeah so i'll i'll get on that well is there anything else you want to mention or plug as we
wrap up here so you're at your automation panda on twitter you're active there you have your website
um what what's the best way for someone to get in contact with you if they have questions or
if you need to get in contact with me i would recommend either twitter at automation panda
you can go to my blog automationpanda.com there's a contact form in there or if you happen to be at
your local python conference maybe i'll be there too jango con is going to be in october this year
right in principle yes which one uh us one yeah jango con us sorry that's the plan okay san diego
as well yeah yeah i'm hoping hoping to to come to that one but we'll see and um and jango con europe
uh has been rescheduled for september currently i mean you know all these plans are dependent on
you know, the coronavirus, obviously, and we'll see how that goes.
And maybe a quick shout out on Django News. I run a newsletter, django-news.com, that has
weekly news on Django, including updates on conferences and things like that. So that's
a good resource for people if they're not aware of it. Well, Andy, thank you so much for taking
the time to come on and share what you've learned. Really interesting. Thank you, Andy.
Thank you for inviting me. This was a lot of fun.
all right and everyone we're at chat jango on twitter and jango chat.com
we'll see you all next time bye-bye thank you bye