 Hello everyone. So we're going to get started. So today I'm talking about multilingual and the lessons that we learned from building a rather large multilingual and multi-region website in Drupal 8 earlier this year. So a bit about me first. My name is Stella. I've been involved in the Drupal community for, I don't know, London I care to remember, 4.7 days. I was originally a hobbyist, so I did this as a hobby in my spare time and then I went to Drupal to get and realized other people were making careers out of it. So I started my own company. At which point I stopped contributing really and started working. So I'm mainly a originally a back-end developer but these days I'm mainly managing a company but ever so often I get to work in a project which is what happened earlier this year. So just a bit of a background about the project. I won't be really touching on this again but it was for an Irish multinational. They were launching a new brand across the globe not just in Ireland and they wanted four different regions and 13 languages, distinct languages. So the content in North America was different than the content in Europe even though they were both speaking English. So that's what I mean by multi-region. So just to briefly summarize what we're going to go through today. Time-enowing. First, how to configure your languages and what language negotiation means. Translation versus localization and there is an important difference especially if you're using the paragraphs module. That's not me. So just some of the panes that we encountered there. How to translate stuff. Yeah, the joys and pains of translating paragraphs and menus. And if I have time I'll go more into the multi-region stuff at the end. So first of all, getting set up. Who here has used Drupal 7 multilingual? Raise your hands. Okay, good. This is in the beginner's session. So Drupal 8 is coming out and there are four modules you need or you don't have to use them all but four of them in Drupal core. You do not need the internationalization module. You do not need I18N. So this is fantastic. There's four main modules. I started the bottom language. Essentially it just allows you to add another language to your site. So if you're just going to do a single language site, say in French, then you can just add that. It will download the French language pack and you don't need the other ones. Interface translation then allows you to translate the system strings. So say like there's text that's defined by the module that you're not able to configure like say the search button text. It allows you to translate that. Then there's content translation which allows you to translate your entities, your nodes and taxonomy terms, and then configuration translation which I guess is the equivalent of I18N variable in Drupal 7. So it allows you to translate configuration strings that you might enter when configuring a module. So first of all, you need to add your languages. So this hasn't changed much from Drupal 7 really. It looks slightly different. But you can add new languages. Now this drop-down in the screenshot is just set to custom language. But you know, French, German, Spanish, all of those, there and you can pick those, the one you want. And when you do, it will download the language pack from localize.drupal.org. However, in our case we were doing multi-regions so we had to define different language codes like ENGB for English in the UK and EN, but we just went with EN for the US. So I don't know, we did Spanish in Latin America, Spanish in Europe, there were different language codes that we used. So that allows you to do that. And then if you want, you can download the regular Spanish pack and then import those strings into your custom variable just to give you a head start. So these are some of the languages that we had. So English, North America, Asia Pacific, EMEA, Latin America, it went on. Couldn't fit them all on the screen. We also had Russian and Chinese. I got pretty good at not necessarily reading Russian, but at least been able to figure out the character combinations that made me feel like I could do what I want. So language negotiation, a lot of fair review have used Drupal 7 before so I'm not going to spend much time on it, but it's basically when a user comes to the website at the naked domain, so how do they know, how does the browser know, how does the website know which language to return? So the first thing that we've done is to set it to the URL. So if you have come and you're requesting example.com slash EN, then you're going to get the English version. If you're going to example.com slash F4, you're going to get the French version. So we'll check that first. If that's not set, then we have configured it to be, in this case, the IP address. It'd be probably more standard in most sites to use the browser so if the user has configured their preferred language in their browser, then it would use that. But as we were doing IP address, English in North America is different than English in Europe, then we couldn't just rely on the browser settings as they were just English and we needed to know which English. So the IP address one by the IP language negotiation module, so that was an add-on that we used. It's one that we ported to Drupal 8. So I just want to briefly talk about the difference between translation and localization and it will become important later because it really, you know, caused me a lot of pain and I don't want you to fall into the same mistakes. So translation in my head is you have a copy of your content in English and you want the exact same thing just translated like for like word for word into French. If you have a view and you're returning all, you know, say, latest news articles in the current language, then it will return them all in French, say. But if it finds a note that has not been translated into French, then the normal process is that it will just return the English version because that's the one it has, that's the master copy or the source, say. Pretty much okay. By and large, as long as you're not using paragraphs. So I'll come back to that. Localization is when you have content in the same language which is targeted to different locations. So you're localizing it to the region. So you're localizing English to North America or English to Europe. The content often diverges. So in our case, the solutions or services offered by the client were different. They offer different solutions in Europe than they did in North America. As a result, their menus also changed. And I'll come a bit more into menu translation later on, but it's an important difference that the menus actually changed the links that they had. So adding translations. I'll start first with the system strings. It hasn't really changed since Drupal 7. You enter in the part of the string that you want to translate. You find it in your language that's missing and you translate. The one thing to watch out for here is that it's case sensitive. So our clients were translating and they didn't always notice that they had to enter it in perfectly in their same capitalization. And spacing. So trailing spaces and stuff like that can really mess things up. So who here has used entity translation in Drupal 7? Okay. About half the room. So Drupal core in Drupal 7 had the concept of I think it was called content translation or node translation, which was essentially when you translated your node from English into German, then it would create a brand new node, give it a new node ID, and then link the two in the database through a translated node ID or a TNIT. So that's done. Instead, we have essentially was entity translation module in Drupal 7. That's now in core. So here you have the one node container. And the fields are translated. And you can choose which fields are allowed to be translated. So it's much better. It's much easier to translate, especially if you're using field collections or paragraphs. And it's just nicer. In this case, we had a node called bakery. And this is the translate tab that you would normally expect. And you can go down and add or edit the translation for your language. Enabling translation for your entity. So you can either go through, you know, the structure content types into your content type, click enable translation for this node, and then go into an edit each field. That's a not very, you know, do it use of your time. So there is a another page underneath the regional language configuration section, which allows you to just check boxes enable which content types or which entities, first of all, have translation enabled, and then which content types within, say the content section. And then once you take the content type, it then shows you the fields and you can just tick, tick, tick. So this is the top part of the screen where you can choose your entities. Then you get to your nodes. So you can, we had a call to action node, we had a campaign node, we had other ones. And as soon as you click translate in the campaign, then it shows the fields and you can click translate on those. And it's not just nodes, it's also taxonomy terms, and any other entity. So from products to menus and so on. So I'm just going to quickly. Okay, that did not keep my browser over there. I better not put up the trivia questions. And my browser with my handy pre-prepared tabs has disappeared. I'm just on there again. This is a old test site so you can ignore the security warning. So configuration, regional language, content language translation. See if I can make that better. Can you read it at the back? So I'm just going to assume that you will. It doesn't really, it's not relevant for this point. The point is you choose your entities at the top and then you enable it. If you have a lot of content types and you're translating them all and they all have lots of fields and then you've got paragraphs and you're translating them and taxonomy terms and menus and blocks, you get a page that looks like this. So it's not the best user experience. It's quicker than going in and editing each field individually. But yeah. So menus. There's a few minor gotchas. It's straightforward enough. But it really, it tripped up our clients on numerous occasions. But first of all, on that same big long screen, you can choose to translate your custom menu links. So you choose that and then you can translate the title and the description and when it was last changed if you so wish. That's fine. When you go into your menu configuration, you get a screen like this. So you can see your menu items and then you've got this translate menu at the top. Which it kind of has the same design pattern as when you go to translate a node. It has the translate tab beside it at the top. However, if you go and click on that translate menu, what you're actually doing is translating main navigation and site section links. You're not translating the links within the menu. You actually have to go and click on the drop down button besides each link and click translate on those. The other thing to watch out for, which I alluded to earlier, is straight, you can translate menu links. But there are some things that are the same across all languages. So you'll see in it, I just included, you know, handling all languages and brackets after it. I just didn't notice it at the time. That, you know, enabled all languages and shows expanded all languages and the link all languages. So if you change that, it affects all your translations across the entire site. And what happened with us was they had different solutions. They had solutions for services in their menu. And we, they had different solutions in different regions. What we ended up having to do was cloning the entire menu and translating it again just so we could change the link and remove one solution from the menu. And there isn't a workaround for that. You just have to do it. So just watch that for that. So who here has used paragraphs? Oh, who here has used paragraphs in Drupal 8? Yay! Paragraphs is where translation gets messy. So it's worth taking you back a bit. Okay. So when, I mean, with entity translation, when you translate something from English to Irish or French or whatever, you have the same node ID. And you just have the sort of different aspects, I think. I like to think of it as different views in on the node and just the fields are translated. And that's fine. And that's not just for nodes for entities. So paragraphs are entities in their own right. So the recommendation for paragraphs out of the box is that you don't translate the paragraph field, but you translate the paragraph entity. Yeah. Let me make sure I got that right. So what ends up happening is you have one paragraph with the one paragraph ID with different aspects, just different the fields on it translated, which is fine. Until you actually want to change the paragraphs that you have, and by change the paragraphs, I mean, you want to remove one, or you want to add one, or you just want a different image or something on it. If you need to reorder them in one language over another language, then this isn't working. Does the reordering affects all your language versions? And if you remove one, it removes it from all the languages, not just the one that you're currently translating. Similarly, if you want to add one to the German version of your site, you can't because it's going, uh-uh, you're not allowed to do that. So there is, you need to do localization. You need to translate the paragraph field, not the paragraph entity. However, to do that, you need a patch. Um, and it's not fully stable. Well, actually, the patch works pretty well, and we've been using it for six months. It just doesn't have tests and other, maybe some edge cases aren't out. So I will say use as your own risk, but it has been in production for us for six months, and it's been working perfectly. However, I mentioned that it's important to get translation versus localization right at the beginning of your project, because we didn't. And what happened was we went, okay, right, we need to translate the field, not the paragraph entity. Let's go change our configuration and that long list of things. And once we did that, all of our translations went poof and disappeared, and they all reverted to English. And we had, we were still not in production, which was fine. We were close to production, which was not so fine. And it had two months of content added by the users. So the translations were still there. They were in the database. They just weren't able to be accessed. So we had to do a little bit of hacking and database hacking and fix it. So I really just do it right the first time. It's a worthwhile conversation to have with your client. And we've just, we have actually had this conversation with clients, like in Ireland, public sector bodies, you have to produce your websites in English and Irish, or at least as much Irish as you can get away with, or as little. So, but they're very, very much in the like for light translation, we were just translating the content. We're not changing the menus. We don't have different things in different languages. But what did happen to us, what is that, is fine, majority of cases, they're a bit slow with doing their Irish translations. So when they have a paragraph and stuff in the home page, they want to be able to have different content pulled in as their highlighted, you know, press release or whatever. And you can't do that if you're doing translation. It will default back to the English. And so they actually want the content to diverge simply because they don't have the translation ready yet. And they don't want to display English on the Irish version because that's just a whole political mess. So just straight up, right? Translating configuration then. So modules like the easy breadcrumb module come with strings that you can after configure or sorry, often configured through the user interface. So this was a very simple example. But with the easy breadcrumb module, you can configure the text for the home link. And you can say, you know, that you want to be home or you want to be something else. I don't know why you wouldn't choose home. But anyway, you then need to translate that, though. So this module at the start of the project, we purchased it and contributed it back. It didn't support translation. Well, I'll come back to that in one second. The next slide is when you do click translate. So translate easy breadcrumb tab at the top. When you do click it, you get a page like you would with any other translation thing with the various fields that you can just the ones that can be translated. So it didn't work. It wasn't possible to translate it. So for the module developers or patchers in the room, there's three schema files or three ammo files that you need. The first is the schema, which defines you should have it anyway. It defines what variables or configuration settings you can capture in your module. Only two of them types are translatable text and label. If you use the string type or, you know, field type that there's Boolean and string and reference and text and so on. If you use the stream, it's not translatable. I'm not quite sure the reasoning behind that. But you want to use text or label depending on this, whether it's a text field or a text area. You also, so I did that. And then I also added in my config translation YAML file, which essentially just says, hey, this module has translation or configuration that can be translated. I didn't really know what that did. And I'll come back to it later. It would have saved me a bit of time when it's, it would have saved me time figuring out why the other part doesn't work, which is where I needed the third YAML file, which is the links task. So I had the steamer configured and I had the module saying, hey, I've configuration that can be translated. What I didn't have was a menu task item for the easy breadcrumb module. I could access easy breadcrumb configuration page. It was in the menu, but it didn't have a local task. So that meant it couldn't have a tab. And if it couldn't have a tab, then the config translation couldn't attach itself to its parent and give it a translate tab beside it. But if I had known what the configuration translation YAML file did, I would have spotted that the page was actually there. It was just the tabs were missing. And what it actually does is underneath so administration, configuration, regional language, there is a configuration translation link where you can like the content one that we saw earlier, that was really long. There's another tab or menu item there where you can go in and see what modules have to care that they have configuration to translate and you can just go in there and it's sort of a handy gateway to translating different modules. Any case. So translating views, this is the top of a news view. So it's possible to translate views and interpolate out of the box, which is whoo-hoo. The user interface isn't so great. So maybe I'll just show you what it is like in reality. And this is where I get a quick in my neck, try to look up. So where's the news, news, news and resources? So you translate, where you can go in and edit and then hit the translate tab and then you pick your language. So this is the views configuration. We have, I can't really see it, but you've got the different displays I'm guessing over here. You're right, it really is difficult to see the screen from here. So you have your master display settings. You have those filters you eventually get in here and you can change the search button or apply button. You eventually can click in and you can change the options for page text and the pager. Filters. Yeah. There's a lot of clicking or nested stuff that goes on. If you want to change the text that appears in the menu you can click in the display or not. This one is. Yeah. And then click and somewhere in here, honest, there's a lot of clicking. And somewhere in there you can translate the menu item and so on. And it's great that you can do that but there is a lot of nested clicking into it. So today you have a use expose filter on the taxonomy tags directory or taxonomy term. You actually have to go to structure taxonomy types, find the tags and translate them there and not in the view. Which makes sense when you think about it but it can be a bit confusing. I'm actually doing pretty okay over time. Okay. So as I mentioned earlier at this particular site they wanted the same language in multiple regions. So they wanted it in English, as I say, English North America different from English and Asia Pacific and so on. So just this doesn't come out of the box. So there was a little bit of just custom configuration and a tiny bit of a glue module just to put it together. So we had two languages in the ENUS, ENGB and so on to get all our different languages. Then we had a taxonomy region or for the region. So we had four taxonomy terms being EMEA, Latin America, North America and Asia Pacific. For each one we configured the allowed languages or the enabled languages for that region and the countries in each region. Whatever. Module 2, we ported that to Drupal 8 and so that would detect your IP address with the IP to country module actually. So the IP to country matches your IP address to country database and then the IP language negotiation module determines which country that is and then returns the correct language. And then we also had to have the region and then we also had a small little module that added a block to make the taxonomy region term into a drop down that when you changed it would automatically submit and change the user's language. So this is the taxonomy term. So the first language drop down is actually the language of the vocabulary. So you can translate every language if you so wished. And then the second language drop down is actually the default language for the region. So if it can't figure it out but it knows you're coming from Europe, then you're going to get this language. Then we use there's a language field module which gave us a nice sort of multi-value field where we can select and enable the very, very long list of checkboxes for countries and you just have to go in one by one and check, check, check, check. We combine that then with just a blue module to strip out the you saw in our languages and you can see there actually it's English EMEA and English North America and stuff. When you're showing that to the client or to the user on the site you don't want to show them the region in the language name. And we have a two drop-downs at the top with the page, one for region actually can I briefly though there just make it easier. Where's my mouse? Oh, there it is. So you have your region drop down and language drop down that's enabled. So North America just has English and Spanish and if I go to Europe then it loads the page and there's only three enabled here. I'm not quite sure what happened. Oh, I'm in Latin America. So where was I going with that? So that was one it's for desktop this is how it works. So when you choose your region it will submit the form, print it out the new language and return the site and the localised local language and it will also then if you're on mobile that isn't necessarily a great user experience to take thing and wanting to go to change the other drop-down. So we have a different workflow for that with an actual submit button. So some useful information and this is really where there are a touch on all the pain points that we had. So in Drupal 8 I'm not sure if you can see what's going on around but it's fast-chaining I think. But basically your configuration all your configuration which is your the configuration structure of your content types and your configuration screens and how you can configure this and that. All of that is stored in is cached to make the site faster when it's on the hosting company that we were using which is well well-known Drupal hosting company was set quite low and the reason that was fine if you just had one language but the thing is when you have a multilingual site save two you're translating from English and German say you would now have doubled the amount of configuration. If you then add on French you've got three times the amount of configuration. The storage and cache and we hit the limits and the site was getting slower and slower until eventually it just cracked out and started giving us errors. But at least once we had errors we kind of knew what was wrong. So we switched to memcache back end which unfortunately doesn't support PHP 7 so I think we switched back to a database so we can use PHP 7. So if you're paragraph figure it out right first whether you're using translation or localization because if you get it wrong and you have to switch later on you're going to lose your translations. There's still been the database but the users won't see them and it takes a lot of messing around in the database and in the code to try and rebuild the links afterwards. So have the conversation with your client . So we had the client entering all the translations we weren't going to do that for the hundreds of pages that they had and the 13 languages and a lot of it was copy and paste because for launch English North America was actually the same as English Europe. But I missed on this point earlier. When you configure your language negotiation can I go back to it? Right back to the start. At the bottom there's content language detection and the top is interface text language detection and by default the first one is only checked but you can check that checkbox at the bottom which allows you to have a different language for your content and a different language for what you see as an editor. However it didn't work for us and there is a patch which stopped working for us. It worked for a while but then it broke media somehow. So we were not using it and we weren't using it at the time because the patch wasn't ready. So that meant that our editors had to our editors were working on it and so on. So one of them decided that let's just turn on doodle translate and that would get around the problem for me. What happened and what really surprised me was doodle translate decided to translate the content in the fields. Not all of them, just some of them depending on how fast it loaded or did it but it would actually translate the content in the fields and so they would go to us because we had this issue with paragraphs and we had to switch from translation to localization we lost all the English or we've lost all our translation it's reverting to English. So she did it for doodle translate turned on doodle translate and then it was like we're reverting to English again randomly but mainly only for Russian. Turns out I couldn't figure it out so I didn't know that it was just Chrome trying to be helpful. Would you like to translate this page and she clicked yes. That's what caused that issue. Cache and redirects was also an issue. So if you go to the naked domain without the slash en and this is how we've set it up that you need to go to slash en for the default language as well like it doesn't work. It needs to do it detect what language doing the language negotiation and then it should redirect you to the correct thing without the user actually ever seen it. But what was happening was that the redirect was being cached. So I would come along in English North America I would get redirected to that language and then somebody else in the other language was cached. Now we got around it I think by installing a patch. Part of the patch was also to change the type of redirect. So there was a version of the patch and it was still not fully working right. So we patched it again to change it from a permanent redirect to a temporary redirect and the reason for that was varnish was caching it for 15 minutes even though the Drupal configuration was said don't cache these sorts of redirects at all the varnish set up on the server for the hosting company was ignoring the Drupal settings what Drupal was saying and was actually caching it for 15 minutes and there was no way we could change that the hosting company couldn't do that for us because it would affect more than just us. So we figured well actually we could change that. The other thing to watch out for if building a multilingual site is your SEO. So they're my favorite XML site map module for Drupal 7 doesn't actually support multilingual at least not in Drupal 8 there's another one called simple site map. So there are language or there's certain types that you need to have in your XML site map to say well there's a lot of content in other languages. Similarly you should have a link tag at the top of your HTML in the head with the href line and there's a module for that as well which I'll give the link to later so it just says here are the alternative language versions and particularly when you're doing localized content in regions or it is kind of the same it helps minimize the duplicate content SEO penalty that you might otherwise get. So the most obvious cases are say you have English, German and Russian or no, English, German and Chinese. So you design your site, the designer is looking in English, everything's beautiful, you put in German text, suddenly your boxes have words that are this long and it's overflowing and you need to account at the design stage how you're going to handle how do you figure where to put the correct hyphen if you're doing that and then Chinese is the opposite the long words become really short. Those are only three characters or four characters so your design just has to be flexible enough to handle all of that. So here are some of the modules you might want to consider so the href line just adds in the links to the top of the page, it's very simple, it's simple like some of the language stuff in that pretty well. We use the language switcher drop-down because with 13 languages or even when you cut it down to just your region, there's five or six, I think it's the most in one, you don't want the links which is the standard out of the box with Drupal core. If you're doing localization then you need the IP language and localization stuff, probably with a patch on the list on the next page and then the application management tool and so if you're we're not using it but if we are using the module but we're not using it for its main purpose I think which is to allow you to hook up with external translation companies who provide integration and you can submit content to be translated to them, they translate it and then they submit it back and I don't mean an automatic translation like that but actual manual translators would use their own system and then submit and it would end up in a draft or ready for review on your site but the reason even though we're not using that feature the reason that we install it is and when you do install it you get a you get a translation drop-down and your jobs are the things you can send to external translators you also get this nice sources page so you have your list of nodes or yeah well it's content so nodes in this case and the list of languages now probably need to go on to the next page because this is just a dev site so you get a little green tick box if it's been translated into that language and you get an X if it hasn't and there's a little legend at the bottom like there's needs review and in progress and other stuff and it's if the translation is outdated if the source has been edited modified you can configure it to market all the other translations it's needing updating so it's just nice when you're dealing with this number of languages and this number of pages it's a very useful report so the patches that we used so the first one was to fix the content versus interface language negotiation we couldn't quite get it worked for a while and then some update happened and it worked but it didn't work with it stopped loading stopped working or something I can't quite remember and then the second one is for the preventing it to cache the redirect to the correct language there is the patch which is still in the needs work thing for paragraphs to support localization it has worked successfully for us for six months now it is missing tests if you want to contribute on code sprint day that's a good use of time and then we also had issues with the entity browser which we added on later on it couldn't pick up the media items we were referencing in the correct language so the old text was in English even though it should have been in French but there's a patch and that works perfectly there's great documentation with that link and all the slides will be going up on the line afterwards so you don't have to jot all these down I'm just going to wrap up but basically there is a code sprint well no not just code sprint contribution sprint so you don't have to be a coder you can be a designer or write documentation or just help manage people and get them working on something together so please do come along on Friday and please rate the session and questions for the questions if you could use the microphone in the middle of the room when you were translating you were in the views UI as long as the view the strings have been triggered somewhere you can get to them as well through the translation UI where you just fill in the word and you get the list of all occurrences of the word and that allows you to not have to navigate and click open everything does that work for the menu items too? should it shows everything that's translatable that's actually handled using string translation we're also translating the links so the path bit would also translate so I have a question about all the paragraphs you could extend for the options to extend it all in all or you really clicked everything to open the paragraph to extend them I'm not quite sure I understand the question so you have the menus to extend them and you extend the menu and when you click on paragraphs it's just another entity it's just some tool to extend it automatically it does it out of the box so you just click on the paragraph and then things appear quite some job thanks for the presentation I had two questions regarding this translation mechanism the first one is for the translation of files because in 777 you couldn't really translate file entities you could translate the title and different other fields that were attached to the file but you couldn't say that my PDFA was a translation of PDFB and is this now addressed or going to be addressed somewhere in this Drupal 8 truck I'm not quite sure we didn't deal with PDFs in this site it was images and they didn't have text in the images so files are entities in Drupal 8 so it should work you should be able to translate the image you should be able to say that for this translation you can upload a different thing to replace it so I think it should work but don't hold me to that it's not something I've tried then my second question is ok we have fieldable entities which are translatable by field and what about the publication workflow is now possible are you trying to have a publication workflow per language or is it always for the entire node we didn't do it in this site but we have done another one since on a simpler site and you were able to lock it down I think we were using the workflow module rather than workbench but I can find out for you if you want I wasn't involved in that one but it was possible for them to have a certain language and not to revert all languages at once for example yeah I don't think you had to do that but I can check that for you ok thank you how do you handle and manage the interface translations do you are using products to export languages and create PO files so when you say which translations are you talking about the system strings the system strings are not configuration they are stored in the database you can export them as a .po file and upload them to localize.drupal.org if you want to contribute them back but yeah you don't have any experience with POTX POTX it's a the POTX or whatever yeah so you can download those from localize.drupal.org if you're not storing them we don't want to store them maybe we are but we don't keep them up to date because once we've got the P strings we don't really go back we contribute back if we can if they're for contributed module or core but we don't maintain the PO files does that answer your question yeah with XML do you generate all the versions for other language do you actually submit to the Google so the simple XML site map or simple site map it doesn't do the auto submit so XML site map is nice in that you could resubmit your content every day I don't think it does that so you can manually log into Google Webmaster tools or Bing tools and you just have to do it once because it links to the other ones so you don't have to do it for every language and does it help in terms of localization if you submit into Google Webmaster it doesn't hurt I think it helps because it knows that there's more versions of the same page in different languages and there's more things to crawl because I'm not quite sure what way XML site map does it which is there is a risk of duplicate content penalty yeah I think it helps it's not going to hurt thanks for the presentation maybe you don't use the Webform module but that has a very handy interface for translation where you can translate in the graphic user interface translate it but have you come across similar interface for other translation no and I have seen that one for Webform but no I haven't seen anything else thank you how do you translate view paths how do I translate view paths so in that view configuration or translation if you click far enough in it the other thing you can do is set up an alias so you can set up an alias for your language and just say slash news is slash new act in Irish and you just say for Irish version redirect to this URL or set up an alias it works if there's no other questions we'll leave it there thank you if you want to come to Drupal Camp Dublin over 20th and 21st