 So hi for those of you coming now the session did not start yet. Don't be afraid. There's seats in the front There's seats on from me the right and there are fewer here And this is a lab. So you are supposed to use your computer and follow what we do and then probably find bugs Maybe not and these are our suggestions for setting up your computer for this lab Um best if you have a local Drupal 8 if that's not possible Then you can use simply test that me which is amazing But if there's no Wi-Fi, however amazing simply test that me is it's kind of blocked from us So yeah, I said use the Drupal core project there and slap on the screen and That's probably it for welcoming instructions. Hello You guys ready? Yeah, awesome Welcome to the Drupal 8 multi lingual hands-on lab So this wonderful man, I believe here in the back said with content and config translation and core Drupal 8 core is more multi lingual than all of D7 with all of contrib and Today you get to have some hands-on experience with that. It's quite exciting and Hi, my name is Amy Dugnan I'm currently writing the Drupal 8 multi lingual websites book And I'm a enterprise CMS architect and the CEO of hook 42 in San Francisco, California Hi, I'm Gabo Hoichi. I work with aquia. I also lead the Drupal 8 multi-lingual team Which is an amazing set of people and you can find me at Gabo Hoichi on Twitter and we have Several mentors today. We have Florian Weber on the front We have Tobias Stuckler in the back We have Karl Friedsche on the back and we have Eric Stilstra on the side And they are happy to help you with things. If you sit in the middle, you are out of luck But if you sit on the side, then they can walk to you and help you out And although it's only a few of us here is actually some other people who worked on this initiative through more than two Years now. This is a list of more than a thousand hundred people who we track being involved in Some capacity in the initiative by commenting on issues reviewing designing writing patches, etc So there's a lot of momentum behind this work. All right about today's lab We're gonna be building on concepts multi-lingual concepts in Drupal 8 Because it it adds complexity and different interfaces as you work through the system We're gonna quickly go over topics That's why you have handouts and links to the information it is being recorded and You guys can see this online later as well And like we said the local Drupal 8 installation is preferred But if you can't use this it simply test me with Drupal core 8 beta 1 The mentors here can help and there are there's gonna be some information posted for the post lab reference Okay, so what we're gonna do today is we're gonna walk through Group of people have been working on the Drupal 8 multi-lingual multi-lingual demo install profile that will Showcase some of the nice multi-lingual things that you can do with Drupal core. We're gonna start with demoing that It also works with simply test me But don't do that right now make sure that you're doing your your lab setup We're gonna go over the installation And multi-lingual parts of installation then we're gonna start building on the language module Interface translation content translation then config translation and we're gonna touch on some other supporting topics like Just a little topic like workflow And then we're gonna wrap it up for the more information But it is gonna be quick Just hang on for the ride. This is gonna be fun So so Drupal 8 our main goal with Drupal 8 was in the multi-lingual initiative to make it possible for Drupal to understand language So you will see that in many cases. We may not have Achieve the ultimate best experience possible But Drupal course task in our in our minds is to provide all the base features that then the other modules need to depend on So a lot of problems that you encounter in Drupal 7 when you build Drupal 7 sites is that Drupal 7 core does not understand language in several cases and the language modules just try to like add it on the side and in Drupal 8 our Major focus was to make every part of Drupal understand language so we built a layer where it understands language in every possible area and then we built on top of that and Enhance it with interface translation automations that were not available in 7 and user interface improvements in that area and Then we brought in a content translation Implementation from entity translation and unified that across the system And then we worked with the configuration team to provide a translation system for the configuration so if if your site has Configuration and content belonging into these categories it is solely covered by Drupal core for translation It's it's a lovely language first approach and as you add and extend to Drupal and through Drupal contrib I believe you guys are going to be very happy with that Okay, so if you have not yet seen the step-by-step the step-by-step link is Bitly d8 ml dash lab dash handout Do you need to look at this for a second more? You guys are all looking so I'm going to wait for a second Okay, you guys ready I See squinting I it's a little bit small Yeah, okay Ask your neighbor for help oops and Now we're going to start the demo all right right now I'm going to just kick off the multilingual install profile demo here So that so the goal with this is we try to show you where we want to get to at the end of this lab This is open source. You have you can download that it's available on Drupal that org And we'll get you the link again at the end But this is a pre-built profile on Drupal a that has some simple content and users and roles and Menus and taxonomies and views and all kinds of other things that you would encounter and has and has them translated So this actually has four languages, so it will take some time to install but doing this profile actually made it possible for us to to fix several interesting issues in The Drupal installer so for example, we made it possible to Create profiles that in that instantly include multiple languages in installation So although you are installing in English this time It will actually start downloading and adding several languages to you to your site because we've included them So while this takes some time I would like to highlight the first screen that you've seen the choose language screen So one of the advances that we made in Drupal 8 is we wanted to put language first Because everything else in the installer may be confusing if you don't know the language So we put the language selection as the absolute first step and we built in a tool to automatically detect the language of your browser So if we can detect that then it's already pre-selected for you and it's available. You just need to Hit save and continue and then it's immediately downloaded on the next step and everything else in the installer is in your language Now in this case, we selected English, so everything will be in English But our profile includes multiple languages, so it will also download several languages now Language steps appeared magically in the installer because our profile wanted to have them This is so is on your first slide, right? Not on your first slide. It's in your handout It's a sandbox module right now Sandbox project So if you look up Amy space Degnan it's my one of my sandbox projects and Many things to Kristen pull my business partner For really taking a big stab at doing this profile work. Oh, we are getting six hours Wow, thank you six hours of runtime so So so we took the content for this from the demo framework and They made a and they made a good selection of content around travel So this also evolves around traveling around the world and it has some travel offers that have prices on them and nice pictures and it has users who can create them and translate them and it has some views and Some menus and blocks to to access them properly So it takes some time to install the reason is it's for languages and it installs and we just installed it from the ground up so So that's not bad. I think For a site. It's not very responsive. Sorry That's possible to add on later See when I walk through Hi there. I'm who is familiar with the term demo framework Okay, so what the demo framework what is is aquia put together a really nice combination of Drupal can trip modules content and business business use cases to demo against some of the larger enterprise CMS's so so aquia could be Actually competitive against some of these on a big enterprise. It but it's a wonderful beautiful set of of Some of the best Drupal things that you can showcase So but the the topic is about travel because it's something everybody can relate to and pretty pictures and everything So on this site It's about travel and if we go to the about us page About it's it's working hard you guys are making making simply test me work really hard right now But that's okay or the internet one of the two Anyway, um, this is this Drupal. This is a demo website. You can see that it's an English Spanish French and Hungarian Yeah, it's taking its time Okay, so what you can see here, this is a custom front page front page view it's a list of products products or trips so if you want the basically the site is a site that sells trips and ask the viewers to purchase them and add reviews onto the site So it's all about showcasing trips through multiple places and multiple languages to purchase So here we go and then this is the the the demo over here. It's a little explanation There's a custom block here that says hey, this is the demo Okay, so we also have a kind we have a contact form on the site We have a views trip page We have a sample of a product We have a taxonomy of travel interests that are attached to each one of these tour products Let's go see it in Spanish So all the languages that are not English have been Google translated So even the Hungarian so please don't be offended. This doesn't make sense in Spanish The Hungarian doesn't make sense in Hungarian either This is a demo Strong on the demo If you'd like to contribute the the translations, that's great Okay, so you can see that and that's it and are we ready to get going? All right, are you have you guys got your local Drupal install going or you're simply test me ready So if you need help ask one of the one of the mentors or raise your hands and one of the mentors will walk to you You don't need to Okay, so that that was a demo and I will start fresh with a brand new We will use a local site, but you will use a Whatever you have set up on your computer So we'll install this time in English and we'll walk through adding on Different steps, but if you check out this list is a pretty impressive list of languages that Drupal eight is it is available in And it all of them are displayed with their own names So if you pick Arabic or something else, it will be right to left right out of the gate as well well install in English because that's the common language you speak probably and That will make it easier for us to to add on all the rest Leverage Because we're leveraging some of the basic page and elements on that in the demo So we are choosing English here, but if you would have chosen chosen foreign language What would have happened is it downloads the translation for you and enables the language and the interface translation modules So that it would be ready both in the installer and on the site in that language well Do it step-by-step so you better understand which module does what and where are the things and how they relate to each other But there's easier ways to do it if you already know the details and you just want to start off in a different language Have all the work. Yeah, what's on my mind travel the world? Are we traveling the work right now? All right All right, let's just get past this screen And we'll be admin It'd be a super strong password It's not a super strong password And then we're just gonna hook go ahead and save and continue So so this demonstrates the situation if you're starting from an English site, that's in English And you will probably have that situation somewhere somehow So if you start with that then you'll see that in Drupal 8 You have it's not bad. So in Drupal 8 you have Is that yours let's try again you don't have you don't have Clear URLs Yeah, yeah, let's try to fix that so if you so if you have that English site You'll notice that you have four modules to deal with language if you go to admin slash modules And now they are grouped at down the page so they are not like mixed in between the rest of the things and Those are language interface translation content translation and configuration translation And what we'll start with is we'll enable language module and then see what happens Because as I've said before that's the base layer that provides language support across Drupal core If you don't have language module enabled then everything assumes you are English So everything you do will do English unlike in Drupal 7 where it's like it leaves around a lot of things that they don't know What the language is in Drupal 8 the default assumption is if you don't have language module then you deal with an English site so if you want to have any other language on the site and you would enable language module and That will let you tell Drupal about languages and will let you tell Drupal about what what's What type of thing is in what language and we'll do that once we have a working system That's it's hard to do a lab video recorded Everybody tells people to not do live demos at Drupal cons, but a lab is impossible to do video recorded So it needs to work life. Yeah To demonstrate that so let's do that So so as I've said you go to the extend screen and at the around the bottom You have these four things language module interface translation content translation and config translation What we'll do is we'll enable language module only so that you know How far that gets you if you enable a lot of other things they interact in Different ways and certain screens will be more complex than you should see them at first So let's just enable language module Okay, so then you get to have a list of languages and then you can configure some foreign languages on your site Okay, are you guys ready? Did you enable the language module? I Wanted here. Yeah. Yeah. Okay. Thank you It's the afternoon. We have to have some energy. So okay, so we're gonna we're gonna install French Hungarian and Spanish So what we do here is merely making these languages available to the system that will not bake Drupal appear in French Hungarian etc. That's what universe translation does. We're not doing that yet But we doing this so we have these languages available and that will let us do a lot of things on the system So now that you have multiple languages you can make decisions like what your default language on the site is So you can change it to something else than English if you want and you can make and you can make it choose your language on the page By different settings. So if you want to change your default language in Drupal 8 we made good care to hide that As much as possible Because in Drupal 7 people change it and then it breaks all kinds of things and That's not really true innate, but it may still break some things So we put that in regional settings and there's a top option there to change your site default The main reason that people change their site default is because they want to have a different language fallback for their language selection And we have a solution for that that will Hopefully soon show It's important when you first start architecting your site that you you make those decisions about what your default site language is very clearly Just so you don't have to Kind of figure it out later because it's it's it's not amazingly straightforward. So We're not gonna change it now so So what we're gonna do is Hope for a wireless mic and also Look at the language detection and selection settings Because that there are a lot of improvements there which make you not need to change your default language So you may have noticed that when you added multiple languages not their language Detection and selection then Then we now have these options to choose from them and in seven there was nothing enabled We now enable the URL selection by default and there's a very nice fancy in-place configuration screen there that lets you change That setting to be either by domain or by path prefix and it previews you the actual URL that your stuff will show up So if you go to path path prefix then you'll see that that's your domain and then that's your path And then you can see where everything is So that's pretty cool. And then we have some other options that we've added and that we and that we worked on to make language detection and selection easier for example We made browser detection configurable So Drupal 8 now understands that the language codes that Drupal have are not universal across the world Then there may be people using different language codes So we have a mapping of language codes So we understand different codes for Norwegian and Portuguese and for Chinese, etc. And you can add new ones if you want So that's pretty good for For being a flexible system. We have Account administration pages preference so users can have their own Administrational language and this is the best one the selected language one the last one So if you want to change your fallback language for the website, you do not change your site default language We have a configuration option here that you can change to to use for the fallback language of the site and Then nothing else will change but this configuration piece that you actually wanted to change So now it's tied to the site default, but you can tie it to some concrete language So now it changes if you change the sign default because it's a dynamic value So that's what we have for for language detection and selection and this browser browser Negotiation is the same feature that we use in the installer to to pick Language for you to install So that's how we select page for the language now that's how we select language for the page and then You can obviously assign language to things so language module only if you have language module that provides you a content Language page, which is very exciting. It's gonna be your favorite page in Drupal 8 multilingual Because it's a one-stop shop for everything to set up your multilingual content configuration Yeah, how many clicks does that take? So in this page This looks like a very simple tiny page. There's a few checkboxes, but it will be a monster by the next hour So you you so what you can observe here is it tells you that everything is Uses the site default language Everything so until you configure something here Everything will be English now because the site default is English and then you can deviate from there Then you can set up that some you want something else And then I think we have some pre-selected options that I don't remember That's okay. I'm mostly was just so the the way the page works is if you check box something you can see all of the Entities that go with it. So here's content types And these were the one these were the content types that were installed with the the standard profile You can see custom blocks. There's a basic blocks type type Now it's additive, right? So you can you can select everything if you wanted to and the page gets quite long And we have barely even added content So so this page allows you to set up language defaults So if you don't do anything here, then they will have language defaults But let's say you want to create articles in the current interface language of the page all the time So you can pick that one and let's say you also want to let users to change the default language of articles So you can say show the language selector But for basic pages you always want to create them in the site default language and translate from there That's also possible So you can configure a very fine grained all of your content What default language it will be created in and whether or not it has a user interface to change the language So if you have a multi-lingual site, but you have a forum That's English only then you can configure your forum to be always English like assign English all the time and the rest of The content to allow you to set multiple defaults or different defaults So this screen is for that and it's very flexible and you can set whatever Content you want and this screen will get a lot more interesting later on in this lab This is still a simple version of the screen Has anybody used the shortcuts menu before? Shortcuts no. Yes a little bit some okay. This is going to be a page We're coming back to over and over so there's this magic little star up here click it Click it click it. Okay. Yay up. It's gone. Don't click it too much be patient Okay, so what that does is is add it to my shortcut bar So very quickly we can come back to the content configuration page here the content language page Let's do it did you want to talk about Okay, we are now going to create a block you guys ready to create a block Yeah, okay Okay, I got the energy going okay, so let's go to man. It's under managed structure block layout and The page looks a little bit different than Drupal 7 if you haven't seen Drupal 8 yet It's thinking very hard one second Okay, so What's interesting on this page is you have a tab called custom block library We're going to create a custom block we can we can add a class custom block here Or we can go to the tab and add it here, but let's I'm not going to click unnecessarily anymore All right, and just to make sure everybody we're using Bartek you don't change the theme or anything 7 but is by default the admin theme so Yeah, so what's new in Drupal 8 here is you can place the same block multiple times Yes And what's new in Drupal 8 is you can create custom blocks that have fields on them So there can be multiple custom block types that are fieldable and have all kinds of fun things and by default This is the default custom block has a description and the body And then you can place it anywhere any number of times and make it appear there So that's pretty much what we're going to do and then then we'll show Translating that later on Once we get there So well for now just create this block Yeah, did you click that? Yes So now we have that custom block and now we can go go and place it Yeah, so now you have a place blocks on the side and there's all your blocks listed that you can filter and you can place your block and Yeah, and the fancy thing here now so I've said that content knows its language and Blocks also can know their language. In fact, they can be language dependent So you can say this block will show up only for English and for Hungarian or whatever combination you want So block visibility is also built into Drupal 8 so you can create content for different languages Now you want to continue placing and I can talk so this this can be used for a lot of tricks So in Drupal 8 for example the main menu and the secondary menus that are in the header are blocks So if you want to swap them by language You want to have different menu for this language told the different menu for other language block visibility You can hide it hide it in this language show it in that language Or you can have a menu that shows for two languages and another one that shows for the other two languages Totally easy and we are working on making almost every other component of the page a block So you could hide them and show them selectively But of course views also expose these blocks and the page main page content itself is a block So you can do all kinds of things with language visibility I'm excited for the block layout So, um, but let's move on to taxonomy. Okay, so let's go into manage structure taxonomy And we're going to add a vocabulary And we're at the vocabulary name is interests. I can't speak here. Yeah Here just watch me type interests and Then I just clicked click save so it should be then it's going to take me to add a term and There's three terms from the sample site and the first one is adventure They're actually fun terms. So the set the second one is bar It is welcome to Amsterdam Here I'm getting it beer That was the third one on the sample. All right, great. Perfect. So now now we have a taxonomy It has terms. Let's go back to the vocabulary and see it and we have three terms adventure bar and beer All of which go together Okay So we have a block we have some taxonomy terms now we're going to create a content type that will work with and I'm not I'm not sure you've noticed but we haven't actually changed any language settings on the way So we've just shown the language setting. So everything we create right now is English Although there's no language selector and then we'll later configure this to support more languages and then you see those features showing up So we are creating this content type and one thing that that you may observe if you don't use the name product is That the machine name is automatically generated and if you use funky characters in this field Then the machine name will be automatically Transliterated in core If you start using funky characters, then you'll see it the effect of that here So that's the only place core uses transliteration right now But the API is totally in core and it may be used for file uploads and further things later in the future as well Does not use for file uploads at the moment or a path. Yes is either but for our machine names. Yes That is a very good thing Okay, it is I'm so happy when I saw that Okay, and just keep everything else by default. I did take it. I did remove promoted to front page off of it All right, so let's add a couple of fields. We're gonna add a new field called interests and That's going to be a term reference where as my there it is and Let's choose an unlimited number And we're just gonna choose the vocabulary interests and save field settings basic site building things and We'll just keep everything here by default So click save settings Okay, have we gotten that field in? Anybody needs help oh Is yeah, sorry we can slow down. We have we've had lots of coffee Yeah, so there's so there's the entity reference field and term references based on entity reference and also image references based on entity reference So there's there's multiple variants of entity reference, but this also internally is the as based on entity reference Okay, can we move on to the next field? Sounds awesome Yeah, we've got helpers here Okay, so what we're gonna do is reuse an existing field because the default standard profile creates an image field for us So we're gonna call this product image and we're gonna choose the image field Now for this one Images are special They have a file and then they have alt text and title text We want to make sure that you enable the alt field and the title field So we can actually type things into it and translate it Exactly yes This is great for search engine optimization Okay, and I think that was it Exactly Gabor is so happy that my shortcuts are happening. I am too. I started already using them very quickly So go to your shortcuts and go to content language and let's see what happens now that we've added more content types and other content fields, so it is Okay, I'm gonna be patient So we've created we've created a content type with fields and a custom block and now we'll configure their language settings So that when we create the actual content that we'll be able to do that in a way that we wanted Okay, so what you can see on the screen here now is that we've got the product is added We've got the custom block added Well, sorry. Yeah, all right the taxonomy taxonomy term. There you go. There's interests All right, do you want us to turn this on now or later? Yeah, yeah, yeah, okay. What's very cool is if you don't check this button now you can it automatically checks later Sneaky Okay, okay, so we have our content tagged Let's see. Let's go to let's expose the language switcher and let's actually see what we are looking at on the site so I'm gonna go home and And We have created the base foundation for multilingual, but let's see if we can see that Yeah, obviously we cannot see that it's a multilingual site yet. So let's enable the language switcher Okay, so go to manage structure block layout and What's really cool? Oh, you know, it's because I've been in and out of like here You can filter by this here language language switcher and you can place any number of language switchers if you want really confused users Put that the top and I should be fun Or hide the language switcher in certain language pages also fun use case Want to box some people into some languages about otherwise should be fine So, yeah So that will place our language switcher and will not do much right because we haven't created anything or Haven't done any content, but the next step we'll do is we'll actually make the interface be multilingual so What we have now is we have a content type to do our products We configured it to have a language selector on so when we add content for our product Then it will actually have the fields that we configured it has the image field and it has the interest field and Because we configured it to show the language selector it also shows the language selector on it So it's now multilingual So what the language module does is it allows you to create things in different languages The use case for this one is if you have a blog and you post sometimes in this language and sometimes in the other one It's totally fine You have these separate posts or if you are a resource site and you just aggregate content from different places And you want to search that then you can mark those content pieces as separate language So this will in itself not allow you to translate content yet What we're gonna do now is we'll actually translate the user interface So what we are doing is we enable the interface translation module next and save that and see what happens Magic should happen, but it does not So ideally magic will happen in this place, but it's unfortunately not happening. So I'll need to Nudge it a bit to to make magic happen So we enabled interface translation module is still English whatever you click on it will always be in English in every language But we we built this tool to automatically download translations for you So the way to nudge this process through in this Instance is you have available translation updates in your reports after you've enabled the interface translation module And it will tell you that it never checked for updates and now we are checking for updates And then it will tell you that hey, I have updates for French, Hungarian and Spanish It totally it's a bug that it says it's for block module. It's actually for everything and now you want to update your Translations and now the magic happens and it downloads everything for you all the translations in all the languages So this is localization update module in core. That is that was a lot of work from Eric to get into core And and what happens in this module is that it knows about all the projects that are on your site And also it knows about all the versions of the projects and it goes out and and looks for whether there's translations available And beta one it was released in the morning But we spent like three hours to ensure that translations will be available at this point in time Right here already and they are so other translations are available and then you can download them So the same process happens in the installer if you pick a different language Then this happens already in the installer right after the first step And it downloads your translation and imports it later in the process in the installation So this now downloads all the translations and then you'll have a Hungarian Spanish and All the languages available The localization update yes, Elton and updates yes That's quite a long process because it downloads three big Translations and it imports them and then it regenerates local caches of translations and stuff like that But it's three at once and the process you would have used in Drupal 7 is you manually went to localize Drupal.org and then figured out the versions and downloaded files and then downloaded to your own desktop and then imported to a web UI Total total tool bad. So now it says in Spanish that it downloaded translations because We've switched to Spanish before and nothing happened and now I have a Spanish a message on my screen that it says downloaded translations And if you go back to the front page, then it will actually show even more things in Spanish now And then you can try switching languages and this is not from Google translate. This is actual people translating Drupal 8 So that's how you get multiple languages Automatically from the community Like who's actually is this the first time anybody's been playing with Drupal 8? Yeah, how many is it's your first day like actually downloading it and everything. Okay good So so what you can see here is there's certain things translated like this block here the menu and the and the label of the menu item and The search block also and there are some things that are not translated because the this translation is not yet fully done Which is not a surprise beta one just released this morning. Don't blame the team And then there are things that we created that have no translations whatsoever because we need to translate them It's we created them so we'll return back to translating them But if you click around to whatever language you want, then you'll see that it actually works Yes Yes, so the update interface translation feature Depends on the update module So if you don't enable the update module and install it then you will not be able to use that feature So here's the French for example the admin menu is in French at least most of the admin menu is in French so Like if you go down to These pieces there's all the things that are already translated will be in French. So that's quite nice, right and You don't need to do anything. This just magically worked so We still have a user interface to finish the translation of this or change translations of these So if you go back to regional settings and maybe not in French I can find the links in whatever language I want because I know where it is, but you may not find it So let's do it in English. So in English Then you have this user interface translation screen, which is the hub for translations and This is much more usable in eight that it was in seven So if you who who's who ever used this screen in seven? Wow It's so unusable. It's unbelievable that half of the crowd use the screen. That's crazy So it's very unusable in seven because it shows you the source string and then there's a Summary of translations available for multiple languages and then you need to click into every summaries every single one and then do the translation It's crazy So here you have this two column thing and then you can translate it to the whatever language you want right away And if you change something and then go for a coffee and then you come back Then you see which ones you actually changed and then you can review them and then you can submit them So it's very easy to very easy to very quickly do this and the other fun thing about this is that Whatever you change here, these are quite harmless strings. So I can submit this one So whatever you change here is now saved as a customized translation on your site So all that downloads from the community and updates and everything will not touch these changes So these are protected for you on the system so you can look for translated strings that are customized and They will list all your changes to the to the community translations So if you don't like how your translation team translated Jupo, don't be afraid You can do your own stuff and if you have clients and you want to review I want to reuse this then you can just go and export your customization. So I just customize this for French Then I can Export my customized translations in this language and then take it to other clients So it's very easy to both depend on the community as much as possible And if you really cannot convince the translation team of some translations Which happens in every language on the globe I can tell you based on issues we get then you can just customize strings and then use them by any means if You have translations that you can contribute to the community Please do so but if you can add there's disputes then then Then you can do that and there is you can configure the how the update works So by default it will never run automatically, but you can make it run weekly or monthly So it will automatically update translations from the community all the time on the site That's probably a very bad idea on a production site Because your translation team decides to change terminology and then your client will be like what happened here So on the dev site you can run it whatever at times you want and then update these things and then on the live Side you set it to never update and only manually update it when you push your updates to the server and We enabled that process for you by downloading all these translations to a directory on the file system So we download those translations and we keep them locally in a directory So if you go to file system settings Then you'll see a setting now for interface translations directory So all the translations that we downloaded are kept there as files And if you put that into version control then you can manage the deployment of these translations You can push it off to your live servers and then run a manual import when the deployment happens And there's no automated updates on the live server and you can do the live updates on your staging and in your development environments and do the QA with that Yes Yeah, yeah, yeah, so sorry. I haven't stopped long enough. So the export screen Allows you to translate only sort of the export only source That's the default option and then you can pick a language and then the export options have You can there's three buckets that you can export from the non custom translations that came from the community That you probably don't want to export because on the other side They will also came from the community So you don't probably don't need them exported the custom translations and untranslated So if you ignore untranslated and non custom then you get only the strings that you customized and then you can take that to the client Not bad, and we only use two modules of the four so far How do you contribute this back to the community? So we don't have an automated way to contribute back from here But you but since you are customizing it for yourself You can take that pure pure file that only your customizations and then take that to localize the triple that organ imported there If you don't believe that all of those strings should be unlocalized just some of them, then you need to manually Remove the ones that you don't need to don't want to contribute. So we don't have a process for that But we have this for separating the ones that you overridden and that you did not override and then Finally for interface translation Good news There's something to do with English as well Who would like to translate English? Yeah Why do you think you need to translate English? German is better. Okay, that's awesome How are sure okay, that's Russian Let's um actually the good use case for translating English is Perhaps you want to say sign in or sign out instead of log in or log out because sometimes it's it's this is basically like string overrides in triple seven So let's edit this and first we have to enable English translation So I'm on the language page. I click edit and you see that enable interface translation to English. Oh My gosh save that Okay, it's and I'm I'm waiting. Okay This is good. Okay, so let's go in Yeah Yeah, so what happens is is Drupal 8 understands that English is not one single language anymore and So you can pick? Yeah, you can pick English and then you can search for search for your Search for your source strings And then translate translate to English so you can substitute English strings with up with other English strings and then they will work the same way as before the reason This is not enabled by default is performance Because those people who are perfectly happy with Drupal 8's UI as it is they don't care about this so They can't have us a speedier site, but those who care can do this so if we if we try to Try to visit this page. So that's already we are logged in and we just changed log out to sign out So in the admin menu, it's a sign out now Because we wanted to sign out and if we open the same page in an incognito session So we are anonymous then we'll see Sign in for our user login a button So you can change whatever you want in English. Yes, please. Yes And we are only on the second module of the four modules It gets better Yeah, we could do that Would you guys like to break now or do you want to go on to the next module? Oh wait, okay hands up for next? Okay, yeah, I'm not even gonna ask about break because that was a majority all right But we understand and hear you if you need to take a break go ahead and and stand up for a sec Okay, so let's enable the content. Let's enable the content translation module because we need to translate content at some point Let's do this So manage Oops, sorry extend. I like that the module filter is in Yeah, it's so nice Also, what something is interesting is you can when you see the arrows on these the menu the module page actually after we Let's enable content translation And then you can see underneath it. It has a configuration So you can have you can this is quickly going to the configure button in a different way And it takes us back to our favorite page content language page But it looks different now and the first thing to notify to notice is that when you come back to the page if you have If you have language Language settings already set it will default to those open and selected But check this out. It's got a translatable column. What is that do? Okay How many clicks did that take? So you can configure every field on the screen one by one and also it makes default assumptions about what you wanted So Amy just clicked articles to be translatable And now you can configure translatability field by field and Even better even better sub fields for image like you can say I want to keep the same file But I want to have a separate alt text and title text But if you if you want to use a separate file, yes, sure, of course, you can use a separate file, but then You can do that that too So the so there's a lot of metadata about notes and these metadata will track your translation Translation info. So this will track who who wrote that translation This will track if this translation is published or not. So publishing status per translation. This will track when it was Translated this will track when it was last changed. Is this translation promoted or not? Is this translation stick your nut etc? I don't think revision log message is a very good idea to translate, but we have it here Yeah, so you can configure everything field by field and then it becomes so this page becomes a real monster when you start to Click on these checkboxes, then it will be pretty confusing. So that's the primary reason we started with language module first Yes Okay, so just a short public service announcement. We've got a few power strips that will be laid in the room now So the technicians are actually waiting out there. Is it appropriate moment to take a short break now? When you move back in after the break those people who are in desperate need of power Those people should sit at the edges near the walls because that's where the power strips are going to be Yeah So hey, we are back So Let me answer a few questions that came up in the break. So you may be interested in some of them First there was a question of whether I actually need all of those translations on my site to just submit some posts Sometimes in certain languages No So one of the reasons that we separated interface translation from language is you can still post in Separate languages even if you don't want all those translations on your site. So that's fine Another question that came up is is language variants So if you want to have different languages for different regions or different areas on the globe or whatever Duple 8 did not really move forward in that front. Unfortunately. I'm sorry for that We've improved a lot of other things, but What's built into duple it right now is the API level support for language fallbacks on interface translation So if you use the language fallback module then interface translation has built-in support now to fallback between different language Translations so you can set up local variants for things and then translate only the things that are different in that language We don't have a UI for that, but we have the API for that And then there was a question on language names So the language switcher block in our our instance right now is every time English But if you look at the demo profile that we've installed earlier all the language names are localized to their own language So they are native language names So if you are Spanish, then you recognize your name your language name And if you're Hungarian you recognize your language name. That's the default behavior of Duple So that's just not happening in our site right now because it does this did not export those translations So you want to continue All right, so we have our Content types and our taxonomy. So let's make sure that we configure them to be translated and just double-check that we did that So I'm going to use my shortcuts to go to the content language page And See there's content in a taxonomy term. We also know that we want to cut translate the custom block So let's just go through and enable Let's do enable and enable everything. It's awesome But you know if you did not want to enable the tags you don't have to so let's just enable interests So I think we did not want to enable the tags translation, so I Got all excited. I think I clicked all the buttons. See now. It's too easy sometimes you have to actually deliberately be careful So we chose we chose for this demo to do some twists here So we've we are enabling translation for basic pages and products and we chose to not enable Translation for interests. So what this means is that every language translation of a product will have the same interest taxonomy terms But we will translate the interest taxonomy terms themselves So they will show up translated, but it will always be the same interests for all the translations Right, so that's the use case here So you can do very fine great setup of this like I don't want to have separate values for this But I want to translate it because an entity reference I just translate the entity that I refer to and I don't translate the reference itself Yes, yes other questions Yeah, so this works with entity reference So if you translate their reference that means that you will reference different values in different languages If you don't translate the reference, it's the same reference for each language But what you reference that itself can be translated So that's what we do with taxonomy terms magic and That's kind of where the flexibility of the localization and the extensibility of it is cool But this is where if you don't watch your configuration and accidentally click too quickly then like me Then you'll be like hey, this doesn't have the expected behavior that I want Okay, so it looks like we're ready and we saved So let's just save again Okay, all right, let's let's let's go add some content real quick Actually before that let's add a role Because now that we've enabled translation somebody's gonna have to translate this And often it's not the sysadmin or the website Drupal developer that's going to translate it so let's go into manage people and When your people page comes up Then what we're going to we're going to do is go to the roles tab Add a new role that will be translator another place where the machine name transliteration happens and Okay, the translator needs certain permissions to actually edit content and translate content and Let's just get this easier If you do edit permissions per role it filters it I know All right, so the first thing that we're going to do is allow them to use Basic HTML and full HTML We're going to have them do contextual menu context contextual links here and Then also if we go down to translate We want to make sure that they can create translations delete translations edit translation and Look at we have all of these things here for translate article content basic page content So let's go ahead and let's select these Because they're they're a power translator at this point see they have translate any entity and everything So this we're giving them some strength here and let's click save permissions and along the way there are As we enable the other modules, they do add a permission that using the defaults is fine But just on the help on the handout you can go back and see where the permissions were added. So Okay, so what we did do we went through like two pages of the handout really quickly So we enabled the custom block the taxonomy term and the content type translation. All right Yeah, let's create and translate some content So go to manage content and So the question was if it's possible to give translator access to a specific language currently so in corner however The node access and the entity access system is supports language So in so in seven there was a node access system and if you have separate notes for Translations, that's fine because they may have separate language in eight Translation is inside the entity So here we need to be able to provide access per language If we want to be able to tell people that you can only edit the English version of this one That only allows you to sell access to different languages So node access per language allows you to say I sell access to you for these English things And you can buy my French things if you want So and they may be the translation of the same thing and the user will not have view access to the French one If you don't give them view access to the French one So it's a very fine-grained. It's totally possible to do but it's not in core There's no it's not configurable, but node access entity access modules will be able to use that capability to be per language access Okay, cool. All right. I I clicked through a page while they were talking so I went to content to add content And I chose basic page content let's make it about us page and I'm gonna just put this in a menu and I'm just gonna keep it at the main navigation menu and I'm gonna save and publish because this is an extremely in-depth page called about us Huh, yeah. Oh, yeah, thank you All right, do you want me to translate it now? Or do you want me to add more content? You guys ready to translate. Oh Yeah, okay. Okay. This is cool. I'm just like the in triple seven. There's a nice translate tab here and Let's click into this page and You can see all of the different Languages and what's nice about the translate tab across working with blocks and taxonomies and menus is the translate tab Looks the same and it acts very similar and the same. So once we go through this once it's going to get very comfortable So let's go ahead and add a translation And we're going to add French Because this is an amazingly in-depth article about about us in French Yeah, I know I did that earlier So anyway, caveat of this form is the menu settings form part is not yet working with a multilingual System so it will change your default menu item, but you can translate your menu item elsewhere So the menu item is totally translatable. This widget is not integrated into that one so now it's translated to French if you go to French then it will be different in French and This UI is also Oh, that's not published to the front page anymore, right? Yeah, so this so this UI is also integrated into the contextual link system So if you click the contextual link on this node Then it will show you the translate tab and I wanted to show you an even cooler feature once it loads again Shouldn't click on random things Then it will also let you in place edit the node in this language Right there, and it will be able to save that change. So if you want to in place edit this one Then you can do that if that shows up, but for some reason that's not gonna show up here for me That's sad. Anyway, so if you have this entity in a view or something else Then you will have the translate access right there You don't need to go to this page and do this translation And if you have the quick edit module enabled which we don't have or we have some issue with it right here Then you're able to quick edit this translation. It's not possible to create translations from quick editing But it's possible to change translations from quick editing All right, so I'm let's let's go ahead and add a couple of Other ones and I'm I'm now translating in in the French I'm trans translating to Hungarian in the French interface Yeah, so this also tracks the source language of your translation So if you go to the translate tab it will show you that the French Translation was created from English and the Hungarian translation was created from French does not show that anyway We used to have a column for that No, that's fine So if you go to the edit form it has that source language Field set that you can pick what source language you were using and if you create it from English that will be English All right, let's add some products. I'm gonna go back to English I Can speak and read a little but not in front of the demo So the product not form will look very similar because that's Which is the note form that we have in Drupal 8 what will be different is we configured some fields to not be translatable So you'll see that when you go create a product that some fields will say all languages There's gonna be a very subtle and easy to ignore Note on them that they apply to all languages So if you create a create a product Yeah Real quick note about the this content list These all point to node one, but you can see the instances of the the page and language as separate Separate listings so you can find them very quickly. It deletes the translation deletes the translation So if you look at the the product field then That's interesting it would show you that interests apply to all languages, which it didn't do for us So that's what will be an interesting ride. We'll see how that goes That's fine Cool and then translation form for this one looks pretty much the same as before so whatever you want to translate is Gonna be the same process And that's where interests shows that it applies to all languages because when you create it does Doesn't really matter but here it shows you that it applies to all languages So whatever you change will apply to every translation at once For your translators They will not see the fields that apply to all languages Unless you give them administration permissions for nodes then they can change whatever they want on the node But they will have this all languages thing there now We have an issue to make this more obvious because it's a very subtle easy to ignore you change it And then you're like why is everything changed? It's a bug and we are like no It's a feature you wanted it to be the same across all languages and it is So that's how it is it might have better UI It might have a selector on the top that filters the fields by length. We'll see Well, that's how it works Drupal 8 has this fancy big blue button at the bottom of the form And you may have noticed that it says save and save and publish this translation or save and keep draft to this Translation so that's how the Per language Publication of the content is managed So in Drupal 8 there is no separate checkbox for public publishing something or making it a draft But we have this fancy blue button. That's very huge Probably also needs some UX help if somebody Wants to do that because it's save and keep publish this translation or see save and unpublish this translation And so you can see I didn't publish the Hungarian one yet. So you can see it's not published All right, are you guys all caught up? We're all up to the same speed No Yeah, you don't need to create for it just like yeah, we can just keep going on and mostly it's like Hey, you know where these buttons are okay? Okay, we're moving on yeah, okay, so manage structure block layout Now this is when I'm going to go to the custom block library and I can Click edit wait, I can't do my block Yeah, I'm like it needs to have a So this one's very similar to to translating translating the node It has the same same overview for translations. You can create whatever translation you want It may have it may have different values for author or who authored when it was authored, etc Blocks don't have these metadata by default, but translations track these data anyway. So, you know who translated it when so you can save that and And then we are about to move to a taxonomy term translation But before we do that I wanted to show something very cool because later on we'll go to views and Drupal 8 is as a lot of places all about views for example, this screen manage content is a View So it shows all the translations of your things and then you can filter for language and you can say yeah I make I only want French stuff and then you filter for French stuff and then you only get things that are French But this is a view So you can of course customize this to whatever you want So if you want to do the admin view and want to have other workflow things for your content Improve the workflow of how you work with content so you can manage What's not yet translated stuff like that you can add a new filter and you can say you also want to filter for the source language of this view now the original language of this content and And then you'll have a filter for the translation and the original language And then expose it so that users can actually use it for something useful Did I actually do something or now it failed? But did it actually appear though? Yeah original language nice and What's the in unknown? Nice, okay, so I expose it and whatever default value doesn't really matter Apply that and because that was a view I can do funky things for my multilingual Workflow right so now I have an original language filter so what if I want to see things that have been originally English and Have been translated to French Why not so you can do a lot of things with this and then and then do a lot of workflow support for your Administrators for your translators by customizing these filters and then allowing them to do funky things so this is again one of the things where Knowing language about things a lot all that data helps a lot and then fine-tuning your workflow to whatever you want And it's very easy to do the same for the people view or for other views the front page or whatever you want Let's go translate taxonomy terms all right, so it's it's For this oh, I just need to wait. I'm right. I'm waiting. I Know I need I need less coffee okay, so managed structure taxonomy and we have interests here and You can see that there's no translate here because we need to go in and do look at the terms first and Then the term itself because it's content We can translate it here and Look at the screen looks so similar to the other ones and it's very clear of what to do So I'm just going to add French to the adventure and then it takes me back to the English page Are the English version of the term so you click translate tab again? And then you can do Hungarian and then Spanish and we'll just we'll just leave it there for French and Hungarian But you know, we did not translate the vocabulary net yet. So just the terms that is absolutely done later What was it? Yeah, so so for notes that a lot of the metadata is in the note form already and for other things like taxonomy terms and blocks The translation tracks certain metadata like whether this translation is published or not is tracked Although the taxonomy term itself does not have a publication status So in Drupal 8 still you cannot say this taxonomy term is unpublished That's not possible to say but for translations. We are tracking that so you can unpublish taxonomy term translations and You there's a basic workflow is very similar to Drupal 7 you can flag other translations is outdated or you can track Then who authored it and when so there's a accountability of who did this translation and when did it happen? So that's what we track for translations Yeah, so Ralph is saying there's a relations here that you can relate terms to others and it changes for all languages Yes, this probably needs the same all languages note that it happens for all languages that for some reason our API is not picking that up And that the most strange is language all languages. That's also somewhat confusing. It makes sense technologically Confusing so Yeah, so that needs to have the mark for all languages. Yes, definitely So we have a sprint on Friday Saturday and Sunday in town is we gonna work on these issues So if you want to come help fix issues that we find we'll be here in this building on Friday And then downtown Saturday Sunday very cool place You should be there and work with us on fixing these issues be part of the thousand one hundred plus people contributing What is the title of the custom block translatable? Yes, we'll get to that later on it's confusing It's confusing So in Drupal 8 you can place the block multiple times and the title of the block is the title of the placement of The block so the title can be different per placement So you can translate the title in the placement I will do that later on but the block itself is a content is just the content of the block the title is not Not coming from the content. It's confusing. It's Probably translating translating a menu block is probably the hardest thing in Drupal 8 because it's like comes from three different places But once you understand what's coming from where and you can pair up the translations with that That's that makes sense and then hopefully there will be contributed modules and the TMGMT module And the Lingotek module and others who gonna work on workflow to make this better And so you don't need to understand that this text comes from the placement and this text comes from the content That's how it is now Okay, um, we're gonna make a view you guys ready to make some views. All right Yeah Yeah, okay So manage structure Views All right, we're gonna add a new view and the view name is products and It would be show content of type product and newest first is fine Let's choose to create a page and the page title was latest travel destinations and the path is trips and The reason why we had a default product content type is that's what we use for the multi-lingual demo In our case our product is a trip to somewhere lovely like Amsterdam and The display format. Um, what did I do? Let's see Yeah format table and This is fine. We're gonna create a menu link in Main navigation and when that link is going to be called trips And at the same time since we're here, let's create a block and this is Latest trips and let's just choose. It's the latest trip. Actually. It's a single An unformatted list of titles linked and just one item per block. Oh, sorry guys here I'm not gonna press save yet. Let me just make it go bigger. Oops not that big All right I'm gonna repeat everything The view name is products We're going to filter on content of type product Sorted by newest first click create a page and The page title is just latest travel destinations or some personal Title you'd like to call it But the URL is trips It's display format as a table We can display 10 items. That's great And then what we did want to do is create a menu link and we want to put that in the main navigation and The link text is trips and then let's create a block and It's called the latest trip and Let's just display an unformatted list of linked titles And the list is of one because it is the first latest trip Let me know if you want me to go through that again, or if we're ready to go Are we ready to go? It's hard to it's hard to be here at 530. It's like it's been a long day You guys are doing great very engaged All right, I'm gonna just do some housekeeping here. I'm gonna change the display name on the page To the trips page whatever I wrote on here. Okay I'm gonna click apply You can see that the title The the content filters and the formats came over from my first creation I'm also going to change the machine name To trips page if you guys don't do this already in views. You should do this It's a good idea It's very tidy. Thank you. Yes Especially if you have to programmatically access your views do that Okay, what else did I do? Okay. Oh Yeah, let's go ahead and add the fields So we're gonna add the image So we're going to add product image and I'm just gonna apply it to this display We don't need a label for the image And let's just keep it a nice medium image And we're gonna link that to the original content and Apply am I going too fast? Okay, I'm gonna add another field It's the body and it is chosen for this page only so We're gonna uncheck create a label and Everything is fine here to keep the defaults then I'm going to apply this and You can see I have product one In English product one in French Because that's the only Translation I did for the product. It's the only published translation I did for the product because we had an unpublished Hungarian one Okay, so something like this. It's not yet ready For a language specific view because we're not we're showing all languages at this point So let's go ahead and add a filter and this filter is Translation and the filter and now there's two of these right now cut though There's two in general content revision and content This is translation language. I want you guys to select just the content translation language right now Because there's some issues with the revision one. So and then we can just choose oh Don't not okay there and then choose for this page and Apply this display and we're going to use the language selected for the user interface text. Oh Sorry, it doesn't matter. Oh, yeah Okay, I'm just gonna choose the first one for this site So so there's at least two two language fill language fields exposed The original language and the translation language So you can use the original language to access the language that the content that that one piece of content was originally created and One piece of content may be created in any number of languages on your site based on the previous setup of the default languages Right and then a translation language is all the languages that it has been translated to and since we combined with the publishing status It now also combines it with is this translation published or is this translation not published So you can filter with that and then there's some dynamic options here to look for the language that Drupal selected for this page So you can save this view this views filtering depends on the language that Drupal selected for this page Yeah, there's a lot of different permutations and combinations that you can make and it's really flexible But you just have to be very deliberate as you put these configurations together because and how to test them Because you'll be like hey, why is my content not showing up and why is other content showing up? So with flexibility just becomes you have to keep a very good eye on on where you've configured things and what you expect it to happen All right, I'm gonna save the view So that's that's that's an option that we conveniently stepped over in the first hour So the question was I didn't see the undefined language. Is it gone? No, it multiplied itself Now there's two of them So Drupal Drupal 7 has language neutral and people don't understand what it is. What's language neutral? So in Drupal 8 we made two of them so you can be even more confused so So we found language neutral is probably used for multiple use cases and we broke them down to two use cases so one of the use cases is It's impossible. There's no linguistic content in this thing So if you have a picture of a cat without any text on the picture and there's no text associated with the picture There's only the picture Then it's not applicable to say what language that picture is in Because like this impossible that doesn't have language So for those cases you can use not applicable and for those cases when there should be a language because it has some text on the image Or there's all text for a title text, etc You can use not specified if you don't know what should be there, but something should be there, but you don't know So for for not specified is you hopefully fill it in later for not applicable it's impossible to fill it in because it doesn't make sense to have a language for that and translation only works for Actual languages, so if your content is not specified or not applicable then it will be impossible to translate Because we don't know the source language So we cannot do any any workflow on that or publication or whatever. That's not possible So in Drupal 8 the front page for example by default filters by language And it will not show anything if it's not specified or not applicable because that it doesn't have language So we don't know to show it or not, but you can customize the default front page is So you can customize that and then you can set up whatever language criteria you want as well You've had a question Yeah, so the example I've said is very academic Because like you usually don't store one image file and then no metadata around it There's no title no alt text does like almost never happens So this only useful or if you use an ISO image or whatever this image that doesn't have a language So for those use cases. Yes, that's useful, but do but it's Pretty impossible that you have a like a pure use case of I don't really have any language of this So this is for this is a minority scenario It's not possible to delete this option on the user interface But it's possible to remove this option with a module or the you export your configuration You import it back So it's if you don't like that there are these two options and they are confusing It's possible to remove it. It's not as easy as clicking on the link to delete it, but it's possible Yeah, it's possible to have a different image Yes, if you configure your image fields to also translate the file Then you can have different files per language Yes, it by default it assumes you probably only want to translate the alt text in the title Like if you run a product like you have a trip the same photograph of Amsterdam is applicable to whatever language you want Yes So you're way ahead of the rest of the group So well the views user views translation UI will do like in in 10 minutes or so So not yet, but we'll be able to talk about that. It's possible to provide context there But that we don't have a lot of context provided yet in the code, but it's possible Okie-dokie We have you we have a language aware view This is awesome. I clicked apply. Is it I'm not gonna touch anything. Oh, that's right. Okay Yeah, so it's only displaying one Let's let's click save so it doesn't go away Let's open the trips page That should open Sorry, I do that all the time Like we are human Right and so here's the trips page right here, right and here's where you can also find to edit the view and And you can yeah And here's your French product Here's no Hungarian products Sorry, it's just hasn't launched yet, okay It's getting there, okay, so let's go back to the view Because we're not done yet Um, what I'd like to do is um, I'm gonna clone the trips page view oops and Let's duplicate that page and Let's call this Exciting Trips page. I don't remember. What did I type? Oh exciting destinations. It's a page. Okay All right, and let's change the path to home and Here this is also here exciting destinations and We're gonna choose just this page So I've changed the display name. I've changed the title If if your machine is responding I'm gonna change the The machine name and then let's change the format to be a grid Just choose this display this page. Okay, and you can see that there's one product and It's still oh, yes. Thank you and let's change the menu and Let's call this home Because I'm right now I'm creating my version of the the front page home view and I think that's it Yep Okay, so I'm gonna click save and Let's go ahead and see what it looks like on the site. Oh No, there's two home pages. Well, how does that happen? Oh No So but what we have up here in the menu is we have a menu item created by a view We have a menu right item created with content using a page content type and Then we have slash home Which is our custom front page? It's thinking about it one second yeah, and the other one is slash node or slash and Okay, so let's let's do a little housekeeping on that and So we're gonna go to the configuration and site information This is similar stuff to Drupal 7 Yep, same thing. So let's just type in our new view page home and Save the configuration and then let's just do a little other housekeeping and Let's go and take a look at the menu and remove that other home link. So manage structure menus It's main navigation click edit menu and Then here is which which one is it so I'm just going to roll over and figure that out Our our view is the second one. So I'm gonna disable this one and Let's put that up. Let's let's reorder this There's a there's like it that for this for this use case is like crazy ways because I just I made it I made a I made a view page And I made that view page the front page, but you can make a view block and and put it on the front You know, yeah, there's many ways to do this. This is Same thing. It's welcome to site building. It's this and the permutations are great in Drupal 8 So now surprise. So what what you did with the about us page is that you created a custom menu item So if you go to edit the about us page What oh, yes So if you created the if you created the idea about edit about about you created the about us page as a content entity So if you go back to your content language and translation and you say, oh, I also want to translate menu links now You can enable custom menu links on your content language and translation page Which will appear at a random place in the table. We have an issue for that also By the way, and oh, I want to translate custom menu links as well So you save that and now you can translate menu items So I've said that that's not integrated in the in the node UI, but it's integrated into the Into the custom menu item handling So if you go back to your menus and your main navigation now that you've configured custom menu items to be translatable Hopefully you have a translate link on your about us page Same thing as for everything else text on a return note, etc and now you can translate about us to French and You can you may notice that the link title will be Translated and the link path applies to all languages. So if you change it it will apply to all languages But the description is language dependent So yeah, so now you translated that menu item as well and now what you hit So you have this nice new front page it works You have the menu item you go to French your content is translated your menu item is translated amazing but your block title your block content is translated right but your block title is not and Your home is not and your trips are not and your site name is not and there's a lot of other things that are not translated and Yeah, that's bad, right? That's very bad, but we have a solution for you All of those all of those we have a solution for you and it's one module. It's not 12 modules It's one So if I don't do that in French, then you can probably follow me better Yeah, so if you if you look and explore the final module that we have for today config translation Oh, yeah That supports translating everything that you have not been able to translate so far Magic So for example, you want to translate your site name, right? You go to configuration site information and translate site information And you want to translate it to French you go to add French Translation and then you get the form two columns You have the source on the first column you have the target on the right column and then you can translate this one to French I Would not try to pronounce this in French, but It's probably good and when you go back to the site We'll actually be in French if you switch to French So what what config translation does is it puts in a lot of these contextual? Pages to translate things so this was the site name But the same happens with the block So I've said that this is a block placement and the block placement has the title So now it's in the contextual links. So it says explore with us You can say translate this block and then when I translate to French Explore with us French Done So you can do this basically anything on the site that you encounter So if you want to translate things you can go forward if you like so when you're so now I'm in a French UI if I go to this product and Edit my product then you will see that my field labels the title is translated but interests and Product image are not translated. So if I want to translate interests. What was that? That was a vocabulary So I go to the vocabulary and Not that good in French, but taxonomy noticeable. Okay interests. What does it have a translate tab? So I can translate that to a French now. So interests French good Same thing if I go to structure, you will not be able to follow all this right You will not be able to reproduce but the front part is I'm showing you like yeah, you can do it for everything So you go to content types and Then you go to manage fields and okay I have these custom fields on my products and I want to translate. Oh, well, maybe the product maybe the product content type itself But if I want to manage those fields and then translate them whoa now I can translate them. So interests I can translate to interests French Yeah label of the label of the fields. So this is the this is the configuration for labels is Translatable, so now I go to edit my French content. That's not showing up there, but Is it showing up anywhere else? So what else did I change? I changed interests and I changed That's uh, yeah, I translated the yeah, sorry. Yeah, sorry. I translated the the The vocabulary instead of the field label, right, that's the problem translate No, that's what it do. Yeah, I don't know why it doesn't work, but all the rest works So you can come on Friday Saturday or Sunday to the sprint and help us fix that and Now we should we should move and then the final the final Fun stuff yours. So you need to translate home and trips, right? Where were those defined? In your view. Yes Translate view Oh You want to have a French translation of this view and it has everything It's very scary. So it has all of your your label for the view that the display settings and then you want to Translate your title latest travel destinations French So you can do that and you can do the same for everything else on the view So this screen is very scary So I wouldn't show this to people who are not really aware of what's going on in views because it's bad But you can trust it everything. So the labels the empty text the whatever other thing you configured in views the separators the pagers Everything and then you save it and then and now it's French No, no, no, no, no that no but the path the earliest is already translatable in Drupal 7 so it's same true in Drupal 8 So that's translatable as a path the alias so What did I change a different different page? So I changed the trips page title to French, right latest travel destinations French So you can translate views menu items This menu item. Yes menu item as came from this view. So same it happens in the view. So You modify that translation. You just need to find where it's hidden where the hell is the menu item in French it was the Exciting destinations Display options home menu and then home French and then you translated the menu item that came from views So that's what I said that if you so that's what I started with That is probably needs a cash clear or something. So that's what I said at the start is you need to understand what comes from where That's the only thing Because we worked really hard to make you able to translate everything everywhere But you need to understand where it comes from and once you understand that then you can translate views menu items Site name content types user role names input formats, whatever you want. This it's there so if you don't like clicking around randomly with contextual links because you don't like that or if you have a person who you Do not give administration permissions to your views, which is likely there's persons Who you don't want to do that then we have a config translation overview page That shows every configuration on the site and you can go from here and people who don't have permissions to blocks and fields And stuff can start from here and then can get to any any translation page from this section So if I switch this to English, then you probably have a better appreciation of All the things that are translatable unless you already understand French, which is and in this Area is probably possible. So yeah everything so like you have Contact message fields content fields custom block fields date formats image style names languages themselves are translated here So the language switcher is gets its translation from here user roles, etc. So that was our lab Would you would you use Drupal 8 to build multilingual sites? Cool any questions. I know I know you're the heroes Yes Mm-hmm English node and a French surface. Yes, so it's possible to have separate language for content and interface Totally possible in 8 we did not show that But we did not show a lot of things So here's a lot more that we did not show so if you go to your your language config page languages and Then detection and selection after you enable the content translation module There's this magic area that we did not show Content language detection and you can customize it so it's different from your user interface language So you can say a user interface is this and your content is something else Also possible Yes Yes So the question was field types Do we need a title module in Drupal 8 or something else to be able to translate title? No It's all built in so all those so we did not use so for the two hours that we've been here This one only use Drupal core. We did not use anything else. It's on simply. That's me. We started with Drupal core There's no other modules enabled on this site Drupal core only and the title module is not required anymore because we have title support for no types for Menu items etc etc built-in Yeah Yeah, so there was a lot of work went into especially Francesco Placela who's actually doing a session No, he did a session in the previous hour about this He did a lot of work to make these things possible that we can translate base fields of entities as well. Yes So this is yeah the configuration translation is all stored in CMI So if you can take these translations into whatever else you want I don't think it tells you that you changed your translations No, it did not Yeah, but but But yes, so it's stored in CMI. They are this called language Language overrides and CMI also supports other types of overrides like domain based overrides And then they work together to figure out which is the best value to use for your page. So yes, it's stored in CMI. It's deployable Yep Yeah, so string context there are two areas where we support string context the first is user interface translation so we support string context there and we show the context for the string that you are translating Right there. So if you look for Why I think why that something Then you'll get date formats. I don't know why you're not getting the rest There are several date formats that use that and then yeah, that's we'll probably not find the right one though So anyway strings that have context will show a little blurb at the bottom that they have context May is interesting Yeah, so may we'll show that this is abbreviated month name or a long month name So, you know, which is which context is for that? the reason I wanted to show the date formats is because they come from configuration back to Ralph's question because the configuration translation system also supports context So all the date format stuff is translated in configuration But they know that it's the PHP date format context because they are very crazy strings like why dot and dot blah blah blah So translators get to know that they are they are in that context So it's both supported in the user interface Translation and in config translation and the other cool thing that we haven't even shown here But that was one question at the break is that we support singular plural strings here And it supports every language. So if you have like ten different versions of the string It will show you ten different and you can enter them here. So that's all integrated in this UI as well So it supports context and plurals and it's all integrated nicely Okay, so the only thing I want to ask you is to spread the news Tell everyone and if you have availability will be here on Friday There will be a group working on localized Drupal at work to upgrade it to Drupal 7 There will be a group working on fixing bugs in this one And I've heard that there will be a group working on the MGMT usability as well because Yeah, there are some so there so because all the things that I've shown you it's possible to translate things But you really need to know where it is so a Workflow layer on top of this to integrate with third parties to integrate with a Translation management system a memory system or whatever is not part of Drupal 8 core But I think we got quite far already. So we are not ashamed of that So there's still a ways to extend this further But the main goal was to have language and everything and to be able to play that with views and translations and stuff So thank you for coming