 Hello hello hello Welcome everyone it's time to start this session So we are not moving into your valuable break time afterwards So this is a droop a late multi-lingual site building hacks I'm Gabo Hoichi and my co-speaker is beach. I asked Chandra money there Although it's the two of us speaking here And we are representing the what the team did There's a lot of people who contributed to this initiative So if you take a look at the list is pretty impressive But it's actually not the complete list. This would be the complete list So it's an amazing number of people who participated in the initiative. We Include everyone in this list who ever commented on an issue on the multilingual queue so this is over 1,300 people on the multilingual initiative. I You think it's pretty incredible and We are not done yet So if somebody wants to get involved and not yet involved, we are very happy To get you on board. We'll be here on Friday and on the weekend So we are happy to involve you in the project. We need experience of all kinds We need people testing you eyes. We need people working on better you eyes for things. We need people Writing tests for things fixes for major issues, etc however, we did make a lot of progress in Drupal 8 and my colleague at Acre a Jeffery McGuire summarized that very well in One of his sessions and he said multilingual in Drupal 8 is a huge business advantage We'll save incredible amounts of time and money and it allows us to deliver better experiences than we were ever able to before So basically he's saying that it's it works better and you get the results faster Which is pretty incredible. I think so it's been a work of these many people for almost four and a half years at this point and We made a lot of changes, but the high-level summary of the changes is as follows So we looked at How we handle your data and how can we know more about your data in terms of? Multilingual or in terms of language in general and then we looked at based on that data What can we do to help you build output? with all kinds of dynamic needs that you have in your multilingual projects and Then based on the output. How can you put that into pages on the site? So so you can make dynamic pages based on multilingual needs And we made most of the progress in terms of the data handling because that's where we focused our efforts if we did not make Enough progress in terms of output building or page building That's a lot of opportunity for contrib to move in that space However in terms of how the data is handled it's very core to how Drupal works So we really wanted to make sure to do that one, right? So for that one We added language information and translation support to practically anything in Drupal that you manage So we have language information on content. We have language information on menus We have language information of the blocks that display the menus and we have language information on the items that are in the menus So we have language basically on every level in the system And then we've added translation support as well So you can not only translate your nodes as it was in Drupal 6 But you can also translate all kinds of other content in the system user profile fields You can translate blocks. You can translate menu items. You can translate all kinds of content with fields And you can also translate all kinds of configuration in Drupal 8 core We have built-in user interfaces and data for that too So you can translate your site name you can translate your blocks You can translate your views like the empty text and the and the labels and and stuff in views The pager text etc. So we put translation support there as well And we made the translation support for the software interface much better, too We automated the translation of that from the community so it now downloads automatically to your system and We improved the user interface there as well So I think that's the most important circle for Drupal 8 is that now we know the language of everything in your system to very granular pieces so if you have a Spanish site and you create a New content type on the site in Spanish and now you decide to make the site available in German as well Then you can translate it from Spanish to German and we still support all the content types that Drupal Drupal came with in English That we also translate to Spanish for you. So all the coexistence of all of those different languages is seamlessly managed So now you have all the data in all of those languages and some of them or all of them may have Translations, it's kind of important to be able to build output based on that and Thankfully there was a nice initiative in Drupal 8 called views in core and They were very successful in getting views in core and they were even more successful in getting a lot of things in core 2b views So a lot of built-in blocks in core are now powered of views the front page in core is now a view The node admin page is now a view your block administration pages now a view. It's kind of cool So now you have all that data on your configuration and content And now you have all kinds of parts of pages the main page content and all kinds of blocks generated by views Now you can use all the flexibility of views to filter the data for specific languages or Display the data in in some other language that you wanted another one that was found So we have that flexibility built in there as well And now that you have that output you can put into pages So that's where a page building comes in and Drupal 8 did not make a whole lot of progress in terms of page building There's no panels in there. There's no fancy layouting in there, but blocks got a lot more flexible You'll see that in our demo We now have language on blocks among other things So you can have language visibility on blocks to hide and show That's that output based on your conditions So basically you can use these three things in combination in core to have data in whatever language You want to translate that data into whatever other language you want and then use views and other tools to pull that data out And display in whatever way you want and then you can use blocks and language visibility to Push that display into the part of the page that you needed it to be So that's the functional overview of what we did in Drupal 8 core And this is all built in in Drupal 8 core. There's no contributing modules involved So how we did that is we looked at Drupal 7 which is the orange circles here And we took local module and broke it into two parts So we said okay, there's a base language service layer that we need that serves everything So that's what handles assigning language to your data Setting up all the languages deciding what language is used on the page And we made all of those options even more flexible. So that's now a base service. That's in in its own module and the interface translation features we broke out to the interface translation module and Made that richer from Drupal 7 by automating translation downloads and making the user interface much easier to use And then putting in a lot more features there too And then Drupal 6 also had content translation in core which we deleted. There's no Content translation module of the same type that we had in Drupal 6. That's not the Drupal 6 and 7 That's not available anymore instead We took the entity translation module from contrib and put that into core and named that the content translation module the reason for that is that allows us To store and manage the translations together and makes it very flexible for you to configure it however you want and Then move between different configurations without needing migrations between your different models of data So that's the that was the most powerful way for us to support translations of all kinds of content on your system And then there was the configuration translation problem that we did not solve in seven And that was the I18n module which tried to provide that feature set And then it required the variable module and all kinds of other glue modules like I18n views and I18n web form and I don't know what there's several other modules That you don't need anymore in Drupal 8 because we have the configuration translation solution in 8 that works very closely With the configuration system in Drupal 8. It's deployable. You can QA your translations, etc So it's very well integrated into the deployment friendly configuration system So that's the high-level overview of the modules And then the reality is that there's a lot of other modules that we took and put into core in whole or in parts So we have the admin language detection module in core. We have a language fallback system for languages in interface translations So you can have Specialized versions of languages we put in the the title module obviously which used to be Translating the title field itself is now not required because we support all the fields and then all these glue modules from I18n We put into core as well and then there were several other smaller changes Like transliteration from machine names and all kinds of other small nice touches that you'll notice when you look around core That's I think not surprising for four and a half years of development But when it really comes powerful is when you combine these features with all the other great things that went into Drupal 8 core. So that's where I want to ask VJ to come over and show you a few things Okay, so So the main like Gabor explained we have like three different set of modules in terms of functionality like content translation and configuration translation which works with the CMI Initiative like the whole configuration system and then we have interface translation, which is something like we had in Drupal 7 So what we are trying to show now is basically we just trying to Set up a small website like a game site where We're gonna we're gonna display, you know, like a few games and we're gonna show How to review it and also like how can you set up the whole site? Without adding any contributor module and you can translate them into different language first this site is a small simple site and so the First page are the landing page. We are planning to set it up like a contact test page with the contact test form and and Then from there you can navigate through the menus and you can go to the different Game page or my account page from there. So first I'm going to change the home page To slash contact. So again the contact is a module that comes with the D8 core So this is the General it's a sorry out of box contact test form As you know in like D7 In D8 also the home page is always said to slash node. So I'm gonna change that to slash contact Yeah, that the site might look something like this So now We are going to use this form as a contact us form instead of website feedback. So I'm going to change the title to Contact us So yeah, so that we change the form now The title is fine, but we don't want to display this just this form We want to have a form that people can fill also we they can find us So we want to put some address and map as a main content and we put the contact us in the site so So here is where the translation of the blocks comes in so like it's a translation But for now, it's just a single, you know, like a site with just one language just English We haven't started translating anything so we're going to swap the main content like the contact us main content as a site block and add a new block a custom block with the address and map to the game store So what we're showing here is the side building flexibility of the new blocks features in Drupal 8 So let's say you want to have your contact information Which obviously will need to be multilingual because if you want to have business You need to have more as many as many people be able to understand what's going on How to get to contact you and what we are doing here is to make that as the first point of information on the site and That's in the main content block on the page So we are going to move that on the site and we're going to get some nice information to people through Our own text means so you want to create a new main page content So what we are showing here is block instances in Drupal 8 you can have multiple copies of your main page content and Move that to the sidebar. So we are Moving this main page content to the sidebar and then creating one For this page only So that allows us to use a piece of content that need that would have been a piece of node in Drupal 7 to Be display in a block and then very neatly be able to move that around and translate if we want and Doing the same to the main page content block as well. So the two things you did now is you move the Do you remove the? No, you did not remove so you've added a new piece of block on the contact us page Which as you may have seen can now be quick edited And you wanted to make that foolish them all right so So we have that contact us block we can go and Make it full HTML It is but you pasted the markup into so you can use this feature with This full HTML block you can use fillable blocks Etc. And the neat thing about it is it has in place editing as well as any other content in Drupal 8 So you can quick edit your block as well as your content and you'll see soon that you can also translate this block Then we have this form here that we wanted to move to the sidebar and we can use block visibility for that Which Will allow us to have multiple copies of this block and show this main content in the sidebar and on other pages Show it as the main page so what you can use this for is If you're building out your site and you have you have some rich type of content for locals in Catalan and Spanish You can use that to To provide them with that kind of information And you can use separate blocks for if you are trying to build out the site in French and German So maybe they are going to visit your site as well You can use a different kind of block and show and swap those blocks based on different languages on the site so that's why block visibility can be very handy and Block instances is very handy if you want to display the same thing at different places on your site So what we are showing here is we're moving the contact block Which is the main page to the sidebar on this page and on other pages would keep it as the main content like this And So the rest of the pages still show the main page content We need two instances of that block and the other instance is going to show on every other page So this is a very powerful cyber in feature in Drupal 8 to use for for layout in your pages and Mixing with language support can be used to provide separate features for different audiences You want to go forward? Yeah, the next one is like we're going to add a menu item. So we can display Notes up before the note project. Yeah before that I would change this to a home page. So Already a home page, so if I go directly To the home page. Yeah, so it will be a home page So now we're going to add Slash note page as a game listing page and for that I'm going to add a menu item to the main navigation And what we are creating here in Drupal 8 technically when we are creating menu items are content entities So these point to other content entities or other paths on the site And when we get them created then we'll have them Have them Translatable and positionable as content entities in the menu and then we can create another one for my account And then we'll show you how to do fun things with menus and blocks and translations So we now have this three item menu We have some of them that only shows for logged in users Some of them shows for everyone and that's a great menu but what's usually happens on a site even in the small site with game reviews is You have languages that are not hundred percent copies of other languages So you need to have some languages that share this menu and some other languages that don't So I think we would need languages first for that, right? So we would need to set up the languages that we want to use for the site Let's do interface translation at the same time So you want to do interface translation and language So we can go faster And then we'll have languages to play around with the blocks in the menus Very good Okay, perfect So that allows us to do a lot of fun things with this so So that's fine So So when we have When we have our languages to deal with we can translate that block to however many languages we want So let's add the languages first and then we can swap out the blocks for different languages as well So because Drupal 8 uses blocks for basically any part of the page We can use language visibility to hide and show those blocks So if you want to have a menu for Catalan and Spanish and you want to have a total different menu for Hungarian Let's say then you can do that with language visibility on your menu blocks So you can use a menu for several languages and then use another menu for other languages So what we just did is we enable language and interface translation modules and when we add a new language Then it automatically downloads interface translations from localized Drupal.org and then it's updating those translations in our database as well So that's what's going on right now. It's importing our importing our translations. There's a percentage sign It's not going very fast here, but it's a big translation. It's like six Thousand translatable strings. So while that's going on we can talk about this happening Automatically if you don't want to have this happen automatically on your site You can disable the automated translation updates and then later on You can push from your staging server to the live server All the updates that happen there and do the quality assurance testing on that server So now we have one language and let's add Catalan as well. And then we should be fine We have prepared sites for every step of the demo In case it goes bad. So we have this site that already has those two languages Yeah If it doesn't have So once you once we have these two languages what we can do is to use language visibility as you can see there and say We want this menu only for let's say this one was set up to be English and Hungarian But locally probably would be a more likely primary menu for Catalan and then set up an entirely different menu for For other languages that we want so what we did here is we did a main navigation that shows for English and Hungarian and we did a menu that was a main navigation for Catalan and We can set up the two menus entirely differently and then swap them out on the page Based on language visibility So if I quit out of the Catalan in their face because some of you would not understand Catalan We can go to the block layout and see that we have two blocks We have a main main main navigation block and a main navigation Catalan block both of them and Instead of showing them both at once what we do is for the main navigation You've just seen it's limited to Hungarian and English and for main navigation Catalan we limit to Catalan So when you switch language on the site It will be for English and Hungarian this menu and for Catalan will be totally different menu So you can combine menu translation and block visibility To have entirely separate menus for specific languages and or share menus between different languages and translate them and What this demo also had in there is the translation of the menu items themselves So that you can do easily on the menu interface Especially if we are not stuck in Hungarian and you're going to understand it net understand it better Yeah so If you go to the main menu itself That's gonna have all your links and What's great about that is? All the links have a translate tab on them translate operation Summarizes which which languages it is translated to we are not using this menu for Catalan So we did not bother translating this item to Catalan We did bother to translate this item to Hungarian though and when we edit it It shows that it that it is translated this way to Hungarian so that's a very powerful way to combine translations on content entities with block visibility and Then you can do the same thing to blocks. So there's our block with that label and You can go and edit the block And then it has a translate tab as well and of course the blocks has their own translations Etc. So this applies to all kinds of content in your system that you create that you place on the page That you put in a menu that you put on a user profile You can go and translate to other languages. You want to show how we configure the translatability for this one? so So, yeah, I think I can go back to the first one So for for configuring the content translation there is a setup under Content land, you know content language and translation, you know, and here you can you can just define Yeah, define the different elements of That that you allow is that that you want to translate So for for blocks We just going to enable custom blocks and then and in d8 the blocks also kind of like nodes like it's like you can create a different type of blocks and And then yeah and under the block types You create a different set of blocks for you know, which is a whole block type and then when you enable the Element then it provides your option saying that if you want to enable for That element and all the fields under the element and you can decide whether you want to translate all of them or you just Want to disable only particular fields So some fields it makes sense to translate some of them It's you know, it's not something translatable So you can just avoid those or you can just leave it back and then At the same place you may have noticed there is a custom menu link item as well so the same place where you enable custom menu link translation and The same place where you enable user profile translation comment translation is a fun thing Etc etc So if you have use case for translating any of these things then you can just go in here and and set them up And I think we are now going to move forward to content types so So Let's say let's say you want to have Let's say you want to have actual games for review, which was the point of the site So what we're going to do there is we're going to create a new game content type And that's very easy is very similar to how you do in Drupal 7 The only big change here is we have new field types now so We can do all kinds of crazy fields on games if we want we can put date fields on them we can put Whatever we want so once you go to add new field There's this whole big list of things that we can deal with and that includes And that includes email Boolean Comments themselves our field which you'll learn soon. How does that work? Taxonomy term reference content reference There's entity reference supporting core etc And the good thing about all of these fields is all of them can vary by language So you can create whatever field you want and then you can vary that by language So let's say I want this game thing and I want to have an image field, which I'm going to actually we use an existing field for that Image is fine. So I'm going to have games with images on them and All the settings are okay for me. I don't care about the details here and then I want to have a Number field that is an integer that would have an estimated price of this game So people reviewing this game have an idea of how much it costs There's one one of them is fine And we want to provide that in Euros and then we want to have Whatever other field you want so basically you can build out this content type with all the Built-in field functionality and now we want to put reviews on games and reviews They should take ratings right because otherwise what what what makes sense to have reviews on games So what we're gonna do is we're gonna create a comment type For reviews, which is also possible in duplicate. So we had a new comment type. Let's say with the review very good We're gonna target that on content in general and save that And now we have a review comment type and what we need in reviews, of course, is the ratings So we manage fields on them and we add ratings Which is gonna be a list field for integers We say rating And they're gonna be able to select from one to five Very good limit them in one So very easy to get around with all these all these fields for you to build off on And now we can just need to relate this comment type to that content type So what we'll do is we go to content types Big game manage fields and we say games want to take reviews. So games want to take comments That are reviews Then we have a we have an option to select which type of comment it is it is a review type of comment so very easy to build this out and then All of these are content entities that are related to each other So now you can go to your configuration and say which one you want to actually translate So you go to your content language and translation and you have your comment types and you can make your reviews multilingual as In support translations or you can say you don't want to support translation was it on reviews But you want to you want to make them in a sensible default language So let's say when people submit reviews on things they will submit that in the page of the language, right? So we'll say it's the interface language selected for the page That should be the default for the review and we don't Expose the language selector for the user because it would just confuse them So it's very very flexible to set up how language works for your content So we say that's defaults to the interface language and then we want to do similar for content But we want to actually translate our games So our game content type and That's where all the fields come in that are supported on notes So we have a title field we track the author by language, which means who translated it We track the time of the authoring when it was changed whether it's promoted to the front page We track separate aliases for them. We have separate body text and then some fields like images We have sub field level detail for them So you can say I want to share the same image file because games Basically have the same photograph somebody playing the game or if it's a board game like in our case It's gonna be a box of the game. That's international mostly and then the alt text and the title text We want to translate and then the price is a good question if you want to keep as a unified price Maybe you want to do that then You can't keep you that way So and reviews we're not gonna Take them separate language. We're gonna take them in the same language As the user wanting to submit them So it's very easy to plug in all those things that you just click together on the field UI to the multilingual settings And now you have a whole input system for games and reviews and it's multilingual and we were done it within like five minutes So if we want to add new games, we go to our content admin page and we say add content We want to add a game. I really like the Hanabi game. I don't know if you know it Submit that in English. I could upload an image now. I'm not gonna do that Let's say it's 20 euros So now I have this game and now I have Comments on it on them which are reviews so I can say I really like this game So it's a five Really like it and submit that and so the multilingual experience around this basically is I Can go and translate this game to however many languages I want here Go in and translate it to Hungarian and Catalan and then on the reviews themselves We track the language that they were submitted with Unfortunately Drupal core does not have user interface to list comments by language So we are not going to be able to do that one more fun thing possible here is Although we have the list of reviews saying reviews kind of a problem here Is that our review submission form still says add new comment? That's not nice. It's not possible to configure in core, but you are at a talk titled Triple eight multilingual hex So we're going to use a good feature in triple eight to make that customized so What happens in duple eight is you can change English interface text if you want so you go to Your user interface translation and that's all the things all the source strings Found on the pages and that's where you will find add new content New comment You can filter for that and there's of course. This is the Hungarian translations. I'm going to change that to to the Hungarian version of review Save that So now I have it properly saying the Hungarian version, but there's no option for English. That's not nice However, I can make it available as an option Because I just go to language lists. I go to English and say okay English Make it available for interface translation. There's a checkbox. So this saves you from installing the string over rides module All built into core. So now you can go back to configuration interface translation and add new comment We'll wait there for you and say English by the way We totally revamped this translation interface. It's much easier now in eight. You can actually translate it here So English filter And now add new comment. I want to change to add review Save And now Here you are you have at review in English and Switch to Hungarian and was gonna say that whatever I changed it to Hungarian, right? So this is very useful to change whatever you want in core basically if you don't like register you want to Add new you don't like add new account. You want to register you don't like login you want sign in whatever you can change that It's very easy to touch up on things and fix problems Yes, so the question was how do you change this when you have six different common types? Unfortunately, this example does not scale to that problem Because this changes it globally The example does scale to login and sign in etc You would need to have it as a field setting. So the reviews label itself is a field setting so if you go to fields then Then that's what I configure it as the name of the field Unfortunately, the add new comment is not yet a field setting. However, when I created this demonstration a month or so ago I created an issue for that So hopefully will be possible to change that sooner or later So reviews is coming from the field label itself and it should have a field setting that says Add new review or whatever label for the form and it should use that sure so so that's So that's how you do the content types and then when you translate your notes you will end up with Multiple versions of this one. So let's say I'm just going to touch up on this to make it easy for you Hungarian save it And now I have two versions of this note. So if you go to your note admin page Now that has two versions of this one. So it has two Hanna bees It's totally indistinguishable because the name of the game is the same regardless of the language If we want to make make it distinguishable because there are translations of the same thing What can we do? We change the page because this page is a view It's a view. So we go to views and we say we want to have information about the language on our content admin page So this is admin content. It's a view It does not tell us the language of the content. So we add a field for the language of the translation Content translation language. We add that field to all displays apply to all displays and Now I have that language information at the ends if we want to make that somewhat nicer we can Rearrange this and move the operations earlier. So what's great about all the views advancements in Drupal 8 is Most things are views. So if you look at some something in the block or look at something in the list It's very likely. It's gonna be a view and then you can just go behind it and change whatever you want In this case, I can customize the content admin view to be an admin translation dashboard and And Have people whatever information they want and have people whatever tools they need So I have a language filter here, which is built into the core view I can filter it down to only the Hungarian translations and then do whatever I want with that So that's very flexible and very very reusable knowledge to have So in views there are two tools for you to use there. There's The filtering for languages And there's the rendering of language. So the filter basically decides Which language the query is going to filter for? So that's the back end of the view and then there's a front end of the view is which language the view is going to render This and there's a lot of options there as well So you can render the result in the original language of the content that was submitted in or the site default language Or a specific language or some things. It's very easy to build views that are like To-do lists for your translators or a translator dashboard like this one where you filter it for things that are outdated in a specific language and render them in your language that you can translate to etc It's very easy to combine those features so So what we looked at basically here is All the data that you can do is Either in your configuration or in your content if it's in your content like all your menu items all your content types all your Comments then it's fieldable and it's configurable as translatable entity so you can one by one Translate every field and configure which one you want to translate it So if I don't want a price I don't want the actual image to be translated they are kept across translations and then we've seen that is possible to touch up on things in the user interface and Make the interface better however we want and then build views based on the data and get whatever kind of output We want with filters and then the views could end up in blocks or the main page content block and those blocks We can move around make separate instances of them and Display at different places and use language visibility to hide certain things like as we did with the multilingual menus We created the menu for two languages and created a separate menu for a third language and Hidden them and shown them for separate languages So I think that really shows that this builds a reusable set of features Where you can work with your data work with your display and use your displays to build your pages in a very flexible way and and only with Drupal core without any contributed modules installed in Drupal 8 today You can go and start doing this for small sites like this one I would encourage you to start now and start building it out and see see what happens And I think that's it for the session and if there are any questions. We would love to answer them Yes, do you want to walk over to the mic that I don't need to repeat the question Sorry That's a sport. No The question was regarding your overriding the English string for instance review instead of add new comment Can you give that some kind of context in core so that this only applies to a game node? so Drupal core So Drupal core when it attempts to display add new comment from the form It does not tell the translation system the context it is coming from So even if in this interface in the translation interface We would be able to provide that context when it is actually attempted to be used that context is not provided So it wouldn't work Unfortunately for strings that need context the only way that's going to work is if developers add that context Otherwise we cannot inject it from the outside because we don't know which component and class and plug-in and whatever It's coming from and how we would be able to like tell that plug-in or something that hey You would maybe want to use this context So yes, ideally it would be possible, but technically we have not found a way yet for that Thanks sure Yes So the question was do I recommend this to in general to change strings or should should you have a module for it It's so there's a lot of work that went into the translation system behind this the strings Actually this week there were performance improvements to make it even faster So it does not translate anything that does not need to be translated So we place in strings in English used to be a performance burden because then then your English pages would start using the translation system It's now not that big of a performance burden anymore. That's the first answer the second answer is It's very easy now To take all these customizations and use it somewhere else because all the customizations that you make are tracked as customized translations so you can take these English Customizations and export them to your computer That's not very Big news for English because for English you only try translated the ones that you needed changed, right? But the same works for hangarian So if you want to take that customization that I made for the ad new comment hangarian translation What Drupal core does is it protects that customization that I made in this UI for being overwritten from the updates from the community? And it also makes it available for me to export that customization and take you to other sites if I want to clone this site So it's as good as you can do with a module because built There's built-in protection for those strings that you entered in this UI if you don't want that built-in protection you can turn it off There is a setting here to To overwrite customized translations or not But the default setting is that customized translations are kept and they are not overwritten by the community updates and all kinds of Imports and stuff that you do so it's as good as a as a custom module could be It has a much better UI to change things So I don't know if you notice but in seven there was no direct input for interface translation here and in eight there is and What's better is if you have something that? As plurals now you can enter that in In a plural friendly way, so it's all in place now you can just translate them You can make changes it marks them so you can go have a coffee and then come back and you still see what you changed Then what needs to be saved? I think it's really great to work on this one Yes in the back The question was if this is exportable through CMI or not No So the interface translations are not kept in configuration However However, as I've said there's a setting here that governs whether the updates actually happen So for some reason the setting in this site And I think his default is to never check for updates and never update your strings so this is a suggested setting for production sites if you want to quality assure your translations that it would never change your translations on the production site and on the development side you can set it to update weekly or monthly or whatever and Then the other good news is that all of these translations that are updated are actually saved in the file system So you go to your configuration and file system settings and that's where you configure where they are so this is in sites default files translations now and On the production server. This is in CMI this string the setting of where the file is So on the production server you can set this directory to someplace that you manage with git and when you push your production stuff you push up the the string changes and And just run a drosh job on the production site when you launch that re-imports those Translations so you can do the updates on a development server staging server and on the live server just Configured this directory to be a git repository somewhere and then then run and drosh import when you when you push live And then there's no updates there and there's nothing happening. So you can do the QA this way the reason it's not in CMI is a lot of data and We did not figure out how to put that to CMI and the same thing as your early access I'm not in CMI the same problem. We haven't figured out how to put that into configuration Yes Hello, hello This is very similar to entity translation When using entity translation previously we had a lot of issues with modules like workbench moderation in line entity form Etc. Etc. Is there a set of recommendation to port this kind of modules to Drupal 8 to avoid those issues? Yes, yes, so there's been so this is very similar to entity translation Yes, because it's we ported entity translation to 8 How we made it better is we made all the base fields available like title author publishing stages without extra modules So all the fields on content are available Why is it going to be better in Drupal 8 than 7 if it was so bad in 7 good question The reason is going to be better is because in 7 it was a contributed module that people did not integrate with and there was a Different core module for content translation that some people integrated with this Contrib modules some people integrated with almost nobody integrated with both And there was no migration path between the two of them at least not both ways So this this time we only have one solution and it's in core and the reason we have this solution is because if you check all The boxes all of them then is the same as it was in Drupal 6 or 7 because then all of your fields are Translatable, so it's practically a different copy of the content, right? So you can you can on a scale reproduce a different solution or the same solution as in 7 But it's always the same API is in the same infrastructure So it's one API to integrate with for contrib and it's a core API to integrate with So that what's going to make it easier to integrate the best practice is that the API was also reworked under the hood Francesco Placella is going to have a session or is having a session at this time or something like that I don't know exactly about the API behind this Is much easier to use in 8? Because now it defaults to handling the default language of the entity and if you want to get a translation It's just a method call There's no like magic arrays and numbers and keys and stuff that you need to remember That was very painful in 7 to support in 8 It's a method call and then you can work with the translation as a Clone of the original entity if it was the original entity same methods same API is etc It's a very easy to deal with and support if your module does not care about translations at all Then your module is always going to work with the default original language submission version of the entity and not do anything with the Translations usually that's the idea, so it's not going to break anything, but it's not going to work with them But but again the the reason we think it's going to be better is it's one solution in core And it's scalable to all requirements that we've seen in seven So it's going to be better and easier to integrate with in fact in an 8th core. There's search module Makes all the translations appear as separate results the core search module Although not a lot of people use the core search module However, if you use whatever country module the search APIs also expose them as separate ones So we have all that information exposed to we have it in the entity access API views note access Etc. All of those are exposed in those APIs as well. So people Interfacing with those APIs will need to or should integrate with language support as well anything else If not, then again Friday We're gonna sprint here and there's mentors available for you to help get started if you've never sprinted you should come anyway Mentor is going to help you get started work on things and if you feel comfortable then Just feel free to come to our to our sprint I will be at the sprint as well as several other people from the multilingual team and we have tasks for anyone We have tasks for usability testing documentation writing demo updating Whatever you want Slideshow translations all kinds of things. So we have we have Tasks for everyone and there is a sprint announced for translating Drupal late to your own language as well but You'll need to be able to find other people who are also translating to that language So that's not that easy. We'll try to figure out some Process for that on Friday. So people find each other easier But now is also the time to start looking at translating Drupal 8 Because there's not gonna be a lot of time before it's out Hopefully and you want to get your translations there sooner than later So that's it for us If you liked the session or if you did not like the session, please provide feedback on the conference site There's feedback form on each session and then you can provide a feedback there Please do so we can improve in the future. We can make things better. The conference is better. We'll be better and everybody's going to be happy Thanks for coming and see you around at the conference Exactly the same So You You