Mohamed Abdullah https://www.globalizationpartners.com/author/mabdullah/ Globalization Partners International Wed, 24 Apr 2024 13:32:15 +0000 en-US hourly 1 https://www.globalizationpartners.com/wp-content/uploads/2019/01/cropped-gpi-logo-Copy-32x32.png Mohamed Abdullah https://www.globalizationpartners.com/author/mabdullah/ 32 32 GPI Partner Optimizely is Recognized in the 2024 Gartner® Magic Quadrant™ for Digital Experience Platforms https://www.globalizationpartners.com/2024/04/24/optimizely-recognized-in-2024-gartner-magic-quadrant-for-dxp/ Wed, 24 Apr 2024 08:15:56 +0000 https://www.globalizationpartners.com/?p=85196 Gartner, one of the leading IT consulting and research organizations, has named Optimizely a Leader in their Magic Quadrant™ for Digital Experience Platforms in their most recent report. Optimizely has been placed in the exclusive Leaders Quadrant every year since 2020. For the second consecutive year, they placed second for B2C Use Case and first […]

The post GPI Partner Optimizely is Recognized in the 2024 Gartner® Magic Quadrant™ for Digital Experience Platforms appeared first on Globalization Partners International.

]]>

Gartner, one of the leading IT consulting and research organizations, has named Optimizely a Leader in their Magic Quadrant™ for Digital Experience Platforms in their most recent report.

Optimizely has been placed in the exclusive Leaders Quadrant every year since 2020. For the second consecutive year, they placed second for B2C Use Case and first for B2B Use Case within the Magic Quadrant for Digital Experience Platforms.

 

Optimizely CEO had this to say about the Gartner recognition:

“We are extremely proud of the Gartner recognition of Optimizely as a Leader for digital experiences. With Optimizely One, we’re providing a unified, yet composable operating system for marketers, marketers deserve a go-to platform that gives them control of and visibility into the entire content lifecycle – as well as embeds AI and experimentation into each step of the workflow – so they can deliver high-performing personalized digital experiences. This Gartner acknowledgment, once again, inspires us to further improve the marketer experience and help our customers drive growth through an amazing digital experience.”

 

GPI’s Optimizely Translation Services Connector

Optimizely Translation Connector

GPI, a leading translation agency, has developed a Translation Services Connector for Optimizely which enables users of Optimizely based websites to launch and manage multi-language websites. The Translation Services Connector streamlines content exports and reimports allowing for the initiation of web content translation workflows with a single click.

GPI also provides clients with access to our Translation Portal to initiate new requests and manage projects, as well as providing access to an array of reports for their projects.

Globalization Partners International® has been a Technology Partner to Optimizely since partnering with CMS company Episerver in 2010.

To learn more, please visit:

The post GPI Partner Optimizely is Recognized in the 2024 Gartner® Magic Quadrant™ for Digital Experience Platforms appeared first on Globalization Partners International.

]]>
Best Practices for Angular Internationalization https://www.globalizationpartners.com/2022/11/08/best-practices-for-angular-internationalization/ Tue, 08 Nov 2022 21:45:34 +0000 https://www.globalizationpartners.com/?p=36815 When building an application, it is not a question of if it might be used by a global audience, but a matter of when it will be offered to global markets. This is why it is important to build an application with internationalization (i18n) in mind. Planning to support multiple languages, not only includes the […]

The post Best Practices for Angular Internationalization appeared first on Globalization Partners International.

]]>

When building an application, it is not a question of if it might be used by a global audience, but a matter of when it will be offered to global markets. This is why it is important to build an application with internationalization (i18n) in mind.

Planning to support multiple languages, not only includes the GUI (graphical user interface), but also other aspects like formatting dates and numbers, applying different currencies, and supporting language-specific fonts (including bi-directional). Depending on the framework or content management system (CMS) you are going to use to build your application, you might have different alternatives to internationalize it. In this blog, we will cover the best practices for the internationalization process of an Angular app.

 

Overview

Best Practices for Angular InternationalizationTo internationalize your Angular app to support multiple languages; follow these steps:

1- Install needed dependencies.

2- Prepare project for translation.

3- Extract text to be sent to translator.

4 – Use .xlf file after translation and set project to localization.

Let’s start our journey.

 

Install Dependencies

Install a localized package to a project by using the Angular CLI and (ng add @angular/localize) command, then we will add the @angular/localize package, afterward, the package.json file will be updated.

 

Prepare Components for Translation

Prepare the Value of an Element

To prepare the fixed text in the template, we will use the i18n attribute to mark all static text to be translated;

We must place the i18n attribute on every element tag we want to translate.

Example:

<h1 i18n> Welcome in GPI! </h1>

We added the i18n attribute in the element to mark the h1 element tag as a translatable element.

When Angular executes the extract process, it will understand that the h1 tag is to be translated.

 

Prepare the Attribute of an Element

To mark the title attribute for translation, you will add i18n-title.

Example:

<img [src]=”logo” i18n-title title=”GPI logo” alt=” GPI logo”/>

In the previous example we used the following format to mark the “title” attribute for translation:

i18n-{attribute_name}=”{i18n_metadata}” {attribute_name}=”{attribute_value}”

 

Preparing Text in Component Code

As we use a variable in the ts class, we need to also mark this text for translation, to do that we use backtick (`) characters to surround the text and metadata.

For text only:

$localize `string_to_translate`;

To add i18n metadata we will surround it by (:) as shown here:

$localize `:{i18n_metadata}:string_to_translate`

When we need to include interpolated text, will use this format:

$localize `string_to_translate ${variable_name}:placeholder_name:`;

 

Preparing Plural Expressions

The difficulty with plural expressions is that different languages have different pluralization rules. To mark plural expressions, we use the plural clause:

{ component_property, plural, pluralization_categories },

Notice that we will put plural in the (pluralization_categories) part:

Example : =0 { } zero { }

Notice this example:

( updated x minutes ago )

<span i18n>Updated X minutes ago </span>

We can mark it as:

<span i18n>Updated {minutes, plural, =0 {just now} =1 {one minute ago} other

{{{minutes}} minutes ago}}</span>

For more detailed information about the pluralization category, check out  Angular Documentation.

 

Preparing Alternate Expressions

We can use the (select) clause to mark choices for alternate text:

Format: { component_property, select, selection_categories }

We enter the text (English) surrounded by the curly brace ({}) characters after the selection category:

<span i18n>The main course is {main_course, select, meat { meat } fish { fish } other {other}}</span>

 

Export Content for Translation

Now that we have finished preparing the components, we will extract all marked text by using Angular CLI.

By using ”extract-i18n” command, Angular will create a source language file named “messages.xlf ” and it will be created in the root directory.

To create the file in specific directory we can use: “ng extract-i18n –output-path src/locale”

Then, create a copy of the file for each language; we rename each language file depending on the locale needed following this format:

file_name.{locale}.xlf  like   messages.fr.xlf

it is preferred to create a directory for translation files like: src/locale inside .xlf file, we will find the <trans-unit> tag for every marked text. Inside this tag there is tag <source>, this tag contains marked source text.

The translator can use the xlf editor App or manually by adding a new tag named <target> and write the value inside.

Simple example:

<trans-unit id=”introduction” datatype=”html”>

<source>Hello</source>

<target>Bonjour</target

</trans-unit>

 

Import Translated Content

Now we need to prepare the app for localization by adding specific properties in angulal.json file.

As in next snippet code, we will add the new property “i18n” and we will specify the source locale that is the locale used in source code.

We will add other property “locales” and the specific locales that the App can support.

Once we finish, we need to merge the translations into our application.

Go to the angular.json file and add new settings

“i18n”: {

“sourceLocale”: “en-US”,

“locales”: {

“fr-CA”:”src/locale/messages.fr.xlf”,

//.. } }

Moreover, we will add another property in this path: architect > build > options

Add “localize”: true

Now the app is ready to build; by using Angular CLI, we will write this command “ng build –localize”.

For more details and in-depth understanding please check Angular Documentation.

 

Format Data Based on Locale

We will use the pipes that Angular provides for this purpose, notice the data transformation pipes use the LOCALE_ID token to format data based on rules of each locale.

 

Currencies Formatting

Using CurrencyPipe transforms a number into a currency string.

currencyObj: number = 0.359;

{{currencyObj | currency}}  // output ‘$0.36’

 

Numbers Formatting

Decimal Pipe transforms a number into a decimal number string.

pi: number = 3.14159265359;

Without specified formatting:

{{pi | number}}    output: ‘3.142’

With specified formatting:

{{pi | number:’4.1-5′}} output: ‘0,003.14159’

With specified formatting and locale:

{{pi | number:’4.1-5′:’fr’}}  output: ‘0 003,14159’

 

Numbers Dates

Use DatePipe to format a date value.

 

dateObj: number = Date.now();

 

{{ dateObj | date }} // output is ‘Jun 15, 2022’

or format like

{{ dateObj | date:’medium’ }} // output is ‘Jun 15, 2022, 9:43:11 PM’

 

Conclusion

The localization of an application is an important aspect to consider when starting the design process. By developing the application to be language-independent and able to handle the intricacies of multiple languages from inception, you will save time and money.

With the continued growth of the global marketplace, most websites nowadays are prepared for localization. Angular makes this process easier by providing simple localization techniques, with simple steps to follow, you can get a fully localized application. Designing an application with localization in mind is the best practice to avoid a lot of complexity when localization is introduced at later stages of the project lifecycle.

The post Best Practices for Angular Internationalization appeared first on Globalization Partners International.

]]>
Translating your Website and Social Content for the Nigerian Market https://www.globalizationpartners.com/2022/10/19/translating-website-and-social-content-for-nigerian-market/ Wed, 19 Oct 2022 21:55:06 +0000 https://www.globalizationpartners.com/?p=36411 Nigerian Language Translation Nigeria is a linguistically diverse country; therefore, language is a solid point which must be understood when doing business in Nigeria. Understanding Nigerian languages and how they are interpreted is important, to prevent miscommunication of organizational values, and the product or service being presented. As a firm seeking to enter a foreign […]

The post Translating your Website and Social Content for the Nigerian Market appeared first on Globalization Partners International.

]]>

Nigerian Language Translation

Nigeria is a linguistically diverse country; therefore, language is a solid point which must be understood when doing business in Nigeria. Understanding Nigerian languages and how they are interpreted is important, to prevent miscommunication of organizational values, and the product or service being presented.

As a firm seeking to enter a foreign market, your main focus should be on localization. If you are localizing in Nigeria, translating your website and social content for the Nigerian market is crucial.

It is recommended to get started with Nigerian language translation for your content as soon as possible. This is because the stakes are high for Nigeria being the biggest economy in Africa.

 

Main Languages to Translate into

Nigerian Language TranslationThere are approximately 525 languages spoken in Nigeria. With such an amount of language diversity, the languages spoken by the majority are just three (3), Yoruba, Igbo, and Hausa.

·        Yoruba

This is the language spoken by the Yoruba people of Nigeria, located mostly in the South-Western part of the country.  The language is a Yoruboid language under the Volta-congo subgroup of the Niger-Congo language family.

·        Igbo

This language is mostly spoken in the South-Eastern part of Nigeria. Unlike most ethnic groups, the Igbos are the tribe most spread across different states in the country. Approximately 30 million people speak the Igbo language, it belongs to the Nuclear Igboid subgroup of the Niger-Congo language family.

Currently, English is slowly relegating the language, but most Igbo families are still upholding the tradition of speaking their native tongue to their children.

·        Hausa

Hausa is the language of the majority in the northern part of Nigeria. The estimated number of native speakers of the language is 50 million speakers. The language belongs to the West-Chadic subgroup under all Afroasiatic languages, and there are also more than 45 million people who speak Hausa as their second language.

Hausa is the most spoken language in West Africa and can be adapted for other countries with Hausa speakers. In what might be good news for middle eastern organizations who are aiming to localize their content to the Northern parts.  About one-fourth of the entire Hausa vocabulary, is adapted from Arabic.

Nigerian language translation is a tedious task. Therefore, getting the services of a Nigerian language translation company would go a long way to ensure proper understanding.

 

Statistics on Consumers in the Nigerian Market

Being the giant of Africa (with approximately 218 million people), successfully entering the Nigerian market would yield positive results. Below are some statistics that analyze how consumers behave in Nigeria.

According to a Geopoll survey and research;

Social media influences affect 27% of people to purchase a product.

Friends affect an estimated 24% of consumers.

Families prompt 23% of consumers to buy a product and ethnic groups only have a 4% influence on people’s purchasing decisions.

These findings show how influential word-of-mouth is among the top influencers, whether it comes from friends, family, or social media. Due to the high response rate for social media’s influence on preferences, social media advertising has the potential to be a successful method of market penetration.

Thus, any business that can combine these modes of reaching out to consumers will be able to boost the likelihood of its success.

 

Features for Websites Nigerian Consumers Use

Nigeria has about  32.9 million active internet users. Therefore, Creating a website that would grab the attention of visitors is an important thing to do for any business that wants to create an online presence that can generate revenue for the company in return.

After careful analysis of Nigeria’s most used social media platforms, these are a few of the features Nigerians prioritize in a website.

  • Relatability: how Facebook, Whatsapp, and Nairaland got into the Nigerian market is by making their product relatable. Coca-cola performed some specific additions to their product’s name to reflect the Nigerian culture also.
  • Quick Customer Support: like Netflix, the majority of the fintech brands employed this method to outpace their competitors, as customer response is a very important aspect.

 

Most Popular Social Channels Used by Nigerian Consumers

The wave of better internet usage is hitting Nigeria, and more people are beginning to use the internet. But while there are only 32.9 million active users, more than 90 million people are using the internet but not actively.

In 2022, Facebook users in Nigeria were far more numerous than WhatsApp users. This year, it is anticipated that there would be just over 36 million active Facebook users, or a user penetration rate of about 16.7 percent. Additionally, given its user base, Facebook could potentially advertise to almost 26 million individuals online.

YouTube is the most popular video hosting site in Nigeria. With more than 2 million videos available each day and more than 400 million views every minute.  YouTube is a popular social network among Nigerians. The number of platform users in 2022 is predicted to be close to 6.7 million.

Instagram continues to be one of the most important social media platforms in Nigeria due to its massive user base and reach. It is also one of Africa’s largest social networking sites, with more than 500 million active members per month.

This is the rank of the most used social media platforms in Nigeria;

  1. Facebook
  2. Whatsapp
  3. Instagram
  4. Facebook Manager
  5. Twitter
  6. Telegram
  7. Snapchat
  8. Tiktok
  9. Linkedin
  10. Pinterest

These social media platforms can be used to test the level of acceptance of your product by people, and it can be performed even before Nigerian language translation and interpretation.

 

Conclusion

Nigeria is a country with unique qualities and people. Tapping into the existing market can easily be done by localizing your content for the people, and employing Nigerian translation companies. This would significantly increase the acceptance rate for your product or service.

 

References

The post Translating your Website and Social Content for the Nigerian Market appeared first on Globalization Partners International.

]]>
Front-End Development Fundamentals https://www.globalizationpartners.com/2022/06/08/front-end-development-fundamentals/ Wed, 08 Jun 2022 17:45:00 +0000 https://www.globalizationpartners.com/?p=35330 Front-End development has become a popular career these days and it plays a very important role in the software development life cycle. As part of this blog, we will check the fundamentals of this career and some related concepts. Let’s take a quick look!   What is Front-End Development? In the modern software development life […]

The post Front-End Development Fundamentals appeared first on Globalization Partners International.

]]>

Front-End development has become a popular career these days and it plays a very important role in the software development life cycle. As part of this blog, we will check the fundamentals of this career and some related concepts. Let’s take a quick look!

 

What is Front-End Development?

In the modern software development life cycle, it’s common to separate client-side and server-side development. Front-End development is also referred to as client-side development, while Back-End development corresponds to the server-side.

In other words, Front-End Development is the development of the Graphical User Interface (GUI), focused on everything the user will see and interact within the software.

 

What Do We Need to Develop on the Front-End?

Front-End Development Fundamentals

If we state that Front-End web development is everything on the browser (GUI), it will then involve all that is needed for the browser to produce the user interface (UI). Some of the key elements involved on this are:

  • Hypertext Markup Language (HTML)
  • Cascading Style Sheets (CSS)
  • JavaScript
  • Web Assembly

 

A webpage includes a group of HTML elements that will define the content of the page. These HTML elements have different types. For example, there are elements to create forms, like text inputs, select lists, and buttons.

Sometimes these elements will need to be formatted to have a specific color, border, size, etc. Here is where CSS (Cascading Style Sheets) plays its part.

What about JavaScript? In simple terms, it’s a programming language that allows dynamic behaviors on website pages. By using JavaScript, we will interact with the elements and control their functions. Nobody wants to be a front-end developer without JavaScript. Not to mention that JavaScript manipulates the DOM (document object model), which makes up the base kernel for any modern front-end framework.

 

DOM Overview

The DOM (Document Object Model) is an API, DOM represents an XML or HTML document, and DOM is loaded in the browser. When a document is read through DOM, every part of document is what we call a “node”. The document represents a nodes tree, every node can have other nodes as children. Through DOM, we can programmatically interact with the document and add or remove nodes.

We can listen to changes and interactions of the node. A node is a programmatic object with properties. It is worth mentioning here that, in order to access any node, we need to use X-Path or full-path concept.

We can consider X-Path a unique address of the node, it indicates the location of the node through its parent, to the root. By giving every node an index number and level number, we will have a unique address of every node.

 

What is a Framework?

In simple terms, a software framework is a set of programmed functionalities that can be reused or extended, without the need of knowing the details of its implementation. It can be modified by adding more code segments. It provides a standard way to execute functionality and build software. It provides functionality as part of a larger software to make the development of software easier.

The framework uses shared resources, libraries, images, files, and references, and groups them in one package. This package can be modified to meet the needs of the project. The developer can also make use and take advantage of other libraries to create their own frameworks.

 

Conclusion

Building software is not just writing code; it’s a process that involves a lot of effort. That is why developers will always need a framework. When we write a large software program, we will start by building the framework with functionality that we will reuse for our software, based on existing frameworks.

We will need an abstract (generic) framework to help us in the development stage. It is time-saving and helps us focus only on our specific system functionality. Nowadays, there are several frameworks for website Front-End development. Some popular options are Angular, React, etc. They are more than just frameworks as they are also platforms ideal for developing front-end web applications.

The post Front-End Development Fundamentals appeared first on Globalization Partners International.

]]>
SOLID: Towards Powerful Software Development https://www.globalizationpartners.com/2021/11/25/solid-towards-powerful-software-development/ Thu, 25 Nov 2021 06:55:28 +0000 https://www.globalizationpartners.com/?p=33497 It is known that the software ecosystem has become pervasive. Programmers around the world grew to 23.9 million in 2019 and are expected to reach just under 29 million in 2024 according to Statista. Despite that and what developers have seen, more than 80% of applications are not utilized. In this blog, I will take […]

The post SOLID: Towards Powerful Software Development appeared first on Globalization Partners International.

]]>

It is known that the software ecosystem has become pervasive. Programmers around the world grew to 23.9 million in 2019 and are expected to reach just under 29 million in 2024 according to Statista. Despite that and what developers have seen, more than 80% of applications are not utilized. In this blog, I will take you on a simple journey of understanding SOLID principles towards powerful software development.

SOLID-Towards-Powerful-Software-Development-GPI-Blog

Software development has a simple design process: it starts with architecture, ends by testing then passes by coding. Programs are essentially lines of codes written to perform specific functionality. At some point, this functionality will need modifications to adapt and evolve. Programmers need to remember the golden rule when starting to code: that software has to be maintainable, extensible, updatable, and testable.

 

What does a “Clean Code” mean?

You can think of a “clean code” as the key that will accompany you throughout the software development. Oftentimes, developers would complain that it is difficult to read and understand the code. Whether it is too long, ambiguous words, or as if someone just made it up. It’s funny that sometimes the one who wrote the code is the one who couldn’t understand it. Soon enough, the code needs to be revised following its first release. Sometimes within a month or even a week! Many developers fell into this “rabbit hole”.

Anyone can read a book about software programming and then write executable code to run on the machine. Truth be told, a computer can still execute poorly written code, but not many developers can write human understandable code. Remember that clean code is the key to your software development journey. It will help you and other developers understand the “twists and turns” of your program without unnecessary complexity. Easy to read code means easy to change.

 

Software Maintenance

This means the ability to change any part of the code without negatively affecting another part at any point in time. This is essential to keep up with market needs and compete with the ever-changing software ecosystem.

 

Software Extension

It is the capability to add more functionalities and update any part of the base program without impairing the entire system or another part at any time. Most programs are planned for future expansions to sustain users’ demand in the long run.

 

Software testing

This means the ability to validate the functionality of any part of the program. Testing can be done alone or with a sample group of intended users. Quality assurance is obtained through a series of software testing.

 

Software quality depends on the fulfilment of certain rules and criteria according to specific design principles and patterns. It is more than just doing the job. The rule is to maintain the software functionality, while the criteria are the assessment tools to know whether the entire system functionality or in part, is achieved.

 

Who sets the design principles and patterns?

They are the programming experts who have faced and endured many coding obstacles. They have tried countless solutions and documented their knowledge to write the rules derived from the principles.

It is worth mentioning that most of the design principles and patterns are entirely based on what is known as Object-Oriented-Programming (OOP) such as Object, Inheritance, Polymorphism, Abstraction, Interface, and more.

 

What does SOLID mean?

In 2004, Michael Feathers introduced a pseudonym derived from the 5 software design principles known as:

S – Single Responsibility Principle

O – Open-Closed Principle

L – Pliskova Substitution Principle

I – Interface Segregation Principle

D – Dependency Inversion Principle

 

Responsibility Principle

Think of the code as modules. A module is a part of a program (or code) that can function alone such as procedure, method, class, etc. Responsibility of the module means to perform only the job that module is supposed to do. For example, if there is a class that gets data from the database, we can say that its responsibility is ‘reading data’. If there is a method to check the connection of a database, then we can consider that its responsibility is ‘connection check’.

To understand the Responsibility concept in more detail, let me tell you about Coupling.

Coupling

This means the depth of the relationship between the modules. When the coupling is low, the software will be stronger and easy to maintain. This concept is also known as Loose Coupling.

For example, your program needs to perform a function: to get the employees’ data from the database. We will then have three classes to perform.

  • The data model class contains employees’ identity properties like Id, Name, Phone, Email, etc.
  • The class that will fetch data from the database, we usually call it a Repository.
  • Then the class that will be called from the Application Programming Interface (API), we can call it EmployeeController.

The above three modules have coupling: Controller depends on Repository, and then Repository will need Data Model. To lose this coupling, we will need to use some design patterns like Dependency Injection and Reflection.

Cohesion

This concept is the reverse of coupling.
For example, we need a data model class of the users that will contain properties like Id, Name, Phone, Email, etc. But what if there’s a company Name and Branch as well?

To apply cohesion, the user data model has to contain only user data and create other data model class for company data. Remember, cohesion is the opposite of the coupling concept. It means that the more cohesion among the same class members, the project will be more sustainable, which is essential for software maintenance.

 

Conclusion

Software development and its ecosystem are growing fast. Anyone can read a book about software programming and then write executable code to run on the machine. Although a computer can still execute poorly written code, good developers must write human-readable code. Programmers need to remember the golden rule: that software must be maintainable, extensible, updatable, and testable. Understanding the SOLID principles and “clean code” concept will save programmers from falling into the “rabbit hole” of unnecessary revisions. Remember, successful software endures both the test of quality and the test of time.

The post SOLID: Towards Powerful Software Development appeared first on Globalization Partners International.

]]>