← Back to Show Notes

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