game localization in python
DESCRIPTION
A story about bad game localization, and how we use Python to improve our productivity.TRANSCRIPT
Walter Liu
2013/05/17
GAME LOCALIZATION BY
PYTHON
Isn’t game localization
EASY?
Why not use UNICODE?
My name is not <FullName>.
遊戲翻譯-踢牙老奶奶
Every sentence is 踢牙老奶奶.
EPIC FAIL!!!
Flow & Tools
Summary
AGENDA
EPIC FAIL !!!
One Day ….
Chinese > 300,0000 words
English > 500,000 words
1 expansion += 80,000 words
> 50,000 Lines
1003 匕首
1004 長劍
1005 皮甲
1006 木盾
1003 Dagger
1004
1006 木盾
WHAT DID WE FAIL IN OUR TEXT FILES
<data>xx</data>
<資料>xx</資料>
<data
>叉叉</data>
<data>叉叉/data>
WHAT DID WE FAIL IN OUR XML FILES
tell($uid, “請往東邊走”)
tell($uid“Please go east.”)
tell($uid,“Please go east.
”)
WHAT DID WE FAIL IN OUR SCRIPT FILES
printf(“%s撿起%d金幣”, uid, gold);
printf(“%d gold is picked up by %s.”, uid, gold);
printf(“%d gold is picked up by .”, uid, gold);
WHAT WE FAILED IN PROGRAM
NPC/Spell name
in DB: 馬超
In data: 馬超
NPC/Spell name
in DB: Ma cao
In data: Ma Chao
WHAT WE FAILED IN ACROSS FILES
> 1500 bugs
> 9 months
1 EXPANSION
FLOW & TOOLS
WHY DO PYTHON GOOD AT THIS?
Good Unicode library
Fast string process
Easy to develop
Excellent string library
EXTRACT
new Original Text
old Original Text
old Translated Text
Delta Text for
translation
extraction bad log
extract.py
EXTRACT EXAMPLE
ORIG-old ORIG-new TRANS-old TRANS-delta
1003 匕首 1003 匕首 1003 Dagger
1004 長劍 1004 長劍 1004長劍
1005 皮甲 1005 皮甲
Extract log
ID 1004 not existed in old translation article.
MERGE/VERIFICATION
Last Translated Text
Delta Text for
translation
New translated textDelta Translated
Text
Out source translation
verification bad log
merge.py
(merge/verification)
VERIFICATION LOG EXAMPLE
1003 匕首
1004 長劍
1005 皮甲
1006 木盾
1003 Dagger
1004
1006 木盾
Text ID 1004 is empty.
Text ID 1005 is missing.
Text ID 1006 didn’t translated.
Data Preparation
Extract text
Summarize
Out sourcing
BEFORE Our sourcing
Artist modify UI Use Merge toolUse a script of
Emeditor To importDB ImportDirectly useDirectly use
NPC data in DBscriptdataXmlTranslated UI
stringsini
Data importerXml importer Script importer SQL importerIni importer
Receive translation
files
Summarize name
table (Manual)
Data checker Script checkerName synchronizer
Upload to SVN 03
Test and fix
Upload to SVN 04
AFTER Our sourcing
Translated Text
Check Text format
Import/merge
Completed/Test
RESULT
2000 => 200bugs
9 => 3 months
1 EXPANSION
Design your game I18N well.
Use/write tools to localize your game.
Python is a good tool for this.
Design a good localization flow to help
your team.
SUMMARY