SlideShare a Scribd company logo
1 of 38
Download to read offline
Open Apereo 2015
Higher Education ... Open Source in a New Age
Translating Apereo Software: 
A Case Study using Sakai and Transifex
Yuji Tokiwa (Hosei University, Japan)
Daisuke Deguchi (Nagoya University, Japan)
Juan Jose Merono Sanchez (University of Murcia, Spain)
Jose Mariano Lujan Gonzalez (Universidad de Murcia, Spain)
Diego del Blanco Orobitg (SCRIBA, Spain)
Agenda
■  Overview
■  Benefits for Apereo community
■  Context dependent translation by gettext Portable
Object
■  Community translation strategy in Sakai Spanish Users
(S2U)
■  Automatized process by Jenkins
Overview
Translation Style
∼ 2012
2013 ∼
Translator
 Tool
Individual
Community
Stand-alone
Cloud
Crowdin and Transifex
Crowdin
 Transifex
Sakai i18n
community
Ja Sakai
community
Ja Sakai community project -
Development of Common TMX
.prop.
Common
TMX
.php
.php
.prop.
.php
.php
Transifex
Transifex in a Normal Setting
Properties files
in flat directory
Reorganization of Properties file
Properties file
included in each module
set in each directory
Free of Charge Transifex for Sakai
Transifex is used in many OSSs
for localization
Benefits for Apereo community
Strategy
l  Use Crowdin and Transifex
l  Up to regional communities to use Crowdin or Transifex
because both platforms have almost same functions
•  Interoperability by a Translation memory
•  User interface
l  Transifex will be maintained by JaSakai community.
Benefit
l  Sustainable
•  Not lock in one system (There are pros and cons)
l  Economic
•  Free of Charge
l  Functional
•  Functionally complement for one another
Context dependent translation by
gettext Portable Object
L10n problems in Sakai CLE (1)
❖  There are too many properties files for translation
Difficult to keep translation consistency between files
chat
chat-impl
chat.properties
chat-message.properties
chat-tool
chat.properties
permissions.properties
citations
citations-util
More than 200 files for
translation
Sakai 10.x
L10n problems in Sakai CLE (2)
❖  Sakai CLE uses Java properties file for i18n
Format of Java properties file
❖  Each line contains single translation associated with key
➢  “key” and “value” are separated by “=“ or “:”
❖  Key should be unique in a properties file
➢  But this may not be hold between properties files
java.acccess = Access:
java.theresource = The resource was not found.
java.youdonot = You do not have permissions to access this resource.
java.from = From:
java.subject = Subject:
java.attach = Attachments:
Example: access.properties of access module
L10n problems in Sakai CLE (2)
❖  Sakai CLE uses Java properties file for i18n
➢  A same key is reused between properties files
■  E.g. samigo reuses “assessment_title” for
different translation targets
1. assessment_title = Title
2. assessment_title = Assessment Title
Keys in properties files are not unique in Sakai CLE
Approach (1)
❖  Difficult to keep translation consistency between files
➢  Concatenate all Java properties files in each module
into a single file
■  Possible to improve consistency by comparing
similar English resources in a module
.properties
.properties
.properties
.properties
.properties
.properties
chat
.properties
.properties
.properties
.properties
.properties
.properties
polls
.properties
.properties
.properties
.properties
.properties
.properties
site
Approach (2)
❖  Keys in properties file are not unique in Sakai CLE
➢  Identify each English resource by a combination of
filename + key (translation context)
■  Possible to treat translation strings separately
even if it uses the same key
new.page.launch = Content opened
in a new window. Make sure pop up
windows are allowed in your
browser.
basiclti.properties (basiclti tool)
new.page.launch = Page opened in
new window.
iframe.properties (basiclti tool)
Solution:
Module translation via Transifex
❖  Generate Gettext Porable Object (PO) file containing all
translation strings existing in each module
➢  PO is utilized in many popular systems for
supporting i18n and l10n
❖  Sync each module (PO file) through Transifex API
➢  Newly added English strings appear in Transifex
1. 
#. java.acccess
2. 
#: access.properties:1
3. 
msgctxt
"access.properties:java.acccess"
4. 
msgid "Access:"
5. 
msgstr "アクセス:"
Example of PO file
1.  Download latest sources from
2.  Convert ‘.properties’ files of a module to PO file
3.  Upload PO files to Transifex




4.  Community Translation using Transifex
Translation workflow
chat.po
chat
chat-impl
chat.properties
chat-tool
chatz.properties
Web interface of Transifex
Check all translation strings
of each module in one view
Find similar translations
from Translation memory
4.  Community Translation using Transifex
5.  Download translation from Transifex
6.  Decompose PO file into ‘.properties’ files




7.  Commit “.properties” files to 
Translation workflow
chat.po
chat
chat-impl
chat.properties
chat-tool
chatz.properties
Benefit of module translation
using Transifex
❖  Possible to keep translation consistent in each module
➢  Translator can concentrate on translating a module
❖  Script program automatically synchronize translations
between GitHub and Transifex
➢  No need for setting up translation environment
❖  Everyone can join translation workflow from anywhere
➢  No need for special knowledge about translation
tools (Benten, OmegaT, etc.)
Remaining problems
❖  Context is important to choose appropriate translation
➢  Impossible to distinguish noun and verb only from
original English text (e.g. “grade”, “grade item”)
➢  Difficult to guess omitted words from short English
sentence (e.g. “From”, “of”, etc.)
➢  There are multiple translation candidates
■  “Submit” can be translated to “送信”, “提出”, etc.
Community translation strategy
in Sakai Spanish Users (S2U)
CROWDIN
PROS
-  Easy UI
-  Great functionality
CONS
-  Problems with updates
-  Problems exporting
-  Special characters.
-  Extensions.
-  Translation by file, no by
tool.
2013-2014
manually editing
.property files
CONS
-  hard to divide work
-  hard to review
translations
-  manual updates
start - 2013
TRANSIFEX
PROS
-  Clear UI
-  Automatized
-  Daily update
-  Same functionality
as Crowdin
2014-2015
Background S2U
-  Sakai 10.3 was the first Sakai release to be fully
100% translated to Spanish
•  Crowdin
•  We started to use it to manage translations.
•  Sakai 10, first release out with 100% Spanish translation.
•  Also used for other official languages in Spain.
Open Apereo ‘14 - ReThink
-  After Open Apereo 2014
-  Started joint effort with JA-Sakai
-  One member translate / Other member reviews
-  Include translations reviews in our Weekly calls
-  Transifex TAG: S2U-REVIEW
-  Improve consistency by looking for ‘Concordance
Search’
-  Plan Monthly exports from Transifex to Sakai
Master (Sakai’s base code).
New strategy
https://www.transifex.com/projects/p/sakai-trunk/
Translations for 10.x and Master
-  Started working with
10.x. Sakai 10.3 was the
very first Sakai release
to be 100% fully
translated to Spanish
-  Now more focus on
translating Master
(Trunk)
New strategy
https://www.transifex.com/projects/p/sakai-trunk/
S2U
translators
New strategy
https://www.transifex.com/projects/p/sakai-trunk/
Review old translations
S2U
successfully
maintains 3
languages
using
Transifex:
-  Spanish
-  Catalan
-  Basque
Automatized process by Jenkins
Deal with the dirty work
Translate from English to Spanish
Keep English updated
(Ja-Sakai)
Download spanish
translations and
submit PR (S2U)
Daily Monthly
-  Japanese community shared their python scripts.
-  We used them to import es locale to transifex.
-  We use them to download all translations from tx.
-  Jenkins help us to:
-  Get a fresh clone from sakai master.
-  Install python scripts.
-  Run scripts to get all reviewed translations.
-  Generate a patch for master.
-  Optionally send the patch by email.
Deal with the dirty work
-  Then manually we complete the cycle:
-  Review the generated patch.
-  File the jira to update “es” translations.
-  Create the Pull Request to merge translations
into master.
-  We do this cycle monthly.
-  Master branch is almost 100% translated.
Deal with the dirty work

More Related Content

Viewers also liked

Global, Local and Virtual
Global, Local and Virtual Global, Local and Virtual
Global, Local and Virtual
diadelosmuertos
 
Ja sakai update_sakai_conference_2012
Ja sakai update_sakai_conference_2012Ja sakai update_sakai_conference_2012
Ja sakai update_sakai_conference_2012
yuji tokiwa
 
Les teories Ètiques i el Consumisme
Les teories Ètiques i el ConsumismeLes teories Ètiques i el Consumisme
Les teories Ètiques i el Consumisme
Alexiis Chardi Gomez
 
Wild and wonderful...
Wild and wonderful...Wild and wonderful...
Wild and wonderful...
mccidmanzano
 
Internet, lo que vendrá y lo que está
Internet, lo que vendrá y lo que estáInternet, lo que vendrá y lo que está
Internet, lo que vendrá y lo que está
Gabriel Dantur
 

Viewers also liked (18)

Catalogue du an Gold Hill
Catalogue du an Gold HillCatalogue du an Gold Hill
Catalogue du an Gold Hill
 
Global, Local and Virtual
Global, Local and Virtual Global, Local and Virtual
Global, Local and Virtual
 
OYS Rigging Presentation
OYS Rigging PresentationOYS Rigging Presentation
OYS Rigging Presentation
 
Prueba
PruebaPrueba
Prueba
 
Autonome voertuigen
Autonome voertuigenAutonome voertuigen
Autonome voertuigen
 
La primera guerra mundial
La primera guerra mundialLa primera guerra mundial
La primera guerra mundial
 
Lucky Pole - Customizable Kids Book
Lucky Pole - Customizable Kids BookLucky Pole - Customizable Kids Book
Lucky Pole - Customizable Kids Book
 
Autonome voertuigen
Autonome voertuigenAutonome voertuigen
Autonome voertuigen
 
Ja sakai update_sakai_conference_2012
Ja sakai update_sakai_conference_2012Ja sakai update_sakai_conference_2012
Ja sakai update_sakai_conference_2012
 
OYS Thruster Presentation
OYS Thruster PresentationOYS Thruster Presentation
OYS Thruster Presentation
 
The Future of Latin Media
The Future of Latin MediaThe Future of Latin Media
The Future of Latin Media
 
Les teories Ètiques i el Consumisme
Les teories Ètiques i el ConsumismeLes teories Ètiques i el Consumisme
Les teories Ètiques i el Consumisme
 
Wild and wonderful...
Wild and wonderful...Wild and wonderful...
Wild and wonderful...
 
Your Book - Customized Kids Book
Your Book - Customized Kids BookYour Book - Customized Kids Book
Your Book - Customized Kids Book
 
Internet, lo que vendrá y lo que está
Internet, lo que vendrá y lo que estáInternet, lo que vendrá y lo que está
Internet, lo que vendrá y lo que está
 
Reinventado la propuesta de valor de los diarios
Reinventado la propuesta de valor de los diariosReinventado la propuesta de valor de los diarios
Reinventado la propuesta de valor de los diarios
 
El Desafío del Marketing Online
El Desafío del Marketing OnlineEl Desafío del Marketing Online
El Desafío del Marketing Online
 
Euler
EulerEuler
Euler
 

Similar to Translating Apereo Software: A Case Study using Sakai and Transifex

Android coding guide lines
Android coding guide linesAndroid coding guide lines
Android coding guide lines
lokeshG38
 

Similar to Translating Apereo Software: A Case Study using Sakai and Transifex (20)

Third-Party Software Library Reuse : From Adoption to Migration
Third-Party Software Library Reuse : From Adoption to MigrationThird-Party Software Library Reuse : From Adoption to Migration
Third-Party Software Library Reuse : From Adoption to Migration
 
Eclipse Training - Introduction
Eclipse Training - IntroductionEclipse Training - Introduction
Eclipse Training - Introduction
 
Owner - Java properties reinvented.
Owner - Java properties reinvented.Owner - Java properties reinvented.
Owner - Java properties reinvented.
 
Triple E class DevOps with Hudson, Maven, Kokki/Multiconf and PyDev
Triple E class DevOps with Hudson, Maven, Kokki/Multiconf and PyDevTriple E class DevOps with Hudson, Maven, Kokki/Multiconf and PyDev
Triple E class DevOps with Hudson, Maven, Kokki/Multiconf and PyDev
 
Introduction to Eclipse
Introduction to Eclipse Introduction to Eclipse
Introduction to Eclipse
 
Android coding guide lines
Android coding guide linesAndroid coding guide lines
Android coding guide lines
 
Principled io in_scala_2019_distribution
Principled io in_scala_2019_distributionPrincipled io in_scala_2019_distribution
Principled io in_scala_2019_distribution
 
JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1JAVA INTRODUCTION - 1
JAVA INTRODUCTION - 1
 
[EclipseCon France 2017] Eclipse Platform Generic Editor
[EclipseCon France 2017] Eclipse Platform Generic Editor[EclipseCon France 2017] Eclipse Platform Generic Editor
[EclipseCon France 2017] Eclipse Platform Generic Editor
 
Deep Dive into Monads and Cats Lib
Deep Dive into Monads and Cats LibDeep Dive into Monads and Cats Lib
Deep Dive into Monads and Cats Lib
 
Jenkins
JenkinsJenkins
Jenkins
 
Core java
Core javaCore java
Core java
 
Automation Testing - Part 2 (Things to know in JAVA) - SLT
Automation Testing - Part 2 (Things to know in JAVA) - SLTAutomation Testing - Part 2 (Things to know in JAVA) - SLT
Automation Testing - Part 2 (Things to know in JAVA) - SLT
 
Automation Testing - Part 2 (Things to know in JAVA) - SLT
Automation Testing - Part 2 (Things to know in JAVA) - SLTAutomation Testing - Part 2 (Things to know in JAVA) - SLT
Automation Testing - Part 2 (Things to know in JAVA) - SLT
 
Elements of Java Language
Elements of Java Language Elements of Java Language
Elements of Java Language
 
JAVA PPT Part-1 BY ADI.pdf
JAVA PPT Part-1 BY ADI.pdfJAVA PPT Part-1 BY ADI.pdf
JAVA PPT Part-1 BY ADI.pdf
 
JAVA PPT-1 BY ADI.pdf
JAVA PPT-1 BY ADI.pdfJAVA PPT-1 BY ADI.pdf
JAVA PPT-1 BY ADI.pdf
 
Top tips from what we've learned from our 10 years experience
Top tips from what we've learned from our 10 years experienceTop tips from what we've learned from our 10 years experience
Top tips from what we've learned from our 10 years experience
 
Introduction to Java
Introduction to JavaIntroduction to Java
Introduction to Java
 
How to Build & Develop Responsive Open Learning Environments with the ROLE SDK
How to Build & Develop Responsive Open Learning Environments with the ROLE SDKHow to Build & Develop Responsive Open Learning Environments with the ROLE SDK
How to Build & Develop Responsive Open Learning Environments with the ROLE SDK
 

Recently uploaded

Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven CuriosityUnlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Hung Le
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
David Celestin
 
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
ZurliaSoop
 

Recently uploaded (19)

ICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdfICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdf
 
Ready Set Go Children Sermon about Mark 16:15-20
Ready Set Go Children Sermon about Mark 16:15-20Ready Set Go Children Sermon about Mark 16:15-20
Ready Set Go Children Sermon about Mark 16:15-20
 
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven CuriosityUnlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
 
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptxBEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
 
2024 mega trends for the digital workplace - FINAL.pdf
2024 mega trends for the digital workplace - FINAL.pdf2024 mega trends for the digital workplace - FINAL.pdf
2024 mega trends for the digital workplace - FINAL.pdf
 
The Concession of Asaba International Airport: Balancing Politics and Policy ...
The Concession of Asaba International Airport: Balancing Politics and Policy ...The Concession of Asaba International Airport: Balancing Politics and Policy ...
The Concession of Asaba International Airport: Balancing Politics and Policy ...
 
History of Morena Moshoeshoe birth death
History of Morena Moshoeshoe birth deathHistory of Morena Moshoeshoe birth death
History of Morena Moshoeshoe birth death
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
 
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINESBIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
 
LITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORN
LITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORNLITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORN
LITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORN
 
Using AI to boost productivity for developers
Using AI to boost productivity for developersUsing AI to boost productivity for developers
Using AI to boost productivity for developers
 
"I hear you": Moving beyond empathy in UXR
"I hear you": Moving beyond empathy in UXR"I hear you": Moving beyond empathy in UXR
"I hear you": Moving beyond empathy in UXR
 
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait Cityin kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
 
Introduction to Artificial intelligence.
Introduction to Artificial intelligence.Introduction to Artificial intelligence.
Introduction to Artificial intelligence.
 
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
 
ECOLOGY OF FISHES.pptx full presentation
ECOLOGY OF FISHES.pptx full presentationECOLOGY OF FISHES.pptx full presentation
ECOLOGY OF FISHES.pptx full presentation
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of Drupal
 
Abortion Pills Fahaheel ௹+918133066128💬@ Safe and Effective Mifepristion and ...
Abortion Pills Fahaheel ௹+918133066128💬@ Safe and Effective Mifepristion and ...Abortion Pills Fahaheel ௹+918133066128💬@ Safe and Effective Mifepristion and ...
Abortion Pills Fahaheel ௹+918133066128💬@ Safe and Effective Mifepristion and ...
 

Translating Apereo Software: A Case Study using Sakai and Transifex

  • 1. Open Apereo 2015 Higher Education ... Open Source in a New Age Translating Apereo Software: A Case Study using Sakai and Transifex Yuji Tokiwa (Hosei University, Japan) Daisuke Deguchi (Nagoya University, Japan) Juan Jose Merono Sanchez (University of Murcia, Spain) Jose Mariano Lujan Gonzalez (Universidad de Murcia, Spain) Diego del Blanco Orobitg (SCRIBA, Spain)
  • 2. Agenda ■  Overview ■  Benefits for Apereo community ■  Context dependent translation by gettext Portable Object ■  Community translation strategy in Sakai Spanish Users (S2U) ■  Automatized process by Jenkins
  • 4. Translation Style ∼ 2012 2013 ∼ Translator Tool Individual Community Stand-alone Cloud
  • 5. Crowdin and Transifex Crowdin Transifex Sakai i18n community Ja Sakai community
  • 6. Ja Sakai community project - Development of Common TMX .prop. Common TMX .php .php .prop. .php .php Transifex
  • 7. Transifex in a Normal Setting Properties files in flat directory
  • 8. Reorganization of Properties file Properties file included in each module set in each directory
  • 9. Free of Charge Transifex for Sakai
  • 10. Transifex is used in many OSSs for localization
  • 11. Benefits for Apereo community
  • 12. Strategy l  Use Crowdin and Transifex l  Up to regional communities to use Crowdin or Transifex because both platforms have almost same functions •  Interoperability by a Translation memory •  User interface l  Transifex will be maintained by JaSakai community.
  • 13. Benefit l  Sustainable •  Not lock in one system (There are pros and cons) l  Economic •  Free of Charge l  Functional •  Functionally complement for one another
  • 14. Context dependent translation by gettext Portable Object
  • 15. L10n problems in Sakai CLE (1) ❖  There are too many properties files for translation Difficult to keep translation consistency between files chat chat-impl chat.properties chat-message.properties chat-tool chat.properties permissions.properties citations citations-util More than 200 files for translation Sakai 10.x
  • 16. L10n problems in Sakai CLE (2) ❖  Sakai CLE uses Java properties file for i18n
  • 17. Format of Java properties file ❖  Each line contains single translation associated with key ➢  “key” and “value” are separated by “=“ or “:” ❖  Key should be unique in a properties file ➢  But this may not be hold between properties files java.acccess = Access: java.theresource = The resource was not found. java.youdonot = You do not have permissions to access this resource. java.from = From: java.subject = Subject: java.attach = Attachments: Example: access.properties of access module
  • 18. L10n problems in Sakai CLE (2) ❖  Sakai CLE uses Java properties file for i18n ➢  A same key is reused between properties files ■  E.g. samigo reuses “assessment_title” for different translation targets 1. assessment_title = Title 2. assessment_title = Assessment Title Keys in properties files are not unique in Sakai CLE
  • 19. Approach (1) ❖  Difficult to keep translation consistency between files ➢  Concatenate all Java properties files in each module into a single file ■  Possible to improve consistency by comparing similar English resources in a module .properties .properties .properties .properties .properties .properties chat .properties .properties .properties .properties .properties .properties polls .properties .properties .properties .properties .properties .properties site
  • 20. Approach (2) ❖  Keys in properties file are not unique in Sakai CLE ➢  Identify each English resource by a combination of filename + key (translation context) ■  Possible to treat translation strings separately even if it uses the same key new.page.launch = Content opened in a new window. Make sure pop up windows are allowed in your browser. basiclti.properties (basiclti tool) new.page.launch = Page opened in new window. iframe.properties (basiclti tool)
  • 21. Solution: Module translation via Transifex ❖  Generate Gettext Porable Object (PO) file containing all translation strings existing in each module ➢  PO is utilized in many popular systems for supporting i18n and l10n ❖  Sync each module (PO file) through Transifex API ➢  Newly added English strings appear in Transifex 1. #. java.acccess 2. #: access.properties:1 3. msgctxt "access.properties:java.acccess" 4. msgid "Access:" 5. msgstr "アクセス:" Example of PO file
  • 22. 1.  Download latest sources from 2.  Convert ‘.properties’ files of a module to PO file 3.  Upload PO files to Transifex 4.  Community Translation using Transifex Translation workflow chat.po chat chat-impl chat.properties chat-tool chatz.properties
  • 23. Web interface of Transifex Check all translation strings of each module in one view Find similar translations from Translation memory
  • 24. 4.  Community Translation using Transifex 5.  Download translation from Transifex 6.  Decompose PO file into ‘.properties’ files 7.  Commit “.properties” files to Translation workflow chat.po chat chat-impl chat.properties chat-tool chatz.properties
  • 25. Benefit of module translation using Transifex ❖  Possible to keep translation consistent in each module ➢  Translator can concentrate on translating a module ❖  Script program automatically synchronize translations between GitHub and Transifex ➢  No need for setting up translation environment ❖  Everyone can join translation workflow from anywhere ➢  No need for special knowledge about translation tools (Benten, OmegaT, etc.)
  • 26. Remaining problems ❖  Context is important to choose appropriate translation ➢  Impossible to distinguish noun and verb only from original English text (e.g. “grade”, “grade item”) ➢  Difficult to guess omitted words from short English sentence (e.g. “From”, “of”, etc.) ➢  There are multiple translation candidates ■  “Submit” can be translated to “送信”, “提出”, etc.
  • 27. Community translation strategy in Sakai Spanish Users (S2U)
  • 28. CROWDIN PROS -  Easy UI -  Great functionality CONS -  Problems with updates -  Problems exporting -  Special characters. -  Extensions. -  Translation by file, no by tool. 2013-2014 manually editing .property files CONS -  hard to divide work -  hard to review translations -  manual updates start - 2013 TRANSIFEX PROS -  Clear UI -  Automatized -  Daily update -  Same functionality as Crowdin 2014-2015 Background S2U
  • 29. -  Sakai 10.3 was the first Sakai release to be fully 100% translated to Spanish •  Crowdin •  We started to use it to manage translations. •  Sakai 10, first release out with 100% Spanish translation. •  Also used for other official languages in Spain. Open Apereo ‘14 - ReThink
  • 30. -  After Open Apereo 2014 -  Started joint effort with JA-Sakai -  One member translate / Other member reviews -  Include translations reviews in our Weekly calls -  Transifex TAG: S2U-REVIEW -  Improve consistency by looking for ‘Concordance Search’ -  Plan Monthly exports from Transifex to Sakai Master (Sakai’s base code). New strategy https://www.transifex.com/projects/p/sakai-trunk/
  • 31. Translations for 10.x and Master -  Started working with 10.x. Sakai 10.3 was the very first Sakai release to be 100% fully translated to Spanish -  Now more focus on translating Master (Trunk)
  • 36. Deal with the dirty work Translate from English to Spanish Keep English updated (Ja-Sakai) Download spanish translations and submit PR (S2U) Daily Monthly
  • 37. -  Japanese community shared their python scripts. -  We used them to import es locale to transifex. -  We use them to download all translations from tx. -  Jenkins help us to: -  Get a fresh clone from sakai master. -  Install python scripts. -  Run scripts to get all reviewed translations. -  Generate a patch for master. -  Optionally send the patch by email. Deal with the dirty work
  • 38. -  Then manually we complete the cycle: -  Review the generated patch. -  File the jira to update “es” translations. -  Create the Pull Request to merge translations into master. -  We do this cycle monthly. -  Master branch is almost 100% translated. Deal with the dirty work