Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
僕たちはサービスの多言語化にどう立ち向かうべきか
Search
endam
May 25, 2018
Programming
4
1.3k
僕たちはサービスの多言語化にどう立ち向かうべきか
endam
May 25, 2018
Tweet
Share
More Decks by endam
See All by endam
Web開発における開発環境構築の歴史と変遷〜原始時代から現代(Docker)まで〜
endam
0
170
レガシーなフレームワークで不本意ながらもとことん頑張ってみた
endam
0
410
What is Atomic Design?
endam
0
40
Angular × Atomic Designでデザインリニューアルを行った話
endam
2
580
Postman
endam
0
420
Engineer's Mind
endam
1
120
Be the best development team
endam
0
84
Yarnの導入
endam
0
510
Web APIの現場あるある解決特集〜こうして僕たちのAPIは使いやすくなった〜
endam
0
500
Other Decks in Programming
See All in Programming
Kotlin 2.0 and Beyond
antonarhipov
2
150
1人で挑むSwiftコンパイラ 〜型システム入門編〜
s_shimotori
0
340
The Sequel to a Dream of Ruby Parser's Grammar
ydah
1
220
KSPの導入・移行を前向きに検討しよう!
shxun6934
PRO
0
130
The Future of Frontend i18n : Intl.MessageFormat
sajikix
1
2.5k
メモリ最適化を究める!iOSアプリ開発における5つの重要なポイント
yhirakawa333
0
410
null or undefined
susisu
22
6.2k
What we keep in mind when migrating from Serverless Framework to AWS CDK and AWS SAM
kasacchiful
1
140
Hono・Prisma・AWSでGeoなAPI開発
nokonoko1203
5
660
XStateでReactに秩序を与えたい
gizm000
0
700
Amazon Neptuneで始める初めてのグラフDB ー グラフDBを使う意味を考える ー
satoshi256kbyte
2
250
React + TextAliveでカッコいいLyric Applicatioinを作ろう!!
tosuri13
0
390
Featured
See All Featured
The Brand Is Dead. Long Live the Brand.
mthomps
53
37k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
326
21k
What's in a price? How to price your products and services
michaelherold
242
11k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Designing the Hi-DPI Web
ddemaree
278
34k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Building an army of robots
kneath
302
42k
Ruby is Unlike a Banana
tanoku
96
11k
Thoughts on Productivity
jonyablonski
66
4.2k
RailsConf 2023
tenderlove
27
800
Code Review Best Practice
trishagee
62
16k
Transcript
© ISAO | CONFIDENTIAL ͨͪαʔϏεͷଟݴޠԽʹ Ͳ͏ཱ͔ͪ͏͖͔ ٢ాক೭
٢ాক೭ ͩʙ·͞ w݄ʹגࣜձࣾ*4"0ೖࣾ wνʔϜίϥϘϨʔγϣϯαʔϏε ʮ(PBMPVTʯͷϦʔυΤϯδχΞ wΤϯδχΞ࠾༻ɾڭҭʹܞΘ͍ͬͯΔ !FOEBN
MISSION 9 (PBMPVTͱ νʔϜͰΰʔϧΛୡ͢ΔͨΊ ͷϏδωεSNS 㾎ҙࢥܾఆͷεϐʔυ͕രʹ 㾎ࣾһશһاۀͷϏδϣϯΛਁಁ 㾎ಁ໌ੑͷ͋ΔධՁ͕Ͱ͖Δ 㾎৫ͷนͳΜͯײ͡ͳ͍
㾎ͳΜ͔ͩɺࣄָ͕͘͠ͳΔ
9 ւ֎Ͱఏڙ͍ͯ͠Δ
9 ࠓ͜ͷ(PBMPVTͷଟݴޠԽͷ ΈΛม͑Α͏ͱͨ͠Λ͠·͢
9 ͦͷલʹ
9 ͦͦ༁ͱଟݴޠԽͷ ҧ͍ͬͯԿʁ
͋Δݴޠͷݴ༿ΛଞͷݴޠͰද͢͜ͱɻ ʮ୯ޠʯͰͳ͘ʮҙຯʯΛϕʔεͱ͢Δɻ ʮ୯ޠʯϕʔεͩͱ͍ΘΏΔ༁ʹͳͬͯ͠·͍ػցతͳݴ༿ʹͳΓ͕ͪ จ຺എܠɺͦΕΛݟΔϢʔβʔʹͲͷΑ͏ʹ͍͔͑ͨʹΑͬͯ దͳ༁มΘΔɻ ༁ͱଟݴޠԽͷҧ͍ ༁
ϢʔβʔʹԠͯ͡ෳͷݴޠΛΓସ͑ΒΕΔঢ়ଶɺ·ͨͦͷΈ ༁ϓϩηεͷҰ෦ʹա͗ͳ͍ɻ ༁ͱଟݴޠԽͷҧ͍ ଟݴޠԽ
9 (PBMPVTͷ ࠓ·ͰͷଟݴޠԽͷΈ
ࠓ·ͰͷଟݴޠԽͷΈ $BLF1)1JOΛ༻
ࠓ·ͰͷଟݴޠԽͷΈ ҰͭͷQPϑΝΠϧʹશͯͷ༁Λهࡌ
ࠓ·ͰͷଟݴޠԽͷΈ ௨՟දࣔ$BLF1)1ͷϔϧύʔͰରԠ
ࠓ·ͰͷଟݴޠԽͷΈ ͑ɺ͡Ό͋3FBDUͱ͔+4Ͱ͏༁Ͳ͏ͯ͠Μͷɾɾʁ ͏ΜେৎɺແཧΓରԠͯ͠ΔΑ
ࠓ·ͰͷଟݴޠԽͷΈ ·ͣϢʔβʔͷઃఆͨ͠ݴޠʹԠͯ͡දࣔ͢ΔͨΊͷ@@ ؔΛݺͿ
ࠓ·ͰͷଟݴޠԽͷΈ ͔͜͠͠ͷ@@ ؔͰ͍ͬͯΔ͜ͱQPϑΝΠϧ͔Β༁͞Εͨ จݴΛऔಘ͍ͯ͠ΔͷͰͳ͘ɺ1)1ͰϨϯμϦϯάͨ͠ڊେͳ +4ΦϒδΣΫτ͔ΒΩʔʹରԠ͢ΔΛऔಘ͍ͯ͠Δ ʊਓਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹڊେͳΦϒδΣΫτɹʻ ʉY^Y^Y^Y^Y^Y^Y^Y^Y^Y^Yʉ
ͭ·Γ༁ΛՃ͢Δʹ͜ͷΦϒδΣΫτमਖ਼͢Δඞཁ͕͋Δ
9 ࣮ࡍͷ༁ͷϓϩηε
։ൃऀ͕ը໘දࣔɾϓογϡ௨ɾϝʔϧؚΊͯ༁͕ඞཁͳՕॴΛ ચ͍ग़͢ ચ͍ग़ͨ͠༁ඞཁՕॴΛεϓϨουγʔτʹ·ͱΊͯ༁୲ऀ ΄ͱ ΜͲͷ߹1- ʹ͢˞͜ΕͲ͜ͷ͜ͱΛݴͬͯΔͷͱ͍͏֬ೝগͳ͘ͳ͍ ༁୲ऀ͕༁ͯ͠εϓϨουγʔτʹهೖ ։ൃऀ༁͕ඞཁͳՕॴΛ@@ؔͰғΜͰϚʔΫͨ͠ޙʹ$BLFJO
ίϚϯυΛ࣮ߦͯ͠༁ݩͱͳΔQPUϑΝΠϧΛੜ 1P&EJUͱ͍͏QPϑΝΠϧฤूπʔϧΛͬͯɺ༁ݩͷQPUϑΝΠϧΛ جʹ༁ͨ͠จݴΛهೖ͠ɺQPϑΝΠϧΛߋ৽ ϦϙδτϦʹ1VTI ༁ͷϓϩηε ػೳՃɾվળʹΑΓ৽ͨʹ༁͕ඞཁͱͳΔ߹
9 ҰݴͰݴ͏ͱΊΜͲ͍͘͞
w ։ൃऀ͔͠༁Λߋ৽Ͱ͖ͳ͍ w จݴΛݕࡧͰ͖ͳ͍ w ༁Λߋ৽͍ͯ͠ΔͷͰจݴͷҰ؏ੑ͕ແ͍ ࣅͨΑ͏ͳจݴ͕ ͨ͘͞Μ͋Δ
w ୭͕Ͳ͏͍͏ҙਤͰߋ৽ͨ͠ͷ͔͔Βͳ͍ ༁ͷϓϩηε
9 ͏͜Μͳϓϩηε౿Ήͷݏͩɾɾʂ Ͱػೳ։ൃ͕Ͳ͏ͯ͠༏ઌతʹͳͬͯ͠·͏
9 ͔͋͠͠Δ࣌సػ͕๚Εͨɾɾʂ
9 σβΠϯˍϑϩϯτΤϯυϦχϡʔΞϧ Λ࣮ࢪ͢Δ͜ͱ͕ܾఆʂ
9 ͜ͷػձʹ ଟݴޠԽͷΈม͑Α͏ͥʂ
ϝϦοτ ෳͷϓϥοτϑΥʔϜͰ༻͢Δ༁ͷॏෳ͕ආ͚ΒΕΔ ଟݴޠԽվֵͷऔΓΈ Ҋ%#Ͱ༁σʔλΛҰݩཧ͢Δ σϝϦοτ ΞϓϦέʔγϣϯͷঢ়ଶʹ߹Θͤͨ༁ͷόʔδϣϯཧ͕ग़དྷͳ͍ ༁Λޠमਖ਼͢ΔʹϚΠάϨʔγϣϯ͕ඞཁʹͳΔ ΞϓϦέʔγϣϯͷঢ়ଶʹԠͯ͡
༁όʔδϣϯཧ͞Εͨํ͕ྑ͍
ଟݴޠԽվֵͷऔΓΈ Ҋ$47547ϑΝΠϧͰ༁σʔλΛҰݩཧ͠ɺ(JU)VCϦϙδτ Ϧʹஔ͍ͯόʔδϣϯཧ͢Δɻͦͷ্Ͱ֤ϓϥοτϑΥʔϜʹద ͳܗࣜͷ༁ϑΝΠϧʹมɾ͢Δɻ $47547 .string .xml .json
.po
ଟݴޠԽվֵͷऔΓΈ Ҋ$47547ϑΝΠϧͰ༁σʔλΛҰݩཧ͠ɺ(JU)VCϦϙδτ Ϧʹஔ͍ͯόʔδϣϯཧ͢Δɻͦͷ্Ͱ֤ϓϥοτϑΥʔϜʹద ͳܗࣜͷ༁ϑΝΠϧʹมɾ͢Δɻ ϝϦοτ ΞϓϦέʔγϣϯͷঢ়ଶͱ༁Λඥ͚ͮΒΕΔ σϝϦοτ ݩϑΝΠϧ͔Β֤ϓϥοτϑΥʔϜͰඞཁͳܗࣜͷ༁ϑΝΠϧͷม
Λ࣮͠ͳ͚ΕͳΒͳ͍ͷͰίετ͕͔͔Δ
9 ͪΐͬͱͬͯɻ ͨͪͦͦଟݴޠԽͷҝͷ ։ൃΛ͖ͩ͢Ζ͏͔
ଟݴޠԽվֵͷऔΓΈ ଟݴޠԽͱ͍͏ͷͦΕ͚ͩͰଟେͳίετ͕͔ ͔Δ w ༁Ұཡɾݕࡧ͕ग़དྷΔཧը໘ w ༁Ճɾमਖ਼ɾআ w
༁ཤྺ ୭͕͍ͭͲͷΑ͏ʹ༁Λߋ৽͔ͨ͠ w ༁ϑΝΠϧมɾ w Ҭʹ߹Θͤͨ࣌ɾ௨՟ͷද࣮ࣔ w FUD
9 ଟݴޠԽॏཁͳཁૉͰ͋Δ ͔͠͠։ൃͷຊ࣭Ͱͳ͍ ଟݴޠԽ֎෦αʔϏεʹͤ ։ൃऀΞϓϦέʔγϣϯͷ։ൃʹूத͢Δ
ଟݴޠԽվֵͷऔΓΈ ࠷ऴҊ ֤ϓϥοτϑΥʔϜͰ༻͢Δ༁ϑΝΠϧͦΕͧΕͷ (JU)VCϦϙδτϦʹஔ͍ͯྑ͍ɻ ͔͠͠༁ͷཧ ݕࡧɾՃɾमਖ਼ɾআ ֎෦αʔϏεͰߦ͏ɻ
ͦͷ্Ͱ֎෦αʔϏεͷ༁σʔλͱ(JU)VCϦϙδτϦ ͷ༁ϑΝΠϧΛ࿈ܞ͠ɺόʔδϣϯཧ͢Δɻ
9 Ұମ͓લԿΛݴ͍ͬͯΔΜͩ ʉʔʉʀ
9 ࣮ࡍʹαʔϏεΛհ͠ͳ͕Βઆ໌͠·͢
༁ϚωδϝϯταʔϏεᶃ1ISBTF"QQ Translate Language Files Online in Minutes. https://phraseapp.com/
༁ϚωδϝϯταʔϏεᶃ1ISBTF"QQ (JU)VCϦϙδτϦͷQPϑΝΠϧͱ1ISBTF"QQ ͷϓϩδΣΫτΛඥ͚ {GitHub Personal Access Token} {PhraseApp
Project Id}
༁ϚωδϝϯταʔϏεᶃ1ISBTF"QQ (JU)VC࿈ܞʹΑͬͯಛఆͷϒϥϯν͔Β༁σʔλΛ औΓࠐΉɺ͘͠ٯʹ1VMM3FRVFTUΛ࡞Δࣄ͕Ͱ͖Δ खܰʹ։ൃऀҎ֎Ͱ༁ͷ13Λ࡞Ͱ͖Δ
༁ϚωδϝϯταʔϏεᶄ-PLBMJTF https://lokalise.co/
༁ϚωδϝϯταʔϏεᶄ-PLBMJTF *O$POUFYU&EJUPS ը໘ʹදࣔ͞Ε͍ͯΔจݴ༁Λमਖ਼͢Δ͜ͱ͕Մೳ (PhraseAppಉ༷ͷػೳΛ͍࣋ͬͯΔ) https://docs.lokalise.co/developer-docs/livejs-web-in-context-editor
༁ϚωδϝϯταʔϏεᶄ-PLBMJTF (JU)VCͪΖΜɺ4LFUDI +JSB 4MBDL ༷ʑͳαʔϏεͱ֎෦࿈ܞ͕Մೳ https://lokalise.co/integrations/
·ͱΊ ։ൃऀϢʔβʔʹՁΛಧ͚Δҝͷ։ൃʹઐ೦͠Α͏ɻ ͦΕҎ֎ͷ෦ɺಛʹଟݴޠԽࣗୡͰཧӡ༻ΛͲ ͏ͤͣʹࡁΉ͔Λߟ͑Α͏ɻ
9 5IBOLTGPS-JTUFOJOH ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠