SlideShare a Scribd company logo
1 of 27
Download to read offline
IBM
Wednesday, March 8th 2017
GitHub: hickeyma & GitHub: shikhasriva
Localizing Kibana for the Global Language
Landscape
Martin Hickey, Advisory Software Engineer & Shikha Srivastava,
Senior Technical Staff Member
KIBANA CURRENTLY
SUPPORTS ONLY THE
ENGLISH LANGUAGE
KIBANA GLOBALIZATION IS THE PROCESS OF ENABLING KIBANA TO SUPPORT
OTHER LANGUAGES IN ADDITION TO ENGLISH
Nelson Mandela
{ }
If you talk to [someone] in a language
[he or she] understands, that goes to
[the person’s] head. If you talk to
[somebody] in [his or her] language, that
goes to [the] heart.
• Let’s briefly touch on the beginning
• Discuss creativity and solution
• Who will be involved?
• Where are we now and where to next?
• Finishing up!
How’s it Going to Roll?
4
Background
• Globalization of its products is very important to IBM and its customers
• IBM have offerings which leverage the Elastic stack
• Identified globalization of Kibana as a core enhancement in 2016
• Empowered its engineers to become contributors in the Elastic open-source community
• The journey began….
Background
6
Design
• Goal: Translation readiness on the Kibana dashboard
• Scope: Enabling of text on the Kibana views; capability delivered in a phased approach
• Initial Design: Angular globalization framework (‘angular-translate’) consumes the translations directly
• Re-think: Agnostic service which is consumed rather than the translations directly
• Result: Integrated framework for federation of multiple globalization frameworks:
https://github.com/elastic/kibana/issues/6515
• The advantages:
• Independent of the underlying UI frameworks and the subsequent globalization frameworks
• Facilitates a plug-and-play approach for language packs (i.e. no coding required)
Design Journey
8
9
Architecture Diagram
en
translations
de Kibana plugin
es-mx Kibana plugin
<kibana_root>/plugins
de
translations
es-mx
translations
……..
……..
i18n
Client Side
Server Side
Requested
locale
translations
accept-language
header
Register translations
@server startup
Create
Drop
Initial request
Load
Angular-
translateLoad
Render
Stakeholders
• The stakeholders of Kibana globalization are as follows
• those that want to enable translations on existing Kibana AngularJS views
• those that want to contribute language packs to Kibana
• those that want to create a new Kibana plugin
Stakeholders
11
• Translations are enabled on a Kibana plugin basis; for example, kibana, timelion, status_page
• Create default translation file (‘translations/en.json’) if it doesn’t exist
• Pick AngularJS view(s); for example, index pattern page (‘_create.html’, ‘_edit.html’)
• Replace translation text with translation keys/IDs
• Extract translation text to translation file
• If it does not exist for the plugin, add ‘translation’ plugin extension (attribute to ‘uiExports’ object)
• Refresh view
• Refer to Kibana documentation for more details
Enable Translations on Existing Views
12
13
Before (HTML):
<h1>Configure an index pattern</h1>
In order to use Kibana you must ….
………….
<kbn-info info="This field will be used to filter ..."></kbn-
info>
After (HTML):
<h1 translate=“KIBANA-CONFIGURE_INDEX_PATTERN”></h1>
<p translate=“KIBANA-MUST_CONFIGURE_INDEX_PATTERN”></p>
……………
<kbn-info info=“
{{ 'KIBANA-FIELD_FILTER_EVENTS_GLOBAL_TIME' | translate
}}"></kbn-info>
Enable Translations on Existing Views (Cont’d)
14
Before (JS):
notify.error('Could not locate any indices .....');
After (JS):
notify.error($translate.instant('KIBANA-
NO_INDICES_MATCHING_PATTERN'));
Enable Translations on Existing Views (Cont’d)
15
en.json:
{
"KIBANA-CONFIGURE_INDEX_PATTERN": "Configure an index pattern",
"KIBANA-MUST_CONFIGURE_INDEX_PATTERN": "In order to use Kibana you
"KIBANA-FIELD_FILTER_EVENTS_GLOBAL_TIME" : "This field will be used
"KIBANA-NO_INDICES_MATCHING_PATTERN": "Could not locate any indices
}
Enable Translations on Existing Views (Cont’d)
16
index.js:
return new kibana.Plugin({
id: 'kibana', …..
uiExports {
translations: [
resolve(__dirname,
'./translations/en.json')
], ….
}
});
Enable Translations on Existing Views (Cont’d)
• Create a Kibana plugin for the translation(s) using the “Kibana Plugin Yeoman Generator”
• Replace the template translation file (‘translations/es.json’) with the language translation file (for example,
‘mt.json’)
• Update ‘translations’ attribute in ‘uiExports’ to the path of the new translations file(s)
• Translate file in a JSON editor
• Add plugin to the Kibana ‘plugins’ path
• Restart Kibana
• Refer to Kibana documentation for more details
Contributing Language Packs
17
18
es.json:
{
"KIBANA-CONFIGURE_INDEX_PATTERN": " Configurar un patrón de índice
"KIBANA-MUST_CONFIGURE_INDEX_PATTERN": " Para usar Kibana debes…“
}
Contributing Language Packs (Cont’d)
19
index.js:
return new kibana.Plugin({
id: 'kibana', …..
uiExports {
translations: [
resolve(__dirname,
'./translations/es.json')
], ….
}
});
Contributing Language Packs (Cont’d)
20
Kibana Examples Showing Different Languages
• All plugins created using the “Kibana Plugin Yeoman Generator” will be enabled for translations
• If plugin is created manually, refer to “Enable Translations on Existing Views” section
• As you develop the plugin, remember to:
• Add the translation IDs to the views
• Add the corresponding translation IDs and text to the default translation file (‘translations/en.json’)
• Refer to Kibana document for more details
Creating New Kibana Plugins
21
Current Status
• “Phase 1” merged!
• “Phase 1” delivered:
• Internationalization (i18n) engine
• Translation enabled for Kibana loading
• Tool for verifying translations during build phase
What’s Implemented
23
Roadmap
24
PHASE DESCRIPTION STATUS PR
1
Add integrated framework (i18n engine)
Done
https://github.com/elastic/kibana/pull/7545
2 Integrate AngularJS globalization In progress https://github.com/elastic/kibana/pull/8766
3
Enable translations on existing
AngularJS views
TODO TODO
4 Contribute language packs TODO TODO
Let’s Wrap!
• Good progress, thanks to all involved so far
• Infrastructure nearly there for language packs
• “Phase 3”, enables translations to existing Kibana AngularJS views
• “Phase 4”, contributing the languages packs
Conclusion
26
27
More Questions?
Visit us at the AMA

More Related Content

What's hot

BPAA PD Day: BiblioShare
BPAA PD Day: BiblioShareBPAA PD Day: BiblioShare
BPAA PD Day: BiblioShare
BookNet Canada
 
BPAA PD Day: BiblioShare Webform
BPAA PD Day: BiblioShare WebformBPAA PD Day: BiblioShare Webform
BPAA PD Day: BiblioShare Webform
BookNet Canada
 

What's hot (19)

From PHP monolith to polyglot microservices
From PHP monolith to polyglot microservicesFrom PHP monolith to polyglot microservices
From PHP monolith to polyglot microservices
 
The great migration embracing serverless first
The great migration  embracing serverless first The great migration  embracing serverless first
The great migration embracing serverless first
 
Encrypting Kafka messages at rest to secure applications | Robert Barnes, Has...
Encrypting Kafka messages at rest to secure applications | Robert Barnes, Has...Encrypting Kafka messages at rest to secure applications | Robert Barnes, Has...
Encrypting Kafka messages at rest to secure applications | Robert Barnes, Has...
 
Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発
Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発
Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発
 
BPAA PD Day: BiblioShare
BPAA PD Day: BiblioShareBPAA PD Day: BiblioShare
BPAA PD Day: BiblioShare
 
Ajax Zf
Ajax ZfAjax Zf
Ajax Zf
 
BPAA PD Day: BiblioShare Webform
BPAA PD Day: BiblioShare WebformBPAA PD Day: BiblioShare Webform
BPAA PD Day: BiblioShare Webform
 
API Gateway report
API Gateway reportAPI Gateway report
API Gateway report
 
Meet MariaDB
Meet MariaDBMeet MariaDB
Meet MariaDB
 
Get ready for alfresco 4
Get ready for alfresco 4Get ready for alfresco 4
Get ready for alfresco 4
 
Deploying PHP Application Using Bitbucket Pipelines
Deploying PHP Application Using Bitbucket PipelinesDeploying PHP Application Using Bitbucket Pipelines
Deploying PHP Application Using Bitbucket Pipelines
 
eGrove Systems - "SOLR" An Apache Product
eGrove Systems - "SOLR" An Apache ProducteGrove Systems - "SOLR" An Apache Product
eGrove Systems - "SOLR" An Apache Product
 
Portal & Content Services Revisited: Alfresco-Liferay Integration
Portal & Content Services Revisited: Alfresco-Liferay IntegrationPortal & Content Services Revisited: Alfresco-Liferay Integration
Portal & Content Services Revisited: Alfresco-Liferay Integration
 
Openshift service broker and catalog ocp-meetup july 2018
Openshift service broker and catalog  ocp-meetup july 2018Openshift service broker and catalog  ocp-meetup july 2018
Openshift service broker and catalog ocp-meetup july 2018
 
«The Grail: React based Isomorph apps framework»​
«The Grail: React based Isomorph apps framework»​«The Grail: React based Isomorph apps framework»​
«The Grail: React based Isomorph apps framework»​
 
eGrove Systems Review - "Features of Magento 2.0"
eGrove Systems Review - "Features of Magento 2.0"eGrove Systems Review - "Features of Magento 2.0"
eGrove Systems Review - "Features of Magento 2.0"
 
«I knew there had to be a better way to build mobile app»​
«I knew there had to be a better way to build mobile app»​«I knew there had to be a better way to build mobile app»​
«I knew there had to be a better way to build mobile app»​
 
ESB integration for node.js
ESB integration for node.js ESB integration for node.js
ESB integration for node.js
 
A Modern C++ Kafka API | Kenneth Jia, Morgan Stanley
A Modern C++ Kafka API | Kenneth Jia, Morgan StanleyA Modern C++ Kafka API | Kenneth Jia, Morgan Stanley
A Modern C++ Kafka API | Kenneth Jia, Morgan Stanley
 

Similar to Localizing kibana for the global language landscape

I18N refactoring support and the TapiJI online translator
I18N refactoring support and the TapiJI online translatorI18N refactoring support and the TapiJI online translator
I18N refactoring support and the TapiJI online translator
mreiterer
 

Similar to Localizing kibana for the global language landscape (20)

Kibana globalization at the RTP meetup
Kibana globalization at the RTP meetupKibana globalization at the RTP meetup
Kibana globalization at the RTP meetup
 
Angular_I18N.pptx
Angular_I18N.pptxAngular_I18N.pptx
Angular_I18N.pptx
 
Kubernetes for Docker Users
Kubernetes for Docker UsersKubernetes for Docker Users
Kubernetes for Docker Users
 
Exploring Kibana Dashboards: How we are using them
Exploring Kibana Dashboards: How we are using themExploring Kibana Dashboards: How we are using them
Exploring Kibana Dashboards: How we are using them
 
Intro to Knative
Intro to KnativeIntro to Knative
Intro to Knative
 
Visualizing large datasets with elasticsearch and kibana
Visualizing large datasets with elasticsearch and kibanaVisualizing large datasets with elasticsearch and kibana
Visualizing large datasets with elasticsearch and kibana
 
Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...
Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...
Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...
 
Easy contributable internationalization process with Sphinx @ pyconsg2015
Easy contributable internationalization process with Sphinx @ pyconsg2015Easy contributable internationalization process with Sphinx @ pyconsg2015
Easy contributable internationalization process with Sphinx @ pyconsg2015
 
The Bonsai Asset Index : A new way for the community to share resources
The Bonsai Asset Index : A new way for the community to share resourcesThe Bonsai Asset Index : A new way for the community to share resources
The Bonsai Asset Index : A new way for the community to share resources
 
Integration Microservices
Integration MicroservicesIntegration Microservices
Integration Microservices
 
Easy contributable internationalization process with Sphinx @ PyCon APAC 2016
Easy contributable internationalization process with Sphinx @ PyCon APAC 2016Easy contributable internationalization process with Sphinx @ PyCon APAC 2016
Easy contributable internationalization process with Sphinx @ PyCon APAC 2016
 
Introduction to SharePoint 2013 WCM-DM-ECM for Business Users and Developers
Introduction to SharePoint 2013 WCM-DM-ECM for Business Users and DevelopersIntroduction to SharePoint 2013 WCM-DM-ECM for Business Users and Developers
Introduction to SharePoint 2013 WCM-DM-ECM for Business Users and Developers
 
Function as a Service with Knative and riff
Function as a Service with Knative and riffFunction as a Service with Knative and riff
Function as a Service with Knative and riff
 
I18N refactoring support and the TapiJI online translator
I18N refactoring support and the TapiJI online translatorI18N refactoring support and the TapiJI online translator
I18N refactoring support and the TapiJI online translator
 
#NoFrameworks - Scaling the biggest open-source software
#NoFrameworks - Scaling the biggest open-source software#NoFrameworks - Scaling the biggest open-source software
#NoFrameworks - Scaling the biggest open-source software
 
Forced Evolution: Shopify's Journey to Kubernetes
Forced Evolution: Shopify's Journey to KubernetesForced Evolution: Shopify's Journey to Kubernetes
Forced Evolution: Shopify's Journey to Kubernetes
 
Easy contributable internationalization process with Sphinx @ pyconmy2015
Easy contributable internationalization process with Sphinx @ pyconmy2015Easy contributable internationalization process with Sphinx @ pyconmy2015
Easy contributable internationalization process with Sphinx @ pyconmy2015
 
The Latest Status of CE Workgroup Shared Embedded Linux Distribution Project
 The Latest Status of CE Workgroup Shared Embedded Linux Distribution Project The Latest Status of CE Workgroup Shared Embedded Linux Distribution Project
The Latest Status of CE Workgroup Shared Embedded Linux Distribution Project
 
Developing Secure Scala Applications With Fortify For Scala
Developing Secure Scala Applications With Fortify For ScalaDeveloping Secure Scala Applications With Fortify For Scala
Developing Secure Scala Applications With Fortify For Scala
 
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3
 

More from Shikha Srivastava

How kubernetes operators can rescue dev secops in midst of a pandemic updated
How kubernetes operators can rescue dev secops in midst of a pandemic updatedHow kubernetes operators can rescue dev secops in midst of a pandemic updated
How kubernetes operators can rescue dev secops in midst of a pandemic updated
Shikha Srivastava
 

More from Shikha Srivastava (15)

ADDO_2022_SRE Architectural Patterns_Nov10.pptx
ADDO_2022_SRE Architectural Patterns_Nov10.pptxADDO_2022_SRE Architectural Patterns_Nov10.pptx
ADDO_2022_SRE Architectural Patterns_Nov10.pptx
 
DevOpsEnterpriseSummit_SaaSAnd DisasterRecovery.pptx
DevOpsEnterpriseSummit_SaaSAnd DisasterRecovery.pptxDevOpsEnterpriseSummit_SaaSAnd DisasterRecovery.pptx
DevOpsEnterpriseSummit_SaaSAnd DisasterRecovery.pptx
 
WITS 2022_ModernizationAndInfrastructureAsCode.pptx
WITS 2022_ModernizationAndInfrastructureAsCode.pptxWITS 2022_ModernizationAndInfrastructureAsCode.pptx
WITS 2022_ModernizationAndInfrastructureAsCode.pptx
 
Using Cloud-Native and SRE Principles to Achieve Speed and Resiliency
Using Cloud-Native and SRE Principles to Achieve Speed and ResiliencyUsing Cloud-Native and SRE Principles to Achieve Speed and Resiliency
Using Cloud-Native and SRE Principles to Achieve Speed and Resiliency
 
How kubernetes operators can rescue dev secops in midst of a pandemic updated
How kubernetes operators can rescue dev secops in midst of a pandemic updatedHow kubernetes operators can rescue dev secops in midst of a pandemic updated
How kubernetes operators can rescue dev secops in midst of a pandemic updated
 
Managing integration in a multi cluster world
Managing integration in a multi cluster worldManaging integration in a multi cluster world
Managing integration in a multi cluster world
 
Helm summit 2019_handling large number of charts_sept 10
Helm summit 2019_handling large number of charts_sept 10Helm summit 2019_handling large number of charts_sept 10
Helm summit 2019_handling large number of charts_sept 10
 
Kube con china_2019_7 missing factors for your production-quality 12-factor apps
Kube con china_2019_7 missing factors for your production-quality 12-factor appsKube con china_2019_7 missing factors for your production-quality 12-factor apps
Kube con china_2019_7 missing factors for your production-quality 12-factor apps
 
Why Ibm cloud private
Why Ibm cloud private Why Ibm cloud private
Why Ibm cloud private
 
Bluemix application monitoring
Bluemix application monitoring Bluemix application monitoring
Bluemix application monitoring
 
Modernization: Moving workloads to cloud
Modernization: Moving workloads to cloud Modernization: Moving workloads to cloud
Modernization: Moving workloads to cloud
 
From Containerized Application to Secure and Scaling With Kubernetes
From Containerized Application to Secure and Scaling With KubernetesFrom Containerized Application to Secure and Scaling With Kubernetes
From Containerized Application to Secure and Scaling With Kubernetes
 
Developing and Deploying Microservices to IBM Cloud Private
Developing and Deploying Microservices to IBM Cloud PrivateDeveloping and Deploying Microservices to IBM Cloud Private
Developing and Deploying Microservices to IBM Cloud Private
 
4789 creating production-ready, secure and scalable applications in ibm cloud...
4789 creating production-ready, secure and scalable applications in ibm cloud...4789 creating production-ready, secure and scalable applications in ibm cloud...
4789 creating production-ready, secure and scalable applications in ibm cloud...
 
Panelist at women breakfast discussing latest technology trends at Elasticon
Panelist at women breakfast discussing latest technology trends at Elasticon Panelist at women breakfast discussing latest technology trends at Elasticon
Panelist at women breakfast discussing latest technology trends at Elasticon
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Recently uploaded (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Localizing kibana for the global language landscape

  • 1. IBM Wednesday, March 8th 2017 GitHub: hickeyma & GitHub: shikhasriva Localizing Kibana for the Global Language Landscape Martin Hickey, Advisory Software Engineer & Shikha Srivastava, Senior Technical Staff Member
  • 2. KIBANA CURRENTLY SUPPORTS ONLY THE ENGLISH LANGUAGE KIBANA GLOBALIZATION IS THE PROCESS OF ENABLING KIBANA TO SUPPORT OTHER LANGUAGES IN ADDITION TO ENGLISH
  • 3. Nelson Mandela { } If you talk to [someone] in a language [he or she] understands, that goes to [the person’s] head. If you talk to [somebody] in [his or her] language, that goes to [the] heart.
  • 4. • Let’s briefly touch on the beginning • Discuss creativity and solution • Who will be involved? • Where are we now and where to next? • Finishing up! How’s it Going to Roll? 4
  • 6. • Globalization of its products is very important to IBM and its customers • IBM have offerings which leverage the Elastic stack • Identified globalization of Kibana as a core enhancement in 2016 • Empowered its engineers to become contributors in the Elastic open-source community • The journey began…. Background 6
  • 8. • Goal: Translation readiness on the Kibana dashboard • Scope: Enabling of text on the Kibana views; capability delivered in a phased approach • Initial Design: Angular globalization framework (‘angular-translate’) consumes the translations directly • Re-think: Agnostic service which is consumed rather than the translations directly • Result: Integrated framework for federation of multiple globalization frameworks: https://github.com/elastic/kibana/issues/6515 • The advantages: • Independent of the underlying UI frameworks and the subsequent globalization frameworks • Facilitates a plug-and-play approach for language packs (i.e. no coding required) Design Journey 8
  • 9. 9 Architecture Diagram en translations de Kibana plugin es-mx Kibana plugin <kibana_root>/plugins de translations es-mx translations …….. …….. i18n Client Side Server Side Requested locale translations accept-language header Register translations @server startup Create Drop Initial request Load Angular- translateLoad Render
  • 11. • The stakeholders of Kibana globalization are as follows • those that want to enable translations on existing Kibana AngularJS views • those that want to contribute language packs to Kibana • those that want to create a new Kibana plugin Stakeholders 11
  • 12. • Translations are enabled on a Kibana plugin basis; for example, kibana, timelion, status_page • Create default translation file (‘translations/en.json’) if it doesn’t exist • Pick AngularJS view(s); for example, index pattern page (‘_create.html’, ‘_edit.html’) • Replace translation text with translation keys/IDs • Extract translation text to translation file • If it does not exist for the plugin, add ‘translation’ plugin extension (attribute to ‘uiExports’ object) • Refresh view • Refer to Kibana documentation for more details Enable Translations on Existing Views 12
  • 13. 13 Before (HTML): <h1>Configure an index pattern</h1> In order to use Kibana you must …. …………. <kbn-info info="This field will be used to filter ..."></kbn- info> After (HTML): <h1 translate=“KIBANA-CONFIGURE_INDEX_PATTERN”></h1> <p translate=“KIBANA-MUST_CONFIGURE_INDEX_PATTERN”></p> …………… <kbn-info info=“ {{ 'KIBANA-FIELD_FILTER_EVENTS_GLOBAL_TIME' | translate }}"></kbn-info> Enable Translations on Existing Views (Cont’d)
  • 14. 14 Before (JS): notify.error('Could not locate any indices .....'); After (JS): notify.error($translate.instant('KIBANA- NO_INDICES_MATCHING_PATTERN')); Enable Translations on Existing Views (Cont’d)
  • 15. 15 en.json: { "KIBANA-CONFIGURE_INDEX_PATTERN": "Configure an index pattern", "KIBANA-MUST_CONFIGURE_INDEX_PATTERN": "In order to use Kibana you "KIBANA-FIELD_FILTER_EVENTS_GLOBAL_TIME" : "This field will be used "KIBANA-NO_INDICES_MATCHING_PATTERN": "Could not locate any indices } Enable Translations on Existing Views (Cont’d)
  • 16. 16 index.js: return new kibana.Plugin({ id: 'kibana', ….. uiExports { translations: [ resolve(__dirname, './translations/en.json') ], …. } }); Enable Translations on Existing Views (Cont’d)
  • 17. • Create a Kibana plugin for the translation(s) using the “Kibana Plugin Yeoman Generator” • Replace the template translation file (‘translations/es.json’) with the language translation file (for example, ‘mt.json’) • Update ‘translations’ attribute in ‘uiExports’ to the path of the new translations file(s) • Translate file in a JSON editor • Add plugin to the Kibana ‘plugins’ path • Restart Kibana • Refer to Kibana documentation for more details Contributing Language Packs 17
  • 18. 18 es.json: { "KIBANA-CONFIGURE_INDEX_PATTERN": " Configurar un patrón de índice "KIBANA-MUST_CONFIGURE_INDEX_PATTERN": " Para usar Kibana debes…“ } Contributing Language Packs (Cont’d)
  • 19. 19 index.js: return new kibana.Plugin({ id: 'kibana', ….. uiExports { translations: [ resolve(__dirname, './translations/es.json') ], …. } }); Contributing Language Packs (Cont’d)
  • 20. 20 Kibana Examples Showing Different Languages
  • 21. • All plugins created using the “Kibana Plugin Yeoman Generator” will be enabled for translations • If plugin is created manually, refer to “Enable Translations on Existing Views” section • As you develop the plugin, remember to: • Add the translation IDs to the views • Add the corresponding translation IDs and text to the default translation file (‘translations/en.json’) • Refer to Kibana document for more details Creating New Kibana Plugins 21
  • 23. • “Phase 1” merged! • “Phase 1” delivered: • Internationalization (i18n) engine • Translation enabled for Kibana loading • Tool for verifying translations during build phase What’s Implemented 23
  • 24. Roadmap 24 PHASE DESCRIPTION STATUS PR 1 Add integrated framework (i18n engine) Done https://github.com/elastic/kibana/pull/7545 2 Integrate AngularJS globalization In progress https://github.com/elastic/kibana/pull/8766 3 Enable translations on existing AngularJS views TODO TODO 4 Contribute language packs TODO TODO
  • 26. • Good progress, thanks to all involved so far • Infrastructure nearly there for language packs • “Phase 3”, enables translations to existing Kibana AngularJS views • “Phase 4”, contributing the languages packs Conclusion 26