 Hello. Welcome to our case study presentation. It is about building multilingual and multi-domain Drupal websites, and we will present the case study of Sonova together with the client, which is here. Maybe, first of all, a question. Who has already built a multilingual website in Drupal 7? Oh, yeah. Lots of experts in the room. That's great. And who has built a multi-domain website with different content and different domains? All right. Okay. So, we all went through the same thing. That's great. So, I hope also to have some exciting discussions afterwards. I think everyone has his best practices, and this is our goal today. We will share our best practices. So, yeah, this is what we present today. First of all, who we are, then how we met with Sonova, and then shortly talk about the technical setup. Afterwards, we will dive deep into domains and languages, translations. Then we will talk about the limitations. You should know if you built a site like that. And then talk about the methodology, how we work together, and conclude the topic. So, yeah, first of all, who are we? My name is Dagmar Muth. I'm a lead project at AMAZEL Labs, and my tutor handle is Dagmita, and I was, yeah, leading the project from the beginning on. And here with me is our client from Sonova. Hi. My name is Nicholas, and I'm corporate brand manager at Sonova. Now, this introduction will probably raise more questions than it answers, because what is the corporate branding manager doing here when it's about web and Drupal, and what is Sonova? But more about that, talking about how we met. Who is Sonova? Sonova is the leading hearing health care provider in the world with different brands on the market. The most well-known is in the hearing aid segment and this Phonak, but we also have different brands, Unitron, and also for cognitive implants for people who really don't hear well. We have AB, and they're also present in the retail market where we sell hearing aids directly to customers. Now, everything, just a side note, all the companies, basically, they try to get people to hear better. For me, personally, it's really important because I have severe hearing loss, so without those tools, I couldn't be here today, and I enjoy being here today with you. But altogether, Sonova has sales of approximately 2 billion, more than 9,500 employees worldwide and present in more than 90 countries. Now, the brands you have seen have mostly been acquired and grossed, have been added to the company, so it's more of a conglomerate at this point still. And there's more and more centralized functions coming into being. And also, among the employees, we want to create this shared vision of what we actually all do, and it doesn't matter which brand one works on. And this is the decision that was made approximately 2 years ago when management said we need a corporate brand to come to life. And this is basically also the first project, Milestone, because that's where I, as a brand manager, came into the game, because the first thing I would do, I would look at the website, which is the main touch point from a branding perspective, most visitors, etc. And to be honest, Sonova was just an investor brand. It didn't really look good. So the impression one got was not that nice. So, in the end, it was more from, that's why we did it from branding is because we started the project, we said we needed new and better. So, we contacted AMACI early in 2013 and had the project kickoff end of February. And the idea was to, in the first phase, to have to set up new, kind of, from a visual perspective, from a technical perspective. But lots of content actually was just migrated. But what we had as a, from regulatory, for regulatory reasons, at the stock market, we needed to integrate also very delicate third party systems, with automated live publishing, because if something goes wrong there, you can have penalties that cost millions. So it was a very short timeframe to get all this done until May 21st, because May 21st, and Sonova still is an investor brand, is one of the most important days for investors, it's the publication of the full year results. And it was tough. It cost some weekends on my side and AMACI's side as well to get it done. But we're happy, really happy to have it in place until then. It was a huge milestone. Later on this year, we are looking at the international rollout of the brand. So, Brazil came out as one of the first markets where we want to also foster this Sonova spirit. And we of course need a different language, different domains. So, for me, as a brand manager, as a web manager, this is how the site looks. It looks great, I think. But anyway, it helps transport those values that we want to stand for. It helps get the message across that we like to. And Dagmar is going to tell you a little bit more technical. Yeah, so as you see here, the site is fully responsive. It is built with Drupal 7 and the Omega 4 theme. We use Sars and Compass from scratch. We don't like to use tools like Bootstrap because they don't allow us to be really flexible in the design we provide. We would like to be flexible in the grid we use, et cetera. Yeah, then we are using a few in combinations with panels, panels everywhere, and penalizer. There's also out of flexibility reasons. If we penalize nodes, we are able to add blocks on those and have a little bit more of a flexible... We can show flexibly different types of content on pages. Yeah, then there's also a search on this site where we use Apache Solar as a search server. And as Nico already said, there are lots of third-party integrations. And we have integrated them via either via XML or via iFrame. And the companies we have integrated with as investors and tensets. Some of you might use it if you're from a stock listed company. And we have to be really reliable with the website. As Nico already said, it's really important that information is displayed correctly within seconds on the website. So that's why we are hosting at our hosting partner. We have a server cluster there that is dedicated and has a setup for Drupal that we need. And the servers are in Switzerland. That's maybe a special thing also for us. A lot of our clients don't like to host abroad. They would like to keep their data in Switzerland. I don't know if you know they have these mountains where they dig a hole in there and keep the data in there. This is still the thinking. Our servers are not there, but still in Switzerland. So this is all about the basics. Now let's dive in, domains and languages. And first of all, Nico will tell you what requirements he has. As I already said, we had a project in different phases also due to time constraints. In the first phase it was just German because it was Swiss company and English because we're an international company, of course. It was one main global domain. Well, as we are rolling out this employer brand worldwide, we are looking at different countries where we need to have the content available. So Brazil is one of the first countries that came up with own content in Portuguese. And for me, I'm a really lazy guy. So I came to him to amazing and said, I need to have a way to get a hold on things and have people kind of work in structures where I can allow them only to do certain things and to control actually what kind of content is there out in the world because in branding it's all about consistency of information and of looks. So I want limited rights for country managers and country editors but also the possibility to allow them to do certain stuff so I don't have to. And also what's a requirement from my side, from a business perspective is I want to be able to multiply this thing across countries. Next time something pops up, I want this to work for the future. So Dogma is going to tell you how they solved it. Okay, it's going to be a big table and you have to have some energy to digest that. So yeah, first of all, as Nico said, they wanted to have several domains with different content and different rights. So the first thing you do is you build up domains and you use the domain access module for that. And in the case here, we have set up a global domain, a Brazilian domain and a Portuguese domain. If you check on the website, not everything is enabled that we're talking here so that's not bugs but it's just not yet implemented. So what you would like to use is subdomains because in this case there are still a lot of overlap in the design and also in the content we display. So you would not want to have different databases or have a multi-site for that kind of things. If you would implement a multi-site and you would like to change one little thing somewhere overall over your whole set of pages, then you would have to do the change on every instance. So we have taken over websites from clients that were multi-sites and we are now building them back into different domains. Yeah, then as a next step, you would like to have languages, of course. And first of all, if you add languages, you might use a domain local tool module because this helps you to solve a lot of cases with domains and languages, for example, redirects. I think that is kind of an operator. Then there's this big topic of languages. In this case we wanted to have a German and an English for the global domain and we wanted to have for in Brazil English as well and Portuguese as a new language and then in Portugal only Portuguese. Yeah, so what we could do is we could just have three languages, right? German, Portuguese and English. But we decided to split up English and have two different English languages. So one for the global domain and one for the Brazilian domain because what you don't want that your Brazilian content editor editing your global content, you would like them to have different, I would say, ecosystems that they have rights to only their content and that they have their area and that's why we have two languages. But that would also mean that you would have to translate everything again. Like you have English for global but you would like to add another English and that would mean translating everything again and you don't have to, that's a good news. You can use the language fallback module and that works like you use the current language that you already have like in this case it was the global English was already there and then you add the English and Brazilian and say this English Brazil will fall back on English global. So if you start off without any translations it shows you everything from the global domain, all the content from the global domain and then that means you have to just translate what you would like to have additionally and what you would like to have different and that is really a handy solution. So next steps you would do something like domain variants. What is that? So this has to do with SEO. If you set up domains you have to set up like with points like sonova.com.br like real subdomains or sonova.com.pt and Google then decides if they handle these subdomains as two different websites or if they combine them but this is not in your control. So what could happen is that Google decides that they separate these two and then your domain authority would split up between these two subdomains and your ranking thus would be lower. So what you would like to do is you would like to keep the control you would like to bring them under one domain and this is why we have come up with the domain variants module and that allows you to change the URL of the subdomains. So how we change it? If we have the sonova.br domain for example sonova.com.br and we change it and say no you are now sonova.com.bresil.ptbr or bresil.enbr and then you have one domain and it falls all under this. So next point is menu. Okay so I have already talked a little bit about permissions and you would like to base your permissions or you would like to create this ecosystem for these people that are working per domains most of the time like there's one person that is responsible for bresil, one for Portugal, one for global and you would also like to have the flexibility to add different workflows depending on the domains. Nico pointed it out. Some affiliates are stronger and have more independence so they have the possibility to edit content more flexibly and others they are more dependent on the headquarters and you don't allow them to do everything. So that's why you want to take this away and in terms of the menus it means that we have created three different menus like one menu per domain. So that means we have now a global menu and there are the two languages German and English in there and bresil there are the other two languages German and Portugal has the other one. So yeah and here we have also created a module for that it's the domain menu added access. Also sometimes if you have translatable menus they get really really long like you have in one menu you have different languages and if you would have these five languages in your menus I guess you know it's getting hardly manageable especially if you have two times the same language totally total chaos. Right so I have basically already presented that point so maybe I just would like to add about the different permissions. So at Snow White it was important that the Brazilian country managers can't create their own notes. They should only be able to edit existing content and if you have everything nicely separated you can add a different role for the Brazilian country manager. And on the global domain of course the country manager can do everything so that allows you to have different workflows. Then we are almost finished then your users come to the site and you would like to route them to the correct domain and there are two ways how users come to the site the one is they type in something they add a search engine and most of the time they would use Google or they go directly to your website by entering Sonova.com So we have created also a module for that it's the GEO Redirect module and here you can say from which GEO IP should lead to which domain so for example you can tell them Switzerland and Austria should go to the global domain and Brazil and Argentina to the Brazilian domain etc. Then last when you search via Google so in the Google webmaster tools you can set the Google country target and this makes the user come or that tells Google hey if people are in this domain point them to that or if they come from this country point them to this domain and this is what you do after the slashes so a slash global will lead to Switzerland and slash Brazil to Brazil slash Brazil with a set to Brazil and so on so this is also a nice way to tell Google what to do and this is all already and now we go on to translations and as well Niko had very special requirements not sure whether they are so special but we had them of course in the first phase it was only two languages German and English and as I said we migrated most content so content was at hand was mainly copy and paste to get it all in now in the second phase with more and more websites coming up internationally we will have an increase in translations from outsourced agencies for example or also from other people in other countries in our company we don't have one translation agency the whole company works with but it's very diversified how this works also we needed a process to be able to have other people handle this because languages are not spoken at headquarters and I cannot ask my friend next to it can you translate this and again here from this I say Hassel before from copying, pasting to word files and not only the body text but to enter different fields into a word file etc and describe it for a translator to really get this easier and to become faster and more efficient also for the future so Dagmar okay so for translations of course we use field translations with entity translation module this is the way to go also for Drupal 8 and for the translation process we use the translation management tool the TMGMT and this helps you to do all the translations within Drupal you don't have to leave the site you can stay on Drupal no copy and pasting from word files and I think this is a big gain already so I quickly run through the translation process to just give you an insight in a very standard process so first of all I have created a note and it's called Hello Amsterdam I would like to translate it into Portuguese I can do that by checking the box on the left and clicking on request a translation maybe I would like to not only send this note to the translation but send over a whole bunch of notes to the translator and it's better to have that whole bunch into one job because I don't want to send his give him like 10 notifications in his inbox so that's what you can do with the up to card functionality you can add different notes into a card and then bundle them together into one job yeah then we're on the next screen and then we can control again if we have set the right languages we decided we want to translate it from English to Portuguese that's correct and then we would like to choose who is our translator and this is the Brazilian translator and then we're going to send it out now we're going to put ourselves in the shoes of a translator and the translator has just gotten a mail there's a new job and here we go he sees the translations in his inbox he can only see this screen and these functionalities on this page in Drupal he cannot see or you can configure it that way that they can only translate and not edit other content or delete anything so there's a pending job hello Amsterdam and this has to be translated now so I go on to view and see here this interface so on the left side is the original language and on the right side you have to paste the new language yeah so this is what I'm doing now and here you see I have now done my translations they're added what you have to do is you have to copy the HTML tags yeah most of the translators are familiar with it so most of the time it works but it's still a potential source of error of course yeah then I've done all my translations then I click save as completed and now I'm done as a translator I'm finished and now we're going to get ourselves back in the shoes of Niko for example and he sees he gets a mail and he would click on the mail and get to the job or he sees it in the overview that hello Amsterdam is still there and he can manage it so here you see the job is now this note is now ready to be reviewed I'm not yet live I still need to do one more step to review it and yeah I do my review and you see it here it's all in there it all looks good so I'm fine I'm gonna hit save as completed and from this point on it will be on Drupal so confirmation and that's done so and then you see it's approved and finished and yeah this is a very this is a very like the simple process on how to do translations and 80% of our clients are actually are actually fine with this process but there are also other cases that you would like to cover for example if you work with an external translation agency they don't want to log into each client's Drupal website to do their translations there they have their own systems they have their vocabularies there they have synonyms they have their time tracking or word tracking etc so they would like to stay there this is also possible with the TMGMT and there are two different solutions like the one solution is you can create a job and export this job as an XLIF file and XLIF is kind of a XML format and this is a standard for all translation agencies so their systems comply with that standard and it works most of the time we had little minor problems with UTF-8 letters etc but it is manageable so then you send this XLIF file over to your agency they import it into their system and when they are done they export it again as XLIF and you integrate it into your site it can be a bit of a manual effort you have to do of course exporting giving it back importing again which jobs have I sent which jobs have I imported yeah it needs a bit of a coordination so that's why there's an even better solution the best solution is that you connect a translation agency via an API and then the systems talk directly and via this interface you can not only send over jobs but you get also additional information back from the agency and this is for example different price plans so you send out translations and they say hey so how long should it take to give you the translation back do you like to have it in 6 hours or in 48 hours and depending on that the price is different and then you can choose your plan it would cost because they know how much words are in this file and you can manage your cost and say ok that's fine for me go for it and then after some time or after they finish they send it back via Drupal and you go through the same review and approval process from our experience it takes around 304 days I guess to set up such an interface to a Drupal agency and then they can reuse it for every Drupal site this was it for translations now we will talk about limitations and who could do that better than the user now first of all it has really helped us to become more efficient the whole setup that we have now and I believe it to be scalable to a certain point where we are comfortable with it as a company and also to have the speed to be able to do that just some limitations that I haven't encountered from a client perspective is for me as a page admin the overall complexity has become has increased kind of now I have different menus for different countries but that's just something that comes hand in hand and I guess that's just something that also kind of makes sense that will be that way with regards to usability of TMT this is something where I really like to see for the improvement in the future because as you have seen the screenshots the user experience kind of often makes me have to grab the telephone and call the person doing it for the first time and explain to them what do they actually have to do in that step once they are settled with it it works fine but it just takes some learning to get them other than that anyway some other things that I would like to see improvement is workflow options review process until now I can only accept it or reject the translation once I accept it it's live on the website now for example if I had Chinese or whatever I don't speak Chinese currently I do not have the option to send it to a colleague in China and to have him review it for me it would also be nice to be able to see the translation in the site layout in the HTML code because as Dagmar said sometimes you have to copy the HTML tags etc and there's just mistakes that happen sometimes but that's just something you can review at that point now one of my favorite topics when talking about limitations is translation of strings and I'm sure that my girlfriend found a couple of great hair lately and I'm sure that's due to the translation of strings from the right point of view I had to get a handle on that and I still become better etc but I get everyone messages at some point that have not been translated or people finding them because there's just not an overview that I can send everything that I've translated to the translator so that won't happen but Dagmar you mentioned something that it's over we have created a tool which is called TMGMT bulk where you can find strings you can filter for strings that you haven't translated yet so I think that will help a lot we're still testing it but I have hope this will be better definitely looking forward to that also in that in the translation of strings which what makes it hard for me is sometimes for example I will have to translate the word back now if you don't have a context as a translator he's either going to say back or back and when it's entered it just won't fit the context at some times so basically it has helped us a lot the implementation of this me I truly believe that for Drupal to become even more attractive for international clients I personally believe there's no such thing as local brands etc in this world anymore this process would be a huge improvement for clients to be able to handle this and from my perspective I'd be happy if anyone in here would contribute to that cost any developers in the room I know there's one we will grab him yeah it's all from your side right? from the good yeah we now would like to talk about how we work together efficiently and good so I would like to start with saying something about the methodology we are using at Zonova most of the projects are done with fixed price offers because internally they have a specific budget for a certain time and certain projects but we can still work in an HRY like that if the budget is fixed you still have two other things that are open like time and scope and we don't do we don't do very detailed specifications at the beginning when we estimate we do very rough specifications and we try to ask the most important questions to make certain assumptions and as we have worked together for some time we kind of know which level of assumptions we should guess and I always tell the analogy of building a house you can build a house and you can put in a carpet or you can put in a very nice wooden floor it's both a house but you don't know what kind of level your client would like to have and this is where we have our flexibility carpet or wooden floor and this is where we take our assumptions and then within the project we discuss these assumptions and and most of the time we can come to an agreement like if the assumption if our cost assumption was too low before we implement we give options so we say hey we thought we would do it like this and if we do it like this we would stay in our budget but if you would like to have it this fancy way it costs you such and such amount of money more which way do you like to have and I think giving choices is always a very very good solution and then another thing is that we see Nico as a client, as a product owner of his product we have a direct contact to developers and designers we don't want to add absolutely a layer of project management I take myself out as soon as I can because I have so many projects and it would not be very efficient so that's why he has direct contact if this is appropriate if he doesn't need more consulting he will talk directly to these people then another principle we are following our work is to be very transparent he sees all our project artifacts and systems at any time like access to the development environment also access to time tracking he sees at any time how much of the time budget is already used and also we don't create specific documentation for different kinds of stakeholders we have one specification and this is for the techies and this is for the client and we communicate with the same tools we don't have emails for the client and ticketing tool for internally we all keep it the same so that we work in a very efficient way now Nico will tell us how he feels about it are you sure first off I won't be here if collaboration was not good it was amazing and as we have seen the project milestones that we have reached have been accomplished in a good way and just what she was saying about trust as a prerequisite we can be agile and fast if I know that she knows I like wooden floor better than carpets so when she sends me an offer she won't send it for the carpet and then I want the wooden floor that grows over time other things that we have learned in collaboration made our collaboration better is that well first thing in the project was changed to dog mark and she had a really tough time due to that because I came up with a project we had to postpone the launch for several times then you get to know someone project management has changed it's just a side note other things is with multiple contacts which is great so I don't have to talk to dog mark she talks to Miki she may misunderstand me and he misunderstands her so it's all more complicated than it has to be it's easier if we can talk directly that requires agency internally great communication because at times I would discuss something with Dr. Miki and dog mark it happened that she didn't know about it and as a client I don't want to have anything to do with that if I talk to someone I want everyone to be up to speed the next time I call just to have that going now as often problems strengthen the relationship if they are brought up and they are discussed and they are used to become better as one team so to say because I'd say it's not the classical relationship that I would have with other other agencies where we have dog mark there, me here talking to each other but it's more of a real collaboration that makes us so efficient and that makes me also happy to be here it was amazing today to talk to you to share the collaboration tools from my point of view in the beginning were real hassle because like my tools and the way I work so it took some convincing to get me to use them and also how to use them because in the beginning I would only make one ticket with all the things I would find on the website and dog mark would be like what's wrong with you and now we've handled that I've become better so we all have almost no emails and just call and have everything always available to everyone involved in the specific project something other just from a project management point of view that we have started to have debriefings after critical project milestones because obviously as always with technical stuff it does not always work as you want it at that point and so we have started to have those debriefings that help us together grow to improve the processes to become even better in the future so it's been fun with Amazie and with Drupal and I'm looking forward to where it's going thanks a lot one more slide stop just a little conclusion building multilingual on my website is not trivial it needs some thinking I think also the requirements side is very complicated it's really the whole processes we have to map out but we think we have done a lot of experiences with it and I think if you maybe I hope some of the tips we gave and some of the modules we pointed out can help you to build your website in a good way in terms of translations I think the TMGMC works fine it fulfills the requirement it can still be improved and I think it will we have a great team behind it and we have just to keep up also with Drupal 8 that we don't get like slowed down by this and the third one is as Nico pointed out to build up trust building up trust is very important and to build up trust it requires open and honest communication if there is something like if there is a little fire burning somewhere if there is a little problem and you don't talk about it, at some point it will come up and it will come up with three or four problems at the same time and then you have a conflict so as soon as you feel something is not right be courageous and talk to the other person and talk to the other person in person or on the phone and not writing emails back and forth so this is all thanks a lot for listening and now we are open for questions are there any questions please use a microphone if you have some yeah could you yeah okay I can repeat it so how we worked with relationships between content for translations relationships in what sense in both of the sections there are texts and if it is the same text you should also build your site that it takes only it prints only the text once, like you would maybe have a blog that is common on these two pages and then you have only one blog you have to translate but I don't know if you mean we can put things together to keep the relation this is currently not possible yeah any other questions my name is Weber and I'm a known on the community as Mac Weber I'm one of the main things of Domain Locale by the way and I've worked in a product that is very similar to this one but one thing that you said about the contextual translations one thing that you can do at least for the interface is having your own server for the localizer Drupal.org you can have your own server and do that contextual translations on the strings it's not a question actually it's just a suggestion but one thing that I did not do is that things about getting the countries on the same domain it's a really good point you got on this product okay thanks okay yeah Gabor uh oh so hi good session so I think the usability of TMGMT is a returning question is there anybody else who works with TMGMT and has the same problem one two okay so it's probably more who are not here so I think if I don't have the energy but I think if somebody would like put up a flag and organize a group of people then we can get get some UX resources involved in making that happen because it's certainly a shared problem that I don't think anybody any company individually would solve yeah that's an excellent idea we should be able to solve that yeah I'm still here on Friday I don't have yet a really specific project I'm working on thanks for taking that on bye