SlideShare a Scribd company logo
1 of 74
Download to read offline
DRUPAL 8'S MULTILINGUAL APIS:
BUILDING FOR THE ENTIRE
WORLD
penyaskito
Christian López Espínola
Drupal 8 Multilingual
Initiative contributor
Drupal 7 MULTILINGUAL
Drupal
CORE
Drupal 7 MULTILINGUAL
Drupal
CORE
LOCALE
Drupal 7 MULTILINGUAL
Drupal
CORE
L10n UP
LOCALE
m
Drupal 7 MULTILINGUAL
Drupal
CORE
L10n UP
CONTENT
TRANSLATION
LOCALE
Ü
m
Drupal 7 MULTILINGUAL
Drupal
CORE
L10n UP
CONTENT
TRANSLATION
LOCALE
I18N
Ü
m
Drupal 7 MULTILINGUAL
Drupal
CORE
L10n UP
CONTENT
TRANSLATION
LOCALE
I18N
VARIABLE
Ü
m
Drupal 7 MULTILINGUAL
Drupal
CORE
L10n UP
CONTENT
TRANSLATION
LOCALE
I18N
VARIABLE
Entity
translation
Ü
m
Drupal 7 MULTILINGUAL
Four pillars in Drupal 8
LANGUAGE
Base services for all
modules dealing
with data. Not just
multilingual.
Four pillars in Drupal 8
LANGUAGE
Base services for all
modules dealing
with data. Not just
multilingual.
INTERFACE
Interface
translation has
built-in update
feature, improved
usability.
8
Four pillars in Drupal 8
LANGUAGE
Base services for all
modules dealing
with data. Not just
multilingual.
INTERFACE
Interface
translation has
built-in update
feature, improved
usability.
CONTENT
Field translation in
built-in API for all
entities. Content
translation module
provides user
interface.
8 é
Four pillars in Drupal 8
LANGUAGE
Base services for all
modules dealing
with data. Not just
multilingual.
INTERFACE
Interface
translation has
built-in update
feature, improved
usability.
CONTENT
Field translation in
built-in API for all
entities. Content
translation module
provides user
interface.
CONFIG
Common
configuration
system handles
blocks, views, field
settings. Unified
translation.
(8 é
Four pillars in Drupal 8
LANGUAGE INTERFACE CONTENT CONFIG
(8 é
Four pillars in Drupal 8
DEALING WITH LANGUAGE
Drupal:languageManager()
LanguageManager
DEALING WITH LANGUAGE
Drupal:languageManager()
LanguageManagerConfigurableLanguageManager
With language
module enabled
DEALING WITH LANGUAGE
->getLanguages()
UND: NOT SPECIFIED
ZXX: NOT APPLICABLE
EN: ENGLISH (DEFAULT)
UND: NOT SPECIFIED
ZXX: NOT APPLICABLE
HU: HUNGARIAN
IT: ITALIAN
DEALING WITH LANGUAGE
->getLanguages()
UND: NOT SPECIFIED
ZXX: NOT APPLICABLE
HU: HUNGARIAN
IT: ITALIAN
language.entity.$langcode.yml
DEALING WITH LANGUAGE
->getLanguages()
UND: NOT SPECIFIED
ZXX: NOT APPLICABLE
HU: HUNGARIAN
IT: ITALIAN
language.entity.$langcode.yml
Locked
DEALING WITH LANGUAGE
->getLanguages()
UND: NOT SPECIFIED
ZXX: NOT APPLICABLE
HU: HUNGARIAN
IT: ITALIAN
language.entity.$langcode.yml
Locked Not locked
DEALING WITH LANGUAGE
->getLanguages()
DEALING WITH LANGUAGE
ConfigurableLanguage::

createFromLangcode(‘fr’)

->save()
DEALING WITH LANGUAGE
ConfigurableLanguage::

load(‘fr’)->delete()
DEALING WITH LANGUAGE
$languageManager

->getCurrentLanguage()
LANGUAGE INTERFACE CONTENT CONFIG
(8 é
Four pillars in Drupal 8
INTERFACE LANGUAGE
INTERFACE LANGUAGE
t(‘English text’)
INTERFACE LANGUAGE
DEPENDENCY INJECTION
LOGIC
TRANSLATION
CONFIGURATION
USER
DEPENDENCY INJECTION
LOGIC
TRANSLATION
CONFIGURATION
USER
INTERFACE LANGUAGE
t(‘English text’)
INTERFACE LANGUAGE
t(‘English text’)
$this->t(‘English text’)
INTERFACE LANGUAGE
class Foo {
use StringTranslationTrait;
…
}
INTERFACE LANGUAGE
INTERFACE LANGUAGE
$this->t(‘English text’)

->getOption(‘langcode’);
INTERFACE LANGUAGE
format_plural(…)
$this->formatPlural(…)
Javascript api
Drupal.t(…)
Drupal.formatPlural()
TWIG TEMPLATES
<input {{ attributes }}
placeholder="{{ 'Search'|trans }}" />
INPUT--SEARCH.HTML.TWIG
<div{{ author_attributes }}>
{% trans %}
Submitted by {{ author_name }} on {{ date }}
{% endtrans %}
</div>
NODE.HTML.TWIG
LOCALE.links.menu.yml
locale.translate_page:

title: 'User interface translation'

description: 'Configure the import …’

route_name: locale.translate_page

parent: system.admin_config_regional

weight: 15


locale.translate_status:

title: 'Available translation updates'

route_name: locale.translate_status

description: 'Get a status report …’

parent: system.admin_reports
LOCALE.links.menu.yml
locale.translate_page:

title: 'User interface translation'

description: 'Configure the import …’

route_name: locale.translate_page

parent: system.admin_config_regional

weight: 15


locale.translate_status:

title: 'Available translation updates'

route_name: locale.translate_status

description: 'Get a status report …’

parent: system.admin_reports
LANGUAGE INTERFACE CONTENT CONFIG
(8 é
Four pillars in Drupal 8
English to X
Node.php (Snippet)
/**
* Defines the node entity class.
*
* @ContentEntityType(
* id = "node",
* label = @Translation(“Content"),
* translatable = TRUE,
* entity_keys = {
* "id" = "nid",
* "label" = "title",
* "langcode" = "langcode",
* }
* )
contententitybase.php
(Snippet)
function baseFieldDefinitions($entity_type) {
// …
if ($entity_type->hasKey('langcode')) {

$fields[$entity_type->getKey('langcode')] =
BaseFieldDefinition::create('language')

->setLabel(new TranslatableMarkup('Language'))

->setDisplayOptions('view', [

'type' => 'hidden',

])
}
}
Node.php (Snippet)
function baseFieldDefinitions($entity_type) {
$fields = parent::baseFieldDefinitions($entity_type);
// …
$fields['title'] = BaseFieldDefinition::create('string')
->setLabel(t('Title'))
->setRequired(TRUE)
->setTranslatable(TRUE);
}
FIELDS THEMSELVES
FIELDS THEMSELVES
AUTOMATED!
MULTICOLUMN FIELD SNIPPET
* @FieldType(
* id = "image",
* column_groups = {
* "file" = {
* "label" = @Translation("File"),
* "columns" = {
* "target_id", "width", "height"
* },
* },
* "alt" = {
* "label" = @Translation("Alt"),
* "translatable" = TRUE
* },
* }
Entity language API
$node = Node::load(42);
$node = $node
->getTranslation(‘hu’);
$node = $entityRepository
->getTranslationFromContext($node);
Entity language API
$node->getUntranslated()
$node->language()
$node->getTranslationLanguages()
$node->hasTranslation(‘hu’)
$node->addTranslation(‘hu’)
$node->removeTranslation(‘hu’)
Views ALL the things
LANGUAGE INTERFACE CONTENT CONFIG
(8 é
Four pillars in Drupal 8
English to X X to Y
Intelligent
objects
config/install/system.maintenance.yml
message: '@site is currently under
maintenance. We should be back
shortly. Thank you for your
patience.'
langcode: en
Core.data_types.schema.yml
config_object:
type: mapping
mapping:
langcode:
type: string
label: 'Language code'
…
text:
type: string
label: 'Text'
translatable: true
config/schema/system.schema.yml
system.maintenance:
type: config_object
label: 'Maintenance mode'
mapping:
message:
type: text
label: 'Message to display…’
LANGCODE
TRANSLATABLE
STRING
system.maintenance.yml
message: '@site is currently under
maintenance. We should be back
shortly. Thank you for your
patience.'
langcode: en
system.maintenance.yml
message: '@site is currently under
maintenance. We should be back
shortly. Thank you for your
patience.'
langcode: en
LANGUAGES/HU/SYSTEM.…YML
system.maintenance.yml
message: '@site is currently under
maintenance. We should be back
shortly. Thank you for your
patience.'
langcode: en
LANGUAGES/HU/SYSTEM.…YML
message: '@site karbantartás alatt
áll…’
system.maintenance.yml
message: '@site is currently under
maintenance. We should be back
shortly. Thank you for your
patience.'
langcode: en
LANGUAGES/HU/SYSTEM.…YML
message: '@site karbantartás alatt
áll…’
LANGUAGES/IT/SYSTEM.…YML
system.maintenance.yml
message: '@site is currently under
maintenance. We should be back
shortly. Thank you for your
patience.'
langcode: en
LANGUAGES/HU/SYSTEM.…YML
message: '@site karbantartás alatt
áll…’
LANGUAGES/IT/SYSTEM.…YML
message: '@site …’
configuration API
$config =
Drupal::config(‘system.maintenance’);
$config->get(‘message’);
configuration API
$config =
Drupal::config(‘system.maintenance’);
$config->get(‘message’);
OVERRIDES
APPLY AS
APPROPRIATE
configuration API
$manager = Drupal::languageManager();
$hu = $manager->getLanguage('hu');
$original = $manager-
>getConfigOverrideLanguage();
$manager->setConfigOverrideLanguage($hu);
$config = Drupal::config(‘system.maintenance');
// …
$manager->setConfigOverrideLanguage($original);
configuration API
Drupal::config(‘system.maintenance’);
Drupal::configFactory()-
>getEditable(‘system.maintenance’);
Drupal::languageManager()
->getLanguageConfigOverride
('hu', 'system.maintenance')
->set('message', 'Karbantartás...')
->save();
OVERRIDES
APPLY AS
APPROPRIATE
NO OVERRIDES
APPLY
THE
OVERRIDE
ITSELF
LANGUAGE INTERFACE CONTENT CONFIG
(8 é
Four pillars in Drupal 8
English to X X to Y
Intelligent
objects
X to Y
Dumb
arrays
Gábor hojtsy
Gábor Hojtsy
Drupal 8 Multilingual
Initiative lead
CONTRIBUTION SPRINTS
DOWNSTAIRS
:-)
DRUPAL 8'S MULTILINGUAL APIS:
BUILDING FOR THE ENTIRE
WORLD

More Related Content

What's hot

Scalable and Flexible Machine Learning With Scala @ LinkedIn
Scalable and Flexible Machine Learning With Scala @ LinkedInScalable and Flexible Machine Learning With Scala @ LinkedIn
Scalable and Flexible Machine Learning With Scala @ LinkedInVitaly Gordon
 
Drupal 8 Multilingual - what to look forward to
Drupal 8 Multilingual - what to look forward toDrupal 8 Multilingual - what to look forward to
Drupal 8 Multilingual - what to look forward toGábor Hojtsy
 
08 Advanced PHP #burningkeyboards
08 Advanced PHP #burningkeyboards08 Advanced PHP #burningkeyboards
08 Advanced PHP #burningkeyboardsDenis Ristic
 
Introduction to perl_ a scripting language
Introduction to perl_ a scripting languageIntroduction to perl_ a scripting language
Introduction to perl_ a scripting languageVamshi Santhapuri
 
Shell Scripting Tutorial | Edureka
Shell Scripting Tutorial | EdurekaShell Scripting Tutorial | Edureka
Shell Scripting Tutorial | EdurekaEdureka!
 
The state of DI in PHP - phpbnl12
The state of DI in PHP - phpbnl12The state of DI in PHP - phpbnl12
The state of DI in PHP - phpbnl12Stephan Hochdörfer
 
Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013Prof. Wim Van Criekinge
 
Modern Perl Catch-Up
Modern Perl Catch-UpModern Perl Catch-Up
Modern Perl Catch-UpDave Cross
 
Boost your productivity with Clojure REPL
Boost your productivity with Clojure REPLBoost your productivity with Clojure REPL
Boost your productivity with Clojure REPLKent Ohashi
 
The ruby on rails i18n core api-Neeraj Kumar
The ruby on rails i18n core api-Neeraj KumarThe ruby on rails i18n core api-Neeraj Kumar
The ruby on rails i18n core api-Neeraj KumarThoughtWorks
 
CLI, the other SAPI
CLI, the other SAPICLI, the other SAPI
CLI, the other SAPICombell NV
 
Perl courseparti
Perl coursepartiPerl courseparti
Perl coursepartiernlow
 

What's hot (20)

Scalable and Flexible Machine Learning With Scala @ LinkedIn
Scalable and Flexible Machine Learning With Scala @ LinkedInScalable and Flexible Machine Learning With Scala @ LinkedIn
Scalable and Flexible Machine Learning With Scala @ LinkedIn
 
Drupal 8 Multilingual - what to look forward to
Drupal 8 Multilingual - what to look forward toDrupal 8 Multilingual - what to look forward to
Drupal 8 Multilingual - what to look forward to
 
Perl tutorial
Perl tutorialPerl tutorial
Perl tutorial
 
08 Advanced PHP #burningkeyboards
08 Advanced PHP #burningkeyboards08 Advanced PHP #burningkeyboards
08 Advanced PHP #burningkeyboards
 
Perl bhargav
Perl bhargavPerl bhargav
Perl bhargav
 
Perl Programming - 02 Regular Expression
Perl Programming - 02 Regular ExpressionPerl Programming - 02 Regular Expression
Perl Programming - 02 Regular Expression
 
Perl Introduction
Perl IntroductionPerl Introduction
Perl Introduction
 
Introduction to perl_ a scripting language
Introduction to perl_ a scripting languageIntroduction to perl_ a scripting language
Introduction to perl_ a scripting language
 
Shell Scripting Tutorial | Edureka
Shell Scripting Tutorial | EdurekaShell Scripting Tutorial | Edureka
Shell Scripting Tutorial | Edureka
 
Intro to Perl and Bioperl
Intro to Perl and BioperlIntro to Perl and Bioperl
Intro to Perl and Bioperl
 
The state of DI in PHP - phpbnl12
The state of DI in PHP - phpbnl12The state of DI in PHP - phpbnl12
The state of DI in PHP - phpbnl12
 
Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013
 
Php mysql
Php mysqlPhp mysql
Php mysql
 
Introduction to Perl and BioPerl
Introduction to Perl and BioPerlIntroduction to Perl and BioPerl
Introduction to Perl and BioPerl
 
Modern Perl Catch-Up
Modern Perl Catch-UpModern Perl Catch-Up
Modern Perl Catch-Up
 
Boost your productivity with Clojure REPL
Boost your productivity with Clojure REPLBoost your productivity with Clojure REPL
Boost your productivity with Clojure REPL
 
The ruby on rails i18n core api-Neeraj Kumar
The ruby on rails i18n core api-Neeraj KumarThe ruby on rails i18n core api-Neeraj Kumar
The ruby on rails i18n core api-Neeraj Kumar
 
CLI, the other SAPI
CLI, the other SAPICLI, the other SAPI
CLI, the other SAPI
 
Perl courseparti
Perl coursepartiPerl courseparti
Perl courseparti
 
PHP Web Programming
PHP Web ProgrammingPHP Web Programming
PHP Web Programming
 

Similar to Drupal 8's Multilingual APIs: Building for the Entire World

A whole new world for multilingual sites in Drupal 8 - jam's Drupal Camp session
A whole new world for multilingual sites in Drupal 8 - jam's Drupal Camp sessionA whole new world for multilingual sites in Drupal 8 - jam's Drupal Camp session
A whole new world for multilingual sites in Drupal 8 - jam's Drupal Camp sessionJeffrey McGuire
 
Multilingual Improvements for Drupal 8
Multilingual Improvements for Drupal 8Multilingual Improvements for Drupal 8
Multilingual Improvements for Drupal 8Acquia
 
Massively Parallel Processing with Procedural Python (PyData London 2014)
Massively Parallel Processing with Procedural Python (PyData London 2014)Massively Parallel Processing with Procedural Python (PyData London 2014)
Massively Parallel Processing with Procedural Python (PyData London 2014)Ian Huston
 
Massively Parallel Process with Prodedural Python by Ian Huston
Massively Parallel Process with Prodedural Python by Ian HustonMassively Parallel Process with Prodedural Python by Ian Huston
Massively Parallel Process with Prodedural Python by Ian HustonPyData
 
Drupaljam xl 2019 presentation multilingualism makes better programmers
Drupaljam xl 2019 presentation   multilingualism makes better programmersDrupaljam xl 2019 presentation   multilingualism makes better programmers
Drupaljam xl 2019 presentation multilingualism makes better programmersAlexander Varwijk
 
WordPress Plugin Localization
WordPress Plugin LocalizationWordPress Plugin Localization
WordPress Plugin LocalizationRonald Huereca
 
Drupal 8 customized checkout system
Drupal 8 customized checkout systemDrupal 8 customized checkout system
Drupal 8 customized checkout systemAhmad Hassan
 
Docopt, beautiful command-line options for R, user2014
Docopt, beautiful command-line options for R,  user2014Docopt, beautiful command-line options for R,  user2014
Docopt, beautiful command-line options for R, user2014Edwin de Jonge
 
Javascript fundamentals for php developers
Javascript fundamentals for php developersJavascript fundamentals for php developers
Javascript fundamentals for php developersChris Ramakers
 
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Kacper Gunia
 
What we can learn from Rebol?
What we can learn from Rebol?What we can learn from Rebol?
What we can learn from Rebol?lichtkind
 
Parler en plusieurs langues avec Drupal - Drupalcamp Paris 2013
Parler en plusieurs langues avec Drupal - Drupalcamp Paris 2013Parler en plusieurs langues avec Drupal - Drupalcamp Paris 2013
Parler en plusieurs langues avec Drupal - Drupalcamp Paris 2013🚀 Bogdan Herea
 
Intro to OOP and new features in PHP 5.3
Intro to OOP and new features in PHP 5.3Intro to OOP and new features in PHP 5.3
Intro to OOP and new features in PHP 5.3Adam Culp
 
PHP And Web Services: Perfect Partners
PHP And Web Services: Perfect PartnersPHP And Web Services: Perfect Partners
PHP And Web Services: Perfect PartnersLorna Mitchell
 
Giới thiệu PHP 7
Giới thiệu PHP 7Giới thiệu PHP 7
Giới thiệu PHP 7ZendVN
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesEelco Visser
 

Similar to Drupal 8's Multilingual APIs: Building for the Entire World (20)

A whole new world for multilingual sites in Drupal 8 - jam's Drupal Camp session
A whole new world for multilingual sites in Drupal 8 - jam's Drupal Camp sessionA whole new world for multilingual sites in Drupal 8 - jam's Drupal Camp session
A whole new world for multilingual sites in Drupal 8 - jam's Drupal Camp session
 
Multilingual Improvements for Drupal 8
Multilingual Improvements for Drupal 8Multilingual Improvements for Drupal 8
Multilingual Improvements for Drupal 8
 
Massively Parallel Processing with Procedural Python (PyData London 2014)
Massively Parallel Processing with Procedural Python (PyData London 2014)Massively Parallel Processing with Procedural Python (PyData London 2014)
Massively Parallel Processing with Procedural Python (PyData London 2014)
 
The state of DI - DPC12
The state of DI - DPC12The state of DI - DPC12
The state of DI - DPC12
 
Massively Parallel Process with Prodedural Python by Ian Huston
Massively Parallel Process with Prodedural Python by Ian HustonMassively Parallel Process with Prodedural Python by Ian Huston
Massively Parallel Process with Prodedural Python by Ian Huston
 
Drupaljam xl 2019 presentation multilingualism makes better programmers
Drupaljam xl 2019 presentation   multilingualism makes better programmersDrupaljam xl 2019 presentation   multilingualism makes better programmers
Drupaljam xl 2019 presentation multilingualism makes better programmers
 
Building Custom PHP Extensions
Building Custom PHP ExtensionsBuilding Custom PHP Extensions
Building Custom PHP Extensions
 
WordPress Plugin Localization
WordPress Plugin LocalizationWordPress Plugin Localization
WordPress Plugin Localization
 
Drupal 8 customized checkout system
Drupal 8 customized checkout systemDrupal 8 customized checkout system
Drupal 8 customized checkout system
 
Docopt, beautiful command-line options for R, user2014
Docopt, beautiful command-line options for R,  user2014Docopt, beautiful command-line options for R,  user2014
Docopt, beautiful command-line options for R, user2014
 
Tml for Laravel
Tml for LaravelTml for Laravel
Tml for Laravel
 
Javascript fundamentals for php developers
Javascript fundamentals for php developersJavascript fundamentals for php developers
Javascript fundamentals for php developers
 
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
 
What we can learn from Rebol?
What we can learn from Rebol?What we can learn from Rebol?
What we can learn from Rebol?
 
Multilingual drupal 7
Multilingual drupal 7Multilingual drupal 7
Multilingual drupal 7
 
Parler en plusieurs langues avec Drupal - Drupalcamp Paris 2013
Parler en plusieurs langues avec Drupal - Drupalcamp Paris 2013Parler en plusieurs langues avec Drupal - Drupalcamp Paris 2013
Parler en plusieurs langues avec Drupal - Drupalcamp Paris 2013
 
Intro to OOP and new features in PHP 5.3
Intro to OOP and new features in PHP 5.3Intro to OOP and new features in PHP 5.3
Intro to OOP and new features in PHP 5.3
 
PHP And Web Services: Perfect Partners
PHP And Web Services: Perfect PartnersPHP And Web Services: Perfect Partners
PHP And Web Services: Perfect Partners
 
Giới thiệu PHP 7
Giới thiệu PHP 7Giới thiệu PHP 7
Giới thiệu PHP 7
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific Languages
 

More from Christian López Espínola

El libro de jugadas de phil jackson: triángulo ofensivo y otras tácticas de...
El libro de jugadas de phil jackson: triángulo ofensivo y otras tácticas de...El libro de jugadas de phil jackson: triángulo ofensivo y otras tácticas de...
El libro de jugadas de phil jackson: triángulo ofensivo y otras tácticas de...Christian López Espínola
 
Translate in Drupal 8: A New Era in Translation Has Begun
Translate in Drupal 8: A New Era in Translation Has BegunTranslate in Drupal 8: A New Era in Translation Has Begun
Translate in Drupal 8: A New Era in Translation Has BegunChristian López Espínola
 
Translate in Drupal 8: A New Era in Translation Has Begun
Translate in Drupal 8: A New Era in Translation Has BegunTranslate in Drupal 8: A New Era in Translation Has Begun
Translate in Drupal 8: A New Era in Translation Has BegunChristian López Espínola
 
Multilenguaje en Drupal 8 y la iniciativa D8MI
Multilenguaje en Drupal 8 y la iniciativa D8MIMultilenguaje en Drupal 8 y la iniciativa D8MI
Multilenguaje en Drupal 8 y la iniciativa D8MIChristian López Espínola
 
Aprovechamiento de las redes sociales y las NNTT para la acción juvenil y si...
 Aprovechamiento de las redes sociales y las NNTT para la acción juvenil y si... Aprovechamiento de las redes sociales y las NNTT para la acción juvenil y si...
Aprovechamiento de las redes sociales y las NNTT para la acción juvenil y si...Christian López Espínola
 

More from Christian López Espínola (15)

El libro de jugadas de phil jackson: triángulo ofensivo y otras tácticas de...
El libro de jugadas de phil jackson: triángulo ofensivo y otras tácticas de...El libro de jugadas de phil jackson: triángulo ofensivo y otras tácticas de...
El libro de jugadas de phil jackson: triángulo ofensivo y otras tácticas de...
 
Translate in Drupal 8: A New Era in Translation Has Begun
Translate in Drupal 8: A New Era in Translation Has BegunTranslate in Drupal 8: A New Era in Translation Has Begun
Translate in Drupal 8: A New Era in Translation Has Begun
 
Translate in Drupal 8: A New Era in Translation Has Begun
Translate in Drupal 8: A New Era in Translation Has BegunTranslate in Drupal 8: A New Era in Translation Has Begun
Translate in Drupal 8: A New Era in Translation Has Begun
 
Multilenguaje en Drupal 8 y la iniciativa D8MI
Multilenguaje en Drupal 8 y la iniciativa D8MIMultilenguaje en Drupal 8 y la iniciativa D8MI
Multilenguaje en Drupal 8 y la iniciativa D8MI
 
Drupal 8 FFM Sprint introduction
Drupal 8 FFM Sprint introductionDrupal 8 FFM Sprint introduction
Drupal 8 FFM Sprint introduction
 
Multilenguaje en Drupal 8
Multilenguaje en Drupal 8Multilenguaje en Drupal 8
Multilenguaje en Drupal 8
 
Contribuir en Drupal: Por dónde empiezo?
Contribuir en Drupal: Por dónde empiezo?Contribuir en Drupal: Por dónde empiezo?
Contribuir en Drupal: Por dónde empiezo?
 
Some principles from The Pragmatic Programmer
Some principles from The Pragmatic ProgrammerSome principles from The Pragmatic Programmer
Some principles from The Pragmatic Programmer
 
Contributing to drupal
Contributing to drupalContributing to drupal
Contributing to drupal
 
Aprovechamiento de las redes sociales y las NNTT para la acción juvenil y si...
 Aprovechamiento de las redes sociales y las NNTT para la acción juvenil y si... Aprovechamiento de las redes sociales y las NNTT para la acción juvenil y si...
Aprovechamiento de las redes sociales y las NNTT para la acción juvenil y si...
 
Identidad digital
Identidad digitalIdentidad digital
Identidad digital
 
Emergya: Modelos de Negocio de Software Libre
Emergya: Modelos de Negocio de Software LibreEmergya: Modelos de Negocio de Software Libre
Emergya: Modelos de Negocio de Software Libre
 
IEEE ISBC Universidad Sevilla SB
IEEE ISBC Universidad Sevilla SBIEEE ISBC Universidad Sevilla SB
IEEE ISBC Universidad Sevilla SB
 
Sweetter 3
Sweetter 3Sweetter 3
Sweetter 3
 
Charla LaTeX
Charla LaTeXCharla LaTeX
Charla LaTeX
 

Recently uploaded

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 

Recently uploaded (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 

Drupal 8's Multilingual APIs: Building for the Entire World