290 likes | 444 Views
Code Gear localization strategy CYBERCOM automated build process Custom developed localization for Delphi. Cybercom in brief. Cybercom is a high-tech consultancy that offers software development and IT-strategy services.
E N D
CodeGear localization strategy CYBERCOM automated build process Custom developed localization for Delphi
Cybercom in brief • Cybercom is a high-tech consultancy • that offers software development and IT-strategy services. • our services mainly target the telecom, finance and industry sector and key customers in other sectors. • Launched in 1995 and on the Nordic stock exchange’s since 1999. • Offices in Denmark, India, Sweden, Singapore and the UK, and operations world-wide. • Together we employ about 500 people. • Our largest customer • Sony Ericsson, Ericsson, Nokia, Tele2, Millicom, Teracom, ASSA ABLOY, Reuters, SEB, H&M, OMX
Jonas in brief • Jonas Rapp • jonas.rapp@cybercomgroup.com • Consultant since 1996 • System development, dba, architect • Cybercom Group since 1998 • Small independent companies, stock market introduction, the Dark Ages, expansion • Odd Delphi-developer • 1, 3, 5, 7, 2005, 2007
Localization The Delphi approach
LocalizationThe Delphi approach • Resource management • Isolated resources • System locale code / suffix • Resource precedence • CodeGear registry value override • Local system locale • Executable / DLL resources • Delphi ITE • resourcestring • Form definitions • External Translation Manager • Distributed translation • Does not require complete Delphi IDE
LocalizationThe Delphi approach – Pros and Cons Pros • Completely integrated with the development platform • Transparent to developers and users • ETM for distributed translation • System locale override • Support for repository
LocalizationThe Delphi approach – Pros and Cons Cons • ETM / ITE never passed the GUI guys... • Shaky updating of form definitions • Generally overkill • Complex distribution of files to translators • Master of data uncertainty • No batch support • No standard deployment method for ETM - manual copying of files
Case study Software suite for an international customer developed by Cybercom since 2000
Case studyEnvironment and Prereqs • About 10 markets • Europe, USA, Asia / Australasia • 3 application areas • Factory ~5 installations • Retailer ~350 installations • End user ~1000 installations • 10-15 languages • Translated remotely by customer, compiled to resource libraries • Common code • Some code is shared between the applications • Business logic variations • Some custom functionality based on market
History The wild wild west
History – The wild wild west...Build process • Unsynchronized builds and releases • Supplier - Customer culture too loose, unspecified request and requirement procedures • No release management • Separate modules built when needed • Separate modules delivered manually to market • Uncontrolled build environment • No standard developer tools kit • Builds performed on any developer PC • Some modules only possible to build on specific PCs with correct tools and components
History – The wild wild west...Language management • Strings declared as resourcestring • Strings used in code extracted to resourcestrings for translation • Form texts scanned by custom made tool • Generates .pas-file with texts in resourcestrings • Form file parsing developed and expanded ad hoc • Languages generated with Delphi Translation Manager • Generates lots of overhead with duplicated form definitions for each language • Distributed asynchronous translation • .rc-files updated by Delphi languages build • Translations being performed on .rc-files with custom made tool • .rc-files sent back to developers to be used in next build
History – The wild wild west...Obvious problems • Uncontrolled installation status • Customers may have any combination of versions in different modules • Arbitrary binaries • Builds performed in ”dirty” environment on developer PC • Translation Manager problems • Form definitions duplicated • Master of data problems • ReadOnly attribute cascaded • Language resources do not match exe/dll • Distributed binaries with different structure than existing language resources • Messy handling of .rc-files • Merging translated files into new Delphi-generated files, while a third version of the file is just distributed without latest translations...
Today The structured paradise
Today – The structured paradiseDevelopment environment • Click-once-setup of Delphi environment • All components and pre-reqs structured in VSS • Environment variable defines local project root • Automatic registration of components • Command file to copy and register dll’s • Registry file to register Delphi components • Component update distribution • New versions of components updated from VSS • Re-register using files above
Today – The structured paradiseBuild environment • Dedicated build machine • Not infected by developer whims to ”try some new stuff”... • VPC with all prereqs installed • Safe reproducable VPC environment • Not dependent on a specific PC, the VPC image can be used on any PC (actually even on a contaminated developer PC...) • Complete process controlled from check-out to published updates • Manual interaction minimized as FinalBuilder controls all steps in the process
Today – The structured paradiseLocalization • Strings declared as resourcestring • Strings used in code extracted to resourcestrings for translation • Forms scanned by custom tool • Generates .pas-file with texts in resourcestrings • Form definition parser same as Delphi itself uses • Translation projects generated by custom tool • Complete Delphi projects with references to base project form definitions and including .rc-files and collecting project group are generated from language database
Today Language management
Language ManagementCentral database • Language Management database • All translations stored in central database • Resource history maintained for non-chronological builds • New builds update database • The Delphi .drc-file is parsed to update the database with information of resourcestrings in current version • Web based UI • Translations are updated in the database. • Access control restricts who updates what
Language ManagementBuild flow Delphi Build .drc LangMan DB Translation .exe / .dll .bpg DEU FRA ESP .DEU ENG .FRA .ESP .ENG
Language ManagementBuild flow LangMan DB .exe / .dll Installation package .DEU .FRA .ESP .ENG
Language ManagementThe future of Cybercom application localization • Repository • Automatically translate single words • Translate all similar resourcestrings • Integration with other development platforms • LangMan database may be updated from, and update to, other platforms e.g. Visual Studio • Local client • Publish webservices on LangMan server • Local clients consuming webservices for data retreival and update • Radical GUI advantages to web based GUI • Check in/out projects and languages etc • Translating binary resources • Images, sounds etc
Professor Balthazar Today Automated build process with FinalBuilder
FinalBuilderPreparing for build • Set version number • Major, Minor and Release is set manually • Build number is controlled by the automated build process • Version number is set on all binaries compiled from FinalBuilder • Send e-mail to project group • Alert team members that the build is started • Label project tree in VSS • If this is a new build with latest available source, a label is set in VSS source structure • Get labeled tree from VSS • The version to build is fetched from VSS
FinalBuilderBuild and Localization actions • Execute FormTextScanner tool • Form texts parsed to resourcestrings • Method to set form properties at runtime • Build Delphi-project modules • exe/dll generated • drc file generated • Execute Delphi drc -> LangMan updater • Updates LangMan database with resources from current version
FinalBuilderBuild and Localization actions • Translate languages • Build process may be paused to allow translations of new and changed resource strings • Execute LangMan -> rc generator • rc-files for all included languages • Delphi projects for all languages • Delphi project group for language projects, used in a developer environment • Build Delphi language projects • Generate resource binaries
FinalBuilderDeployment generation • Update databases • Each database is attached • General and market specific scripts executed on database • Database detached • Execute Wise installation generator • Wise compiles installation executable
FinalBuilderDeployment distribution • Copy files to internal server • Installation files for test staff made available on in-house server • FTP installation to web based distribution site • Installation files for customer tests transferred over FTP to public server • Files for Automatic update transferred to web server • Translation files distributed • .rc files (where still used) transferred to web server for distributed translation • Build output archived • All builds are archived on local servers • Build logs published • Logs from all build activities are published as html document • Build history is published as html document
FinalBuilderFuture enhancements • Update CM system • Update status of cases included in current build • Set ”Available from build” on new completed cases included in build