LATEST FROM OUR BLOG

Take your daily dose of (only) relevant news, useful tips and tricks and valuable how to's on using the latest web technologies shaping the digital landscape. We're here to do all the necessary information sifting for you, so you don't have to, to provide you with content that will help you anticipate the emerging trends about to influence the web.

Turn Raw Data Into Alluring Content for Your Company Blog
Tell your stories with... numbers! Craft data-focused content to keep your company blog's readers “hooked”! And no, it's no “utopia”: you can turn raw data into alluring content. It all depends on whether you manage to masterfully “exploit” it, on how you harness it! Speaking of it, here are 4 avenues to “spice” up your data and turn it into blog content that resonates with your readers and captivates:   1. Relate Your Data to Your Target Audience Serving your readers nothing but a big chunk of “raw” data will only get them an instant... “indigestion”! Not even 1% of them will go all the way to the end of your blog post. And why should they? Data is “machine talk”, not human talk! In other words: you'll need to dig deep though your “raw” data and select the “relatable” one only! The one that will your readers will instantly resonate with.  So, before you go on and dig deep into your heavy load of data, how about trying to set up a couple of criteria that you could select and group them by? These can be:   geographical economical social cultural criteria   More often than not, it's the geographical criterion that prevails. And, in this respect, it's precisely those “enviable” data-driven pieces of content that already earned lots of traffic that make the best examples! And how do you get to craft your own geographical data-based piece of content that will act like a magnet for your readers/potential customers? Here are 2 handy approaches for you to adopt: harness your Google Adwords data and craft a blog post that all your potential customers, living in different regions of your country, could easily relate to   use the Google Keyword Planner and target the city of your company's headquarters and, based on the generated data, run a comparison to other cities in your country It's a proven fact: once they'll see their city's, their state's or their country's names listed in your blog post, included in a comparison with other cities, states and countries, your readers will instinctively grow curious about your data-focused content! We're all emotionally connected to a certain location on this globe and whenever we read/hear its name, an inner bell rings! And it's the same thing with all the other aforementioned criteria that sets us apart and define us (the cultural, biological, economical ones and so on).   2. Show Off Your First Party Data You're sitting on a “gold mine”, no doubt about that!  That's right, you have huge first party data resources that you could show off to your readers in the form of enticing pieces of content! They're right there, at your fingertips! You just need to "strategically exploit" it, to turn raw data into alluring content. And no, there's no such thing as “I do not have an impressive user data or unique data-generating sources to go to. I haven't piled up any data that my readers could possibly be fascinated with”. Dig deeper! Any online business owner has at least an active Google Analytics account. See? There's a start! Now keep digging! When it comes to making that “raw” data fascinating, that's:   part knowing precisely what data to hand pick (the one that your readers would resonate with, remember?) part placing it in the right context   That's all! And speaking of sources of first party data, here are 3 unique data generators that our team here, at our web development agency in Toronto, recommends to you:   Google Analytics, Google Adwords, Search Console data: they all contain unique, valuable user data that only you and your team have access to. Tap into these great resources of data, run your selection, add a sparkle of creativity, too, and turn it into the perfect “fuel” for that future viral post on your company blog!    survey data: can't underestimate the power of user surveys! Leverage the collected results by turning them into interesting insights. For example, how about correlating personality-related answers with the type of products that your questioned customers usually shop on your e-commerce store? Wouldn't this personality traits-shopping preferences association make an attention-grabbing type of content for your readers?   sales data: here's another insufficiently exploited “data gold mine”! Turn into interesting content that data revealing to you during which season(s) of the year or at what hours of the day your sales are at their highest. Are there certain events (holiday?) that this “peak” coincides with! Extra tip: use Google Correlate, such a handy tool that will point out to you exactly which keywords are relevant precisely to that sales data that you will have collected!   Take it from there: turn raw data into alluring content!   3. Do Share Your Data Set An avenue that so many ignore! Don't be one of them! Be smarter than that majority of webmasters/online business owners and, once you've crafted that data-driven piece of content that's going to “write history” on the web, remember to add your data set, too. You never know when a big player in your market (and not just in your market, it could by an authority in any other related industry; take a news publication for instance) picks it up and uses it, turning it into a valuable links generator for you!   4. Add the Surprise Factor: A Sure Way to Turn Raw Data Into Alluring Content  Isn't this a hard nut to crack? How could you intrigue and, even so more, “fascinate” your readers with... numbers? With data? You get creative and spice those numbers a bit, that's how! Here's a tried “recipe” that you could follow for crafting intriguing content out of numbers:   you “frame it” in a rightly chosen context, one that will shade a new light on your data, making it stand out   you provide an unexpected perspective (an historical perspective, for instance)   you use comparison: nothing adds more meaning to “raw” data, nothing makes it more “intriguing” than getting it compared to other periods of time, to other locations where your products might have been used or other age groups of customers that might have bought one of your items etc.   Contextualize it and compare it! This is the (not so) secret “recipe” to follow whenever you want to turn raw data into alluring content! Wrapping up:   harness precisely that data that relates to your target readers/customers (so, don't start digging through your whole data resource without this selection criterion in mind!)   put your numbers in a context    come up with comparisons that will add intriguing perspectives to your provided data    Now go ahead and turn raw data into alluring content for your company blog, removing “writer's block” from your vocabulary for good! ... Read more
Adrian Ababei / Jul 14'2017
Designing Your First Conversational Interface? 5 UX Principles to Apply!
“Riding the waves or caught in the tide?” Do you simply comply with whatever is hot in digital product graphic design at the moment or do you dare to go beyond just following the trend of designing a conversational interface and turn it into an experience instead? A natural, authentic, “human-like” one! If you've chosen the first option, then you can remorselessly go back to doing what you were doing and spare the time you would invest in reading this post. But if you're determined to go beyond the very basics of conversational UI design and to strive and “humanize” the experiences that you deliver, then you'll find the “UX toolkit” that we've “wrapped up” for you here more than helpful! Basically, it contains all the core principles for designing a conversational interface that's closest to a human-like conversational experience.  Let's dig in:   First Things First: What Is a Conversational Interface? When you say “conversational interface” you instantly say Siri or virtual assistant M! And it's precisely these 2 examples that “authorize” us to divide them into:   chatbots (besides Siri, think of H&M's chatbot for instance!) virtual assistants (Amazon's, Alexa's virtual assistant, etc.)   What these conversational UIs do is practically mimicking human chatting!  And it's the verb itself, “to chat”, that “warns” you that there's a shift of focus (as compared to the graphical user interface) from visuals to words themselves. With this in mind, you'll implicitly need to revise your set of core UX design rules that you would have normally designed your GUI interface by!   But What Turned Conversational UI Into Such a Phenomenon? That conversational interfaces have become ubiquitous is no news for anyone.  But what are the factors that keep influencing its ascension in the digital world? Let us point out the 2 most impactful ones:   natural language processing technologies   artificial intelligence: is rapidly improving its capabilities to accurately “grasp” intentions interpreting the user's uttered words   last but definitely not least: our human nature itself; chatting is carved in our very DNA as social beings   In short:   recognizing the user's uttered input is no longer a challenge for nowadays technologies   as users (and “chatting human beings) we're instinctively drawn to this “new” type of interaction with technology   The Challenge You're Facing From a Conversational UX Standpoint For there is, indeed, a challenge that you need to respond to once you go ahead and start designing your (first) conversational interface: adding the authentic human touch to your bot! That's right! Since accurately interpreting the user's spoken input is no longer a challenge, “humanizing” the conversational experience that you deliver via your interface is a serious challenge!  How do you craft conversations that sound natural and authentic, that are both helpful and... delightful? This is the question! And now let's dig deeper into our list of UX design principles to apply for successfully responding precisely to the aforementioned challenge: creating human-like conversations!   1. Create a Consistent Persona  How could you possibly “humanize” your conversations with no information (or with just vague info) precisely on those “humans” that your bot will be chatting with? This being said: defining a persona is the very first step to take, way before you even start to design a “draft” of your future conversational UI! Draw your target user's “portrait” by determining and then writing down its personality traits. It's these traits that will let your team know how to approach him/her. What conversational scenarios to put together. What vocabulary to start setting up and so on. And did we mention “consistent persona”! By “consistent” we meant that once you have your user's backstory and personality traits established, your conversational UI needs to remain consistent in the tone, words, and phrases that it will use.  You don't want a banking app to start with a formal tone and then “spice it up” with one or two slang words, now do you?   2. Create and Maintain a Natural Conversation Flow Conversations between your users and your chatbot/virtual assistant should simply... flow fluidly, naturally! This means that at no time should your user feel like he/she's putting some sort of effort to overcome obstacles for establishing good communication with your system. And here are some UX “hints” for keeping that conversation flowing: 2.1. Promptly Guide Your Users With Hints … don't wait till they get too confused and clueless about how they're supposed to start the conversation with your chatbot or about how precisely this one can help them! How? By simply providing them guiding hints!  For instance, your chatbot/voice assistant can initiate the conversation itself via a short introduction and a clear call to action button!  2.2. Set Up Your System's Purpose What should your voice assistant/chatbot do? What user problem should it solve, promptly and effectively (with at least input/effort from your users as possible)? Make sure you define one clear purpose that your chatbot should serve! Make it:   unique (no need to go for a multi-purpose, too-hard-to-handle type of system) make it clear (for your team) 2.3. Strategically “Sprinkle” Some Well-Timed Earcons And we feel like stressing out the word “strategically”! For it's only the proper, well-thought usage of earcons (well-timed earcons) that will help you liven up your conversations! When triggered precisely at key stages of the conversation these audio sound effects (applause, musical feedback, beeps) will come to break an otherwise monotonous tone of the conversation. To infuse some personality! It's also a sign for users (take Siri's “Ding!Ding” earcon) that it's their turn to ask questions, that the app is then “listening” to them.  2.4. Keep Away from Open-Ended Questions! “And from the rhetorical ones, too!” Once you've given your users the chance to choose from a multitude of possible answers to the questions asked by your chatbot... you'll “lose” them! And it's the same case with rhetorical questions, too, since users tend to respond to them anyway and confuse your system. In other words: stick to close-ended questions, giving your users no possibility to confuse your system with a “surprise” answer, one that you haven't pre-set in its conversational scenarios!   3. Keep The Conversation Natural and Authentic Modeling the conversation to an authentic, real-life human one should be your main objective once you start designing your conversational interface! And here are some universal principles of UX design to follow for achieving this level of “authenticity”: 3.1. Humanize It Go beyond the “robot-like” chatbot and aim for a human-like one! And you'll only get to this level of “humanization” if you properly leverage those persona traits and back-story that you will have established! Don't be afraid to throw in a slang word or two (if your target audience's profile and your own app's nature permit), to go informal and to use that specific tone and vocabulary that your target users would use in their day-to-day life. Familiarity is key here! If you manage to make your chatbot talk like a member of that specific community, then you will have won them over, you will have convinced your users to go on and keep engaging in conversation with your system! 3.2. Keep It Concise and To the Point Since mimicking natural, real-life chatting sure means sticking to short phrases. For that's how we communicate, in brief, succinct phrases, and your system should stick to this pattern of the conversational speech. And speaking of concision in real-life conversations, here are 2 “paths” that your conversational UI should stick to:   avoid asking multiple questions at once request information from your users one by one   Note: It's true though that utterly concise and straightforward “yes” and “no” answers tend to make a conversation sound a bit mechanical. This is why our Toronto web development team's advice to you is to masterfully alternate phrases/answers of different lengths and to rely on turn-taking, too. This way, even if the answers are just the simple “yes” or “no” type, the conversation becomes far more engaging, less robot-like.   4. Let Your Users Be in Control  Make them feel that they're in control at all time! During the entire conversational experience! Now here are some user experience design tips and tricks to apply for placing total control into your users' hands: 4.1. Enable Them to Start All Over Again It's crucial that you provide this possibility! Your users should be able to reset the conversations that they'll engage it. At any time! 4.2. Provide Helpful Guidance and Assistance  Whenever your customer/user feels lost and confused make sure to prompt in some help messages and to suggest him several options to choose from! 4.3. Provide "Undo" and "Cancel" Functionalities And this is a key UX principle to apply, both in case of a graphical user interface and of a conversational one!  Allow them to change their minds and don't turn wrongly inputted data into an “irreversible mistake”! Remember to integrate those two crucial functionalities into your conversational interface and thus enhance your customers' experience! 4.4. ASK Them to Confirm, Don't Just State And following this “rule” is critically important when you're dealing with sensitive user inputs (credit card details for instance). Each time you need them to confirm an option that they will have selected or an action that they will have asked the system to carry out for them, it's always best to “ask” for their confirmation. To “double-check” with them, instead of just stating the action that's being performed on their behalf.  Needless to add than by asking them to confirm you're making them feel in control of the app!   5. Boost Their Confidence  Reinforcing users' perceived self-efficacy goes hand in hand with restoring their confidence. And with smoothing their experience with your chatbot or voice assistance, too, of course! Let them know that your system has understood their questions and requests! That your chatbot has validated and confirmed the data provided. So, “sprinkling” some “Got it”, “OK” and “Sure” acknowledgers throughout the conversation will just keep your users going, keep them listening to your bot and willing to chat with your system. Note: for a more natural conversational experience randomize your acknowledgers! It will make the conversation sound less monotonous and more fluid! And our list of 5 universal principles for user experience design to apply when you design your conversational interface ends here! Have we missed any key “rule(s)” to be followed for “humanizing” chatbots/voice assistants? ... Read more
Adrian Ababei / Jul 12'2017
5 Contributed Modules for Building Your Drupal 8 Multilingual Site 
Do you want to stick to the basics or go beyond it? In other words: would you offer your visitors the same multi-language experience that they would get on any other Drupal 8 multilingual site or are you ready to take multilingualism to the next level and enhance it with an extra contributed module or two, as well? Especially when you have an "overwhelming" collection of multilingual contributed modules to choose from for picking precisely the one(s) that cover your site's specific needs! Since going multilingual doesn't have to mean using the same "recipe of modules", irrespective of the Drupal 8 site's particularities, right? This being said, let us reveal to you the list of 5 Drupal 8 contributed modules, each one loaded with multilingual functionality, that you might want to supercharge your  website with:   First: A Few Words About the Out-of-the-Box Multilingual Functionality in Drupal 8 You can easily consider yourself a spoiled one: Drupal 8's been built with multilingualism in mind! Therefore, if you would have had to mix and match an entire "array" of contributed modules for building a basic multilingual website in Drupal 7, it only takes 4 CORE modules to build a perfectly functional one in Drupal 8! You practically get multilingual functionality "by default"! A huge jump-start! And now speaking of this multilingual pre-built “kit”, made of 4 key modules, let us enlist them for you:   Language Interface Translation Content Translation  Configuration Translation    Note: Upon building your multilingual Drupal 8 site we advise you to go for another one of the languages available on your website instead of English; this will automatically trigger the installation of some key multilingual-friendly modules. And now, let us proceed with our list of contributed modules that will help you tailor Drupal 8's multilingualism to your own site's specific needs:   1. Language Cookie  A more than useful tool whenever you need to identify your visitors' mother languages.  And how does it “detect” it for you? Easily: basically it adds a new “cookie” field to the Language Negotiation settings. And therefore, the language on your site will instantly be set in accordance with this extra cookie.  As simple and yet as effective as that! You can just “relax” knowing that the languages on your Drupal 8 multilingual site will automatically get “paired” precisely with their native speakers.   2. Localization Client  Need to fix or create and add translations to certain pages on your website? Don't worry, you definitely don't need to sift through all your pages and take them one by one for finding precisely those with missing or “flawed” translated content. You simply install and enable this module here and harness the power of its on-page translator editor. Just navigate around your pages precisely to your target one(s)... edit/add your translation... save it and... that's it!   3. IP Language Negotiation, A Key Module for Your Drupal 8 Multilingual Site “Kindred” with the Language Cookie module, we could say, since this one, too, helps you detect your visitors' mother languages. It's just the means used for this "language detection" process that differs: the IP Language Negotiation module “teams up” with the “country language detection” module, ip2country,  for that. By detecting the countries that your visitors access your multilingual Drupal 8 site from it instantly displays the content on your website in their own languages.   4. Language Fallback  Call it a “safety net” or a “plan B” module if you like! Take this use case scenario, for instance: “You're using multiple regional variants of a language of your website: Welsh English and Scottish English, let's say. Well, first of all, you define your site's default language, English, then define its 2 “variations”: Scottish and Welsh. Whenever a string needs to get translated, the module will first look for the Scottish translation, then for the Welsh variant.” Take it as an “insurance policy” that if something unexpected happens, meaning that a certain translated string can't get delivered to your visitors in your custom language, they will always get the requested content in another familiar language/dialect (the “fallback language").   5. Language Selection Page  Instead of striving to “detect” your site visitors' mother languages, how about empowering them to choose the languages they'd like to see your site's content translated to? And how does this module empower them to do that? By presenting them with a landing page where they get to choose their preferred languages from those available on your Drupal 8 multilingual site. Now how does “placing the power of choice into your users' hands” benefit your website?  It's a helpful strategy to adopt whenever you don't have enough relevant data on your site users, for instance (you don't know what each visitor's mother language is, what countries they access your website from, etc.) Or it could simply be the fact that you don't want to influence their choices. “Empowering the end-user” is Drupal's philosophy after all. And even so more Drupal 8's, right?   This is our selection of contributed Drupal 8 modules “loaded” with multilingual functionality that our team has carefully put together for you! How does your own “arsenal” of multilingual-friendly modules look like? ... Read more
Adrian Ababei / Jul 12'2017
Create Once Publish Everywhere With CONTENTA, The Latest Drupal Distribution!
The “create once, publish everywhere with close to zero knowledge of Drupal” is nothing but a myth! And you must have surely convinced yourself of that by now!  This is why harnessing the power of decoupled Drupal has been a discouraging “mission impossible” for non-Drupalers. A “privilege” exclusively for those familiar with decoupled back-ends, for those who do know a thing or two (or more) about each of the Drupal modules' particularities. Well, it looks like the Drupal community is innovating for a brighter future! One where you, the non-Drupaler, get to leverage the decoupled Drupal 8's power hassle-free!  And this future (which recently turned into present) is called “Contenta”! What started like an innovative and promising initiative at Drupalcon Baltimore is rapidly developing into a powerful, stable API-first Drupal distribution adapted to the needs of the non-Drupal “gurus”.  How do its initiators plan to do that? By providing the users out-of-the-box Contenta “kits”, with all the needed tools, configuration, and demos that they could possibly need to start “fueling” their cutting-edge apps with content in no time (having Drupal 8 as a backend CMS to rely on)!   What Was The Context That Favored Contenta's Emergence? Two key factors defined this favorable context:   The app development process in a decoupled situation itself: for non-Drupalers it could easily turn into a daunting “ordeal” with all the setups to be made, the tools to be put together, master matching the app's front-end with its Drupal back-end etc.   Drupal 8's outstanding capabilities for building decoupled applications   A solution had to be found so that everyone should be able to benefit from a decoupled Drupal CMS at its full potential, especially since Drupal 8 already provided a truly powerful “toolset” to be leveraged.   What Goals Has The Development Team Set For Contenta? Now that we've outlined the “problem” that this Drupal distribution comes to solve, how about pointing out the “objectives” that its team has set for it, as well?   it should be highly accessible to non-Drupalers thanks to the provided “out-of-the-box” kit of tools (or quick installer) they'll need when building their apps (content models, demo content, modules suggestions, example consumer apps, default setup...)   it should be quick and easy to use (thanks to its “load” of helpful demos and inspiring consumer examples)   it should also turn into a go-to source of needed documentation   it should be full-featured, perfectly equipped for powering decoupled projects, irrespective of the used front-end technology: Angular, Ract, Vue, Ember etc.   How Do You (Quickly) Install It? Since we've already mentioned Contenta's “quick installer” feature, it's time we come up with proofs, right? Here are the simple steps to take for installing your API-first Drupal distribution, so that you can start building your consuming app in no time:   first things first: install Composer    ensure that you have the sqlite-extension installed in your local machine, as well ( sudo apt-get install php-sqlite3 in debian/ubuntu)   then enter the following command for creating your new project: composer create-project contentacms/contenta-jsonapi-project MYPROJECT --stability dev --no-interaction    next, just install Drupal as usual   What Type of Demo Content Model Will You Get, Out-of-The-Box? “A recipe magazine”! That's right, this is the type of pre-built content model and demo content that you'll get to implement and to work with once you've installed your content API.   What Front-End Technology Should You Go For? “Whichever you prefer”, since Contenta “spoils” you with a whole load of inspiring examples of consumer apps built in different technologies. And there's no need for you to get “suspicious” once you notice that all these examples feature the same structure.“In real-life” it's the front-end technology that will be powering them that will determine their look and feel (if it will be Angular, then your app will feature that already iconic material design, if it will be Elm, then...)   Wrapping Up: Hypothetical Contenta Use Case  Now, what a more suitable way to sum up our short presentation on this API-first Drupal 8 distribution here than with a hypothetical use case scenario, right? Let's proceed: “Let's take Matt, our hypothetical non-Drupaler (let's assume that he is a React developer instead). Matt here is in search of a powerful back-end CMS for that impressive app that he's planning to develop. He'll just need to install Contenta, quick and easy, and dig through the out-of-the-box collection of React-powered app examples that Contenta will deliver him, by default.” This way, via a quick installation process and helpful examples of consumer apps to get inspired by, Matt will be able to develop his React and Drupal 8-powered app in no time! Now we're curious to read your own thoughts on this initiative! How do you feel about this project? Which are your projections of its future? Are you currently looking forward to using it in your future decoupled Drupal projects? ... Read more
Adrian Ababei / Jul 07'2017
3 Ways to Translate Language Strings in Drupal 
Does anyone of the following scenarios sound familiar to you?   you need to translate a few language strings on your Drupal site due to a certain dialect that the great majority of your site visitors use       you simply prefer to see certain messages or labels on your website written slightly differently (let's assume that you prefer the “Add new content” textline to the “Add Content now” default one)   you need to go multilingual (on your Drupal site at least) and you have a whole heavy load of language strings to be translated into those target languages   What do you do? Which are your options? Which one guarantees you a streamlined translation process? And most importantly: which one makes the perfect fit for your own site-specific scenario? Let us try and answer all your questions by presenting you 3 approaches to language string translation in Drupal:   1. Use the String Override Module Now before we go on with our short step-by-step guide on how to install and to turn this module into your handy translation tool, we feel like pointing out its “limitation”. It makes a more than handy tool mostly for all those small changes that you need to apply to just a few strings on your Drupal site. Therefore, using it for a full-site translation “marathon” is probably not the most inspired choice. This being said, let's break down further with our step-by-step installation and configuration guide: Step 1: Download and Install Your Module You'll find it here: https://goo.gl/aCJGyy you've successfully downloaded it, go to “Modules” > “Add New” > use your “Browse” and search for the file you need to upload > “Install” Next just briefly “scan” the enabled boxes corresponding to your two String Overrides fields there and, if everything looks OK to you, hit the “Save configuration” button!   Step 2: Trigger Your Module from the Configuration Menu Now navigate to “Configuration” (you'll find it “neighboring” the “People” and the “Modules” tabs on top of the page) and, unfolding its menu, go to “Translate Interface”. It's the last option listed there (after the “Regional and Language” one). Next just give it a click! Step 3: Now Go Ahead and Replace Your Language String Just enter the exact string that you want to replace/translate on the left side of your screen (in the “Original” section) and its replacement string/its translated version on the right side (in the “Replacement” section). Easy peasy! And where do you add that the module even enables you to streamline things even more: you even get to replace multiple language strings simultaneously just by adding some extra rows.  Wrap Up: as already mentioned, the String Overrides module makes a great choice for “small-scale” string translations only. It enables you to track down the strings you need to change and to replace them with the new ones in no time. Yet, when it comes to translating an entire Drupal site, manually overriding every single language string using this module is hardly an effective solution. Such a “challenge” to respond to calls for a more powerful module such as the Locale module. 2. Use the String Translation Module for Handling User-Defined Strings Also known as the i18n_string module (falling under the Internationalization project's “umbrella). Now if the just mentioned Locale module (along with the .po files) enables you to translate hard-coded language strings, the String Translation module empowers you to translate the user-defined ones, too. And here we're referring to taxonomy terms, menu items, field names, which are a bit “trickier” when it comes to translating them, since you can't just rely on Drupal 7 core for that. Also, another important specification that we need to make is that this is an API module! Therefore, it doesn't work as a standalone solution, but rather “supports” other modules from the Internationalization group. And when it comes to the UI that you get to use to translate language strings in Drupal using this particular module, you should know that it's incorporated in the localization system: go to Administer > Site building > Translate interface for translating your user-defined language strings. "And how does it work exactly?" you might legitimately ask yourself. Here's how: it uses the Locale's module standard translation page (the above mentioned UI) for enabling you to translate the user-defined strings that it will have collected    but not before you haven't defined your site's default language (and it's not always English)   and it does this by grouping strings into “text groups” (you can find these groups of user-defined strings named “Profile”, "Menus” or “Taxonomy”, at admin/build/translate/search, under the "Limit search to:")   Notes:   do keep in mind that whenever you're translating your user-defined strings, the source strings that will get stored will be displayed in your default language    in case the default language on your website is not English, you still get to import/export English translations relying on your localization UI   a sort of “warning”: whenever you change the default language on your website you'll need to remember to redefine all your source language strings, too (the user-defined ones, of course)   in short: get yourself informed of all the implications deriving from changing your default language, since this goes hand it hand with a never-ending string editing “ordeal”, too   all the other translations on your website will be kept “unharmed”   yet, as a rule of thumb, you should be changing (if it's necessary) the default language on your site at the very beginning of its development process; later on, once you have your site up and running, changing it back and forth and in several different languages will only lead to... “language string chaos”   3. Use the Strings Overrides in Settings.php to Translate Language Strings in Drupal You'll get to carry out the entire process in the settings.php file and where do you add that you don't even need to download, install and configure any extra module: it all happens in Drupal core. Yet, you should be fully aware that it's not a method for the inexperienced either. We're not going to hide it from you: it does require a certain level of coding “expertise”. Moreover, the same specification that we've made for the String Override module applies to this method, too: it's a tool to be used for small-scale string translations. Not the best choice when you're faced with much larger-scale translations! And now, shall we proceed with our explanations on “how it's done”? 1. Edit your settings.php file and go right up to line 430 (or somewhere 'around” it) 2. Next, uncomment this code (so that you can later on enter your translated strings)   434 # $conf['locale_custom_strings_en'][''] = array( 435 #   'forum'      => 'Discussion board', 436 #   '@count min' => '@count minutes', 437 # );   Note: in case the default language on your Drupal site is not English, remember to make the due modifications in the array key locale locale_custom_string_en so that it should reflect the actual language on your website! Now let's assume that you're being “dared” to translate a whole lot of language strings on your website.Then you sure need to streamline things a bit, right? For this you can rely on the i18n_string module, the API String Translation Module that we've just put into the spotlight.  Just edit your settings.php file by entering this new line of code: $conf['i18n_string_translate_langcode_en'] = TRUE; Or, if you're not that much into “tweaking” code in settings.php you can always rely on the variable_admin module (part of the Variable module). Here's how you get to leverage its functionality to translate language strings in Drupal:   first you navigate to admin/config/system/variable   next you click on the "Multilingual settings" tab   then on the "Enable translation for language" tab   set your default language   hit the “Save” button   And voila! Now you get to translate your language strings! How about you? Have you, by any chance, discovered other more effective ways to translate language strings in Drupal?     ... Read more
Adrian Ababei / Jul 07'2017
7 Anti-Spam Drupal Modules to Spam-Proof Your Website With
When you say “SPAM” you say “facts of life”! The life of any Drupal site/app/blog owner or administrator out there! And aiming for a 100% spam-proofed website is as realistic as toiling hard to eradicate... social inequity for good. And yet, you can still cut it down to the very minimum thanks to this heavy weighting “offer” of anti-spam Drupal modules available to you! Depending on the spam prevention Drupal approach that you'll supercharge your website with you'll be fighting spam via:   challenge-response interaction real-time filtering a “deadly” combo of the two approaches more or less user intrusive methods (meaning featuring CAPTCHA or not)   And if the Mollom module for Drupal still is you site's old and familiar “shield” against spambots, you should know that the popular, non user-intrusive  spam filtering service will cease to exist as of 2 April 2018.  Since no one knows how it's going to get configured after this date, whether it will continue to safeguard all sites or none, you'd better be open to alternatives. Now to spare you of a time-consuming research, here are 7 anti-spam Drupal modules that our Toronto web development team has already hand picked for you! Scan them through, compare them and go for the one that best suits your site's anti-spam needs:   1. Honeypot Honeypot is, by far, THE anti-spam module! Basically, when they say or think of “spam prevention”, 99% of “Drupalists” out there say/think of the Honeypot module, of the Honeypot method (for yes, there's even an anti-spam “method” named after it). So, you get the idea: in Drupal world spam-filtering means “honey-potting” in 9 out of ten cases! “How does it work?”, you say? It fights back spambots on two fronts:   It uses a simple, yet surprisingly effective little “trick”: it adds a hidden field precisely to those forms on your Drupal site that it spam-proofs. An easily configurable “bait field” named something like “website” or “URL”. Once that hidden field gets filled in, it's a sign that a spambot has taken the bait. Sneakily-clever and effective! It uses a timestamp (which, again, you get to configure to your liking, the default time being of 5 seconds). If a web form on your Drupal site gets filled in quicker than that specific timeframe that you've set, Honeypot will instantly block its submission. It will identify the “submitter” behind it as being a... spambot.   So simple, so effective and where do you add that Honeypot falls into that category of anti-spam Drupal modules that are 100% non intrusive. The ones that don't keep “bugging” your site's visitors with captcha tests to be solved in order to prove their humanity! There's no user interaction involved, since Honeypot runs its “spambot-detecting” tests on the web forms directly! Note: a con of this module is that those particular web forms on your Drupal site placed under Honeypot's anti-spam protection can't get cached! The module disables caching for these particular web forms.   2. http:BL Now here's another spam blocking Drupal module worth your full attention! Compared to Honeypot's own methods, the HTTP:BL's one is completely different: it blocks any requests coming from Ips included on a DNS blacklist! A blacklist put together by all the Drupal sites using this module for spam protection. A sort of collective fight against spam, one that your own site will be involved in and “reap” the benefits of! Note: the http:BL module can be installed on Drupal 7 websites only for the time being.   3. Captcha, One of The Reference Anti-Spam Drupal Modules How could we have left out, from our list, precisely the module leveraging the “reference anti-spam method” itself: the CAPTCHA method? It does precisely what its name says: it integrates CAPTCHA into your web forms! A challenge-response system meant to block any attempt of automated spam posting, based on “inconveniencing” the user to pass a given test (answering a question, solving a math problem etc.) The module comes with its own default challenge-response tests, so it can be used as a standalone spam-blocking solution, and it can also be used as a base API for other anti-spam Drupal modules. Notes:   our Toronto digital agency's team strongly recommends you to go for the second scenario, to make it just part of an entire “ecosystem” of anti-spam solutions on your Drupal site. There have been quite a few cases when spambots did manage to solve these challenge-response tests.   do keep in mind that captchas are always a deterrent for your users and can easily turn into a factor responsible for the low conversion rate on your Drupal site   4. reCaptcha Take the CAPTCHA and the Re-Captcha modules as a “check and double check” spam-preventing method! The ReCaptcha module goes even tougher on bots as it leverages the “squiggly words” method for blocking spam. Basically, words difficult to read by spambots get taken from old books and turned into captchas. Note: a potential disadvantage of using this anti-spam Drupal module is that some users, too, might find it hard to recognize these “hard nut to crack”, less common words!   5. Antibot, One of the Anti-Spam Drupal Modules to Supercharge Your Site With Here's another representative of the group of anti-spam Drupal modules that are totally unintrusive! It uses its spam-preventing “superpower” like this: it practically assumes that bots are discouraged to spam pages using Javascript, therefore users enabling JavaScript in their browsers are, implicitly, spam-proofed by default. For those cases where spambots do attempt to render precisely these “safe” JavascripT-based pages, the module will inspect your visitors' mouse movements and keyboard key presses in order to identify them as “humans” and to allow them to submit their filled in forms. A pretty clever check-up if you come to think of it! Note: one of the Antibot module's notable features is that, unlike other anti-spam Drupal modules, it doesn't disable cache on the web forms that it protects. A performance-enhancer you just can't overlook!   6. Botcha Take the Botcha module as an all-in-one spam-blocking solution for websites running on Drupal! And where do you add that it doesn't involve any user interaction (and therefore “user bugging”) either! There are 3 methods that this module uses for detecting and blocking spammy form submissions:   the honeypot method: it adds that hidden, “spambots luring” field to the protected web forms on your website the source calculation-based method the time-based method   And there's more! Once enabled, this module will also prevent any attempts of resubmitting the same form by using its own “NoResubmit” formula. Note: the only downside is that there's no Drupal 8 version of the module. Not just yet!   7. Simple Anti-Spam         This module's main “role”, in its mission to prevent spam posting processes, is to block automatic spam coming from anonymous users. And its name says it all; it's a simple “two-ingredient recipe” that it relies on for blocking spam:   there's an “I'm not a spammer” checkbox and there's an “I'm a spammer” hidden checkbox   Once the later gets checked or the former is left unchecked, it will just “warn” the module of a “suspicions activity” on your Drupal site. It's then that Simple Anti-Spam displays a warning message or simply blocks that specific form from being submitted to your Drupal site. Moreover, from:   blocking web forms by maximum text length blocking them by stop words to blocking form by number of links and the list can go on   ...the Simple Anti-Spam module is one of those anti-spam Drupal modules that can report a form as being “suspicious” (automatically blocking it, too) based on a whole array of criteria. Note: there's yet no Drupal 8 version!   Your turn now! What other approaches have you adopted on your Drupal site for... pulling the plug on any type of spam activity?  ... Read more
Adrian Ababei / Jul 04'2017
How The Drupal CDN Module Can Speed Up Your Site
It's speed that excites them all, with no exception! While some of the users prefer a minimalist web design, others might go for a maximalist design instead. Some have a weakness for content infused with storytelling, while others prefer just simple, “raw” data... And still: online users ALL have a thing for high page loading speed. And the Drupal CDN module makes such a powerful tool for you to supercharge your site within the name of top speed!   “Why should I even integrate a CDN when I can as well continue to use web hosting? What difference would it make?”   2 more than legitimate questions that we'll try to answer as we'll do our best to point out to you how precisely a CDN can boost your Drupal site's performance and why you should add it to your whole “arsenal” of speed-boosting tactics (moving CSS and JavaScript in the footer, perfecting the caching on your site, compressing your heavy load of images, etc.). So, let's dig in, shall we?   How Precisely Can a CDN Guarantee You a Lightning Fast Website? A short version of the answer to your valid dilemma would be: “compared to a shared web hosting, a CDN is built with speed in mind; it's equipped with the capacity to withstand huge fluxes of visitors”. In other words: while shared hosting is simply geared towards delivering you a stable environment for your website, a CDN's infrastructure setup is developed precisely to ensure high page loading speed, irrespective of the influxes of traffic on your site. And this is no news that we're sharing with you here: just consider with how many other websites your own Drupal site is sharing its hosting sever with and... you do the math! Try to imagine how many times its performance would get boosted if it had a server all by itself. Dedicated exclusively to its own needs for speed and to answering its particular traffic challenges.   1. It Will Lighten That Heavy Load of Plugins On Your Site Plugins! Who can resist them?  Once installed on your Drupal site, they just unleash their “encapsulated” functionalities. And each one of them comes with its own too-cool-to-resist-to functionality! Piling them up, adding more and more, eager to impress your visitors, does have the “taste” of a “guilty pleasure” doesn't it? “Guilty” because with each new plugin, with each new load of JavaScript and CSS files that you add on, your Drupal site gets even more bogged down. And how can a CDN, via a dedicated tool such as the Drupal CDN module, help you out here? For it certainly cannot point out to you which plugins to keep and which ones to disable! Well, what it CAN do, instead, is compress and minify their scrips! Therefore your site's heavy load of content will get considerably lighter and its performance dramatically improved!   2. It Will Speed Up Content Delivery Anywhere on The Globe Basically a CDN infrastructure's built to serve content worldwide, irrespective of the website's own location on the globe. In short: users located far away from your site's location, shouldn't be disadvantaged, in any way, in terms of content delivery speed. And how does a CDN manage to deliver content, at high speed, to an international audience? It relies on its entire “ecosystem” of proxy servers, located in various locations worldwide. It's them that catch and then replicates content (images, CSS, JavaScript files) precisely from those locations which are geographically closest to your users. Wrapping up: if your Drupal site's located in Asia and a visitor from Europe makes a content request, that particular user will get its content delivered as quickly as a visitor from Asia would. Thanks to that network of servers, placed all over the globe, that your CDN will leverage.   The Drupal CDN Module: A Handy Tool for Integrating CDN on Your Website Now, where do you add that you even have a dedicated module for it?  Once you've convinced yourself of the CDN's key advantages and once it's more than clear to you how its integration can benefit your own website, just go ahead and... enable it! Practically what this module will do is change your files' URLs so that they should no longer load from your current shared web server, but from your CDN instead!   A Step-by-Step Guide to Installing and Configuring Your Drupal CDN Module Now let's point out to you all the steps you need to take, along with some useful tips and tricks, so that you can use your CDN at its full potential on your website:   You install and enable your Drupal CDN module on your website   You navigate to its configuration page    See the “General Settings” tab? It's there that you can set the module's status (enabled, disabled or on testing mode)   Next, click on the “Details” tab and wisely scan through the whole set of options that you have there: pick “Origin Pull”, select the “CDN mapping” setting, and so on. It's the latter that enables you to specify which files on your website should get loaded via your CDN from now on   Select the “Far Future Expiration” setting and this way you will ensure that files delivered via CDN will “expire” in the future to come (enhanced cacheability on your client's side). Also, since these two settings go hand in hand: keep in mind to enable your “Aggregate and Compress CSS files” option in your Performance settings   Select “CDN supports HTTPS” (you'll find this setting in your “Other” tab) if it's the case, meaning if your Drupal website does use HTTPS   And that's it! Your site's all set for reaching... high page loading speed now! ... Read more
Adrian Ababei / Jun 29'2017
5 Ways to Harness the Power of AI on Your Ecommerce Site
“Viva la revolution!” Since we keep reading/hearing how AI revolutionizes the way people shop online, the way retailers leverage their user data to personalize the shopping experiences they provide, how AI revolutionizes the entire ecommerce space. So, how are you harnessing the superpower of AI on your ecommerce site? Your set of options includes:   chatbots   virtual personal shoppers   ultra-personalized shopping experiences   AI-based search queries   machine learning-powered search results   … and the list is an ever-growing one! Now you're probably disoriented: how do you know which one(s) of these revolutionizing forms of AI fits your own company's ecommerce strategy?  Well, let us put each one of them into the spotlight and hopefully help you identify the forms of AI in ecommerce that best suit your goals:   1. AI Virtual Shopping Assistant The “Relax and enjoy your shopping experience!” turns into: “Relax, your virtual assistant will do the shopping for you, purchasing precisely the item(s) you need at the best possible price(s)”. In short, as you implement this form of AI on your ecommerce site, you're actually leveraging both the valuable user data that you will have collected and the set ups that your customers will make (for instance a certain day of the week/month when he prefers his virtual assistant to “go shopping” for him/her). Let's fancy this possible virtual shopping assistant-powered scenario: “you already have a load of priceless data on a customer's preferences and an enabled “sales” alert option. By leveraging this valuable information his online personal shopper can easily purchase that particular product/service precisely the day when the price drops down”. See the 2 main differences? The customer:   doesn't have to type in a whole string of relevant keywords in the search box on your site, looking for the product he'd like to buy (for his virtual assistant already knows what items he'd like to purchase)   won't be constantly notified (and eventually annoyed) whenever prices drop.    The shopping experience without the time-consuming hassle! Moreover: the AI virtual shopping assistant can curate the products/services your customers would want to purchase, depending on their browsing and shopping histories! So, we're talking about proactively assisting your customers, ensuring future conversion, too!   2. Machine Learning for More Relevant Search Results Relevancy is key when it comes to search results, wouldn't you agree? But what if you could reach “the utmost relevancy” in the search options that you deliver to your online customers? You can reach it: by leveraging the machine learning technology on your Drupal site!  Instead of relying on the conventional keyword matching technique, you'd better harness the power of machine learning AI and deliver the perfectly adequate search results to your potential customers!   3. A New Type of Search Query: AI Processing Natural Language  Searching for products/services on a given ecommerce website is getting “out-of-fashion”! AI technology steps on the stage and steals the spotlight as it's equipped with natural language processing capabilites. Capabilities that the traditional way of searching for items on a given online store can't possibly compete with! Therefore, instead of typing several relevant keywords, which may or may not display the relevant search options, AI can “interpret” customers' natural language. It can recognize and decipher their natural expressions and thus display only the most relevant search results.   on one hand we have a series of keywords that get, successfully or not, matched with their corresponding products/services   on the other hand with have search results determined by the process of “deciphering” natural expressions   See the difference?   4. Voice Search: Implement This Key Form of AI on Your Ecommerce Site  AI-powered voice search has ceased to be a striking novelty for some time now. It slowly and surely turns into a “must-have” technology for every ecommerce site/app! Are you ready to leverage this form of AI on your ecommerce site, too? It's the epitome of convenience: users can just utter the items they want to visualize and eventually purchase and the AI technology implemented on your website does all the rest. Yet it's much more than “utmost convenience”: it's a way of deep-personalizing your customers' overall shopping experiences on your ecommerce website! By using voice-triggered searches you'll practically tailor, to their own needs, the search options that you'll display. The “traditional” way of personalizing shopping experiences (to the search terms that users enter in the search box on your site) can't possibly rival with this AI-powered type of personalization, don't you agree?   5. Evolving Content  And we do mean “in real time”! A whole new dimension for the concept of in-depth personalized content going hand in hand with a perfectly tailored shopping experience. In other words: what this AI technology does is adjust the content on your ecommerce website LIVE, as the customers navigate through! The data collecting, followed by the content tailoring is no longer a viable tactic in today's ecommerce landscape. Content evolving in real-time is the new level of personalized customer experiences!  And not only that it helps you craft an “ultra” personalized online shopping experience, with a high level of interactivity, but you're actually taking the burden of A/B and layout testing off your team's shoulders. As you leverage this AI technology, based on evolutionary algorithms, you'll be actually improving your online shopper's experience “on the spot”!   And the list can easily go on and on! Visual search would have to be the next AI technology on our list, followed closely by... Yet, since it's a list that gets constantly enriched, we shall end it here. Do tell us now: have you already leveraged any of these forms of AI on your ecommerce site? ... Read more
Adrian Ababei / Jun 28'2017
Speed It Up: Use the Image Lazyloader Module on Your Drupal Site!
Lazy loading (images, in this case) leads to energy preserving, which leads to a significantly improved site performance! Pretty ironic, isn't it? Well, this is precisely the logic on which the Image Lazyloader module in Drupal has been developed! Saving your website's energy goes hand in hand with increasing its page loading times. It goes hand in hand with “sparing” HTTP round-trips and taking some heavy load off the browser's “shoulders”, which otherwise would be “pressured” to relentlessly load thousands of images, even before they would be visible in his/her window browser. Basically what this module does is both unexpectedly simple and impressively smart : it loads images on your Drupal site only when they're in visitors' viewports.  In other words: when there's no one opening them up in his/her browser, why bother loading an entire “cargo” of images? Why put an unnecessary pressure onto your site and the browser? And now let us detail to you this “energy-saving” tool that Drupal puts at your disposal and which we encourage you to leverage in the name of a... faster loading website:   The Image Lazyloader Module: How Does It Work Exactly? What Makes it a Speed Booster? The whole “mechanism” behind this Drupal module is surprisingly simple, if we come to think of it: it loads images (lots and lots of them) only when they're displayed in a site visitor's browser window. Not before! And this is a “dream come true” especially for web designers, who're constantly dealing with the challenge of optimizing heavy loads of images. As you can surely guess it yourself, the module's an incredibly useful tool precisely for those Drupal website carrying heavy “cargos” of images. For no matter how many they might, how heavy the load is, the Image Lazyloader module's capable to... lazy load them all and therefore to keep your site's performance at optimum parameters.   How Do You Use It? How Do You “Exploit” Its Full Potential on Your Drupal Site? Now allow us to give you a few tips and tricks or, better said, a step-by-step guide on how to fully leverage this module on your Drupal site:   Step 1: you download (and install, obviously) the module itself along with the Libraries module in the sites/all/modules/contrib; the latter is, in fact, a dependency for 2.x branch  Step 2: next you download your echo library and place it in sites/all/libraries Step 3: it's time to enable your Image Lazyloader module now Step 4: don't forget to clear your cache   Essentially all these preliminary setups will actually grant you the much-needed freedom to quickly enable and to disable your Lazyloading module any time you want to. Which turns it into such a powerful convenience when you just need to run some tests on your website, for instance. And speaking of “empowerment”, there's an entire array of options to choose from and setups to enable, depending on your site's needs and on your purposes:   you have the loader icon letting you know if the images are not (yet) fully loaded   you get to set the distance from the viewable screen part and to go for a placeholder image of your choice   you're even enabled to select those particular web pages on your Drupal site where there's no need for an image lazy loading process to be performed   And voila! These are the answers to your “why” and “how" to use the Image Lazyloader module! Questions deriving, of course, from the main one: “how can I boost my Drupal site's performance?” Feel free to test its image optimization power and to determine how much faster your web pages will then load.  ... Read more
Adrian Ababei / Jun 27'2017