å®éã«ã¯ãAndroidãšiOSã§ãå Žåã«ãã£ãŠã¯Windows Phoneã§ããã«ã¢ããªã±ãŒã·ã§ã³ããªãªãŒã¹ããå¿ èŠããããŸãã ãã®å Žåãäžéšã®éçºè ã¯ããŒã«ã©ã€ãºã®åé¡ãäºåã«è§£æ±ºããåãã©ãããã©ãŒã ãåå¥ã«ç¿»èš³ããŸãã åæãããæé«ã®æ è¡ã§ã¯ãããŸããã ãã®åé¡ã解決ããããšã決ããåœæããããã¯ãŒã¯äžã§ãGoogleã¹ãã¬ããã·ãŒãããæååãªãœãŒã¹ãããŠã³ããŒãããããã®ãŠãŒãã£ãªãã£ãèŠã€ããããšã¯ãã§ã«å¯èœã§ãããããããã®ã»ãšãã©ã¯å°ãªããšãäžåšçšã«èŠããŸããã ç§ã¯çµ¶å¯Ÿã«ãã®ç¶æ³ã奜ãã§ã¯ãããŸããã§ããã ãã®çµæãLocoLaserãèªçããŸãã-䜿ããããããããéåžžã«ã¹ããŒããªJavaã®ãŠãŒãã£ãªãã£ã§ãã æ°å¹Žã®éãç§ã¯ãããä»äºã®ãããžã§ã¯ãã§ã®ã¿äœ¿çšããŠããŸããã ãã®éã圌女ã¯ãªããšãè±å¯ãªæ©èœãæé·ãããããšãã§ããä»ã§ã¯äžè¬ã«å ¬éããæºåãã§ããŠããŸãã
ãã®èšäºã§ã¯ãLocoLaserãšã¯äœããããããããžã§ã¯ãã«çµ±åããæ¹æ³ã«ã€ããŠèª¬æããŸãã ãŸãããŠãŒãã£ãªãã£ã®æ©èœãèŠãŠãããAndroidçšã®Gradleãã©ã°ã€ã³ãiOSçšã®Bashã¹ã¯ãªãããªã©ãããå ·äœçãªãã®ã«é²ã¿ãŸãã ç§ã¯æã åãããšãããã®ã«ååãªæ zyãªããã°ã©ããŒãªã®ã§ãåæã»ããã¢ããã®åŸãå¿ èŠãªãšãã«å¿ èŠãªã¿ã¹ã¯ãèµ·åããã ãã§æžãããã«ãã¹ãŠãè¡ãããŸãã 翻蚳è ã«ãšã£ãŠã翻蚳ã¯éåžžã«ã·ã³ãã«ã«èŠããŸããGoogleããŒãã«ãè¡ãšå ±æããé©åãªåã«ç¿»èš³ãå ¥åããŸãã èšèªãè¿œå ããå¿ èŠãããå Žåã¯ãæ°ããèšèªã§å¥ã®åãè¿œå ããã ãã§ãã Googleã¹ãã¬ããã·ãŒãã䜿çšãããšãè¡šãç·šéããã¢ã¯ã»ã¹æš©ãåå¥ã«èšå®ã§ãããããå翻蚳è ã¯ããããã®èšèªã®åã«ã®ã¿ã¢ã¯ã»ã¹ã§ããŸãã
èŠå
èšäºã®å ¬é以éãã©ã€ãã©ãªã«ã¯ããã€ãã®éèŠãªå€æŽãå ããããŠããããã®èšäºã«èšèŒãããŠããããã€ãã®ç¹ã¯ãã¯ãé¢ä¿ãããŸããã ãã®èšäºã®æåŸã«ãªã¹ããããŠãããªããžããªãŒã§ææ°ã®æ瀺ãšäŸãèŠã€ããããšãã§ããŸãã
æ§æãã¡ã€ã«
ãããããŠãŒãã£ãªãã£ã«æ»ããŸãã ããŸãã«ãåçŽåãããŠãããããããèªäœã¯éåžžã®jarãã¡ã€ã«ã§ãã BintrayãªããžããªããããŠã³ããŒãã§ããŸã ã ãŠãŒãã£ãªãã£ãèµ·åããæãç°¡åãªæ¹æ³ã¯ãã³ã³ãœãŒã«ããå®è¡ããããšã§ãã ã³ã³ãœãŒã«ã³ãã³ãã¯æ¬¡ã®ããã«ãªããŸãã
java -jar loco-laser-google.jar localization_config.json
åè1
ã³ãã³ããå®è¡ããã«ã¯ããã·ã³ã«Javaãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
åè2ã³ãã³ãã®å®è¡åŸã察å¿ãããªãœãŒã¹ãã¡ã€ã«ãäœæãããå¿ èŠãªãã©ã«ããŒã«é 眮ãããŸãã æ§æãã¡ã€ã«ãžã®ãã¹ãæåã®ãã©ã¡ãŒã¿ãŒãšããŠæž¡ãå¿ èŠããããŸãã äžèšã®äŸã§ã¯ãããã¯ãã¡ã€ã«
ç¹°ãè¿ããŸããããããžã§ã¯ãã§ãŠãŒãã£ãªãã£ã䜿çšããããã«jarãçŽæ¥ããŠã³ããŒãããå¿ èŠã¯ãããŸããã ãããã®ç®çã®ããã«ãæ¢è£œã®ã¹ã¯ãªãããšãã©ã°ã€ã³ããããŸãã
"localization_config.json"
ã§ãã ã€ã³ããŒããšãšã¯ã¹ããŒãã®ãã¹ãŠã®è€éãªèšå®ãæ åœããã®ã¯åœŒã§ãã ãã¡ã€ã«ã¯ãããšãã°æ¬¡ã®ããã«èŠããããã¹ãJSONã§ãã
{ "platform": "android", "source": { "id":"1JZxUcu30BjxLwHg12bdHTxjDgsGFX9HA9zC4Jd8cuUM", "column_key":"key", "column_locales":["base", "ru"] } }
ãã®äŸã«ã¯ãå®è¡ããæå°éã®ãã©ã¡ãŒã¿ãŒãå«ãŸããŠããŸãã ãããã®æå³ãèŠãŠã¿ãŸãããã
"platform"
ãã©ã¡ãŒã¿ãŒã¯ãã€ã³ããŒããå®è¡ããããã©ãããã©ãŒã ã瀺ããŸãã
"android"
ãš
"ios"
ã®2ã€ã®ãªãã·ã§ã³ã®ããããã䜿çšã§ããŸãïŒWindows Phoneã¯ãŸã ãµããŒããããŠããŸããããããã¯æéã®åé¡ã§ãïŒã 圢åŒã«å ããŠããã©ãããã©ãŒã ã¯ããªãœãŒã¹ãå«ããã¡ã€ã«ã®å Žæããããã®ååãããã³äžæãã¡ã€ã«ãä¿åããå Žæãæ åœããŸãã
"source"
ãã©ã¡ãŒã¿ãŒã¯JSONãªããžã§ã¯ãã§ãã ãã®å 容ã¯ãè¡ãã©ãã§ã©ã®ããã«ããŒããããããæ åœããŸãã ãã©ã¡ãŒã¿ã®æå°ã»ããã¯ã
"column_key"
"id"
ã
"column_key"
ãããã³
"column_locales"
ã§ãã
"source.id"
èå¥åã¯GoogleããŒãã«IDã§ããå¿ èŠããããŸãã ãã®èå¥åãèŠã€ããã«ã¯ãããŒãã«ã®URLã調ã¹ãå¿ èŠããããŸãã docs.google.com/spreadsheets/d/1JZxUcu30BjxLwHg12bdHTxjDgsGFX9HA9zC4Jd8cuUMã®ããã«ãªããŸãã ãã®äŸã§ã¯ãèå¥åã¯
"1JZxUcu30BjxLwHg12bdHTxjDgsGFX9HA9zC4Jd8cuUM"
ã§ãã ã¡ãªã¿ã«ããªã³ã¯ã¯ã¯ãªãã¯å¯èœã§ããããã®äžã«ããŒãã«ã®å®éã®äŸãèŠãããšãã§ããŸãã
æ®ãã®ãã©ã¡ãŒã¿ãŒã§ã¯ããã¹ãŠãéåžžã«åçŽã§ãã
"source.column_key"
ã«ã¯ããŒãæã€åã®ååãå«ãŸãã
"source.column_locales"
å€ãæã€ååã®é åãå«ãŸããŸããååããã±ãŒã«ã§ãã
"base"
ãšããåèª
"base"
ãããŒã¹ãã±ãŒã«çšã«äºçŽãããŠããŸãã
ããã§ãå°ãäœè«ãããŠãããŒãã«ã®æ§é ã決å®ãããšåæã«ãååãäœã§ããããæŽçãã䟡å€ããããŸãã ç°¡åãªå ŽåãLocoLaserã¯æåã®ãåãæ¶ãç·ãã®è¡ãååã®ããè¡ãšããŠæ±ããŸãã ãåãæ¶ãç·ã¯ä»ã«äœã§ããïŒããšå°ããŸãã å®éãè¡šã®æåã®åã¯å ¬åŒã®ç®çã§äœ¿çšãããŠããŸãã çŸæç¹ã§ã¯ãæåã®åã«
"-"
è¿œå ããŠè¡ããæ¶ããããšãã§ããŸãã åãæ¶ãç·ã¯å®å šã«ç¡èŠãããããŒã«ã©ã€ãºã«ã¯åå ããŸããã äžèšã®ãªã³ã¯ã䜿çšããŠããŒãã«ãèŠããšãã人éãã®èŠåºããæã€æåã®è¡ããåãæ¶ãç·ãã§ãããããŒãã«ã®è£ 食èŠçŽ ã«ãããªãããšãããããŸãã ãŸãããªãœãŒã¹ã䜿çšããŠè¡ããåé€ãããããšãã§ããŸããããšãã°ãè¡ãã©ãã§ã䜿çšãããŠããªãå Žåã§ããåé€ããã®ã¯æ®å¿µã§ãã
ãã©ã¡ãŒã¿ã®å šãªã¹ã
äžèšã®ãã©ã¡ãŒã¿ã¯ããŠãŒãã£ãªãã£ãæ©èœããã®ã«ååã§ãã ãã ããä»ã«ããããŸãã ããããã詳现ã«èª¬æããã®ã§ã¯ãªããè¡šã®åœ¢åŒã§å®å šãªãªã¹ãã®ã¿ãæäŸããŸãã
åºæ
ãã©ã¡ãŒã¿ | çš®é¡ | 説æ |
---|---|---|
id
| ã²ã | Googleã¹ãã¬ããã·ãŒãã®ã¹ãã¬ããã·ãŒãIDã ããŒãã«URLã«ã¯ãã®èå¥åãå«ãŸããŠããŸãïŒhttps://docs.google.com/spreadsheets/d/*sheet_id*ïŒã å¿ é ã§ãã |
column_key
| ã²ã | ããŒåã®ååã å¿ é ã§ãã |
column_locales
| æååé å | å€ãæã€ååã®é
åãååããã±ãŒã«ã§ãã åºæ¬ãã±ãŒã«ã®å Žåã "base"
ãšããååã®åã䜿çšããŸãã å¿ é ã§ãã |
column_quantity
| ã²ã | å®éçãªå€ãæã€åã®ååã ããŒãã«å
ã®ã»ã«ã«ã¯ã次ã®ããããã®å€ãå«ãŸããŠããå¿
èŠããããŸãïŒ zero
ã one
ã two
ã few
ã many
ã other
ã 空ã®æååã¯ãã®ä»ãšããŠæ±ãããŸãã ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã ããã©ã«ãã§ã¯ãå®éå€ã¯äœ¿çšãããŸããã |
column_comment
| ã²ã | ã³ã¡ã³ãåã®ååã ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã ããã©ã«ãã§ã¯ãã³ã¡ã³ãã¯ãªãœãŒã¹ãã¡ã€ã«ã«æžã蟌ãŸããŸããã |
worksheet_title
| ã²ã | Google SheetããŒãã«å ã®ã·ãŒãã®ååã ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã ããã©ã«ãã§ã¯ãæåã®ã·ãŒãã䜿çšãããŸãã |
credential_file
| ã²ã | OAuthèªèšŒã®è³æ Œæ å ±ãå«ããã¡ã€ã«ãžã®ãã¹ã çžå¯Ÿãã¹ã䜿çšããå Žåããã¡ã€ã«ãžã®ãã¹ã¯äœæ¥ãã£ã¬ã¯ããªã«çžå¯Ÿçã§ãã ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã |
type
| ã²ã | ããŒã¿ãœãŒã¹ã®ã¿ã€ãã "googlesheet"
å¿ èŠã "googlesheet"
ãŸãã ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã ãã ããæ§æãã¡ã€ã«ãšãŠãŒãã£ãªãã£ãåããœãŒã¹ã¿ã€ãã§æ©èœããŠããããšã確èªããå Žåã¯ããã®ã¿ã€ããæå®ããå¿ èŠããããŸãã |
åã«èšã£ãããã«ããã©ãããã©ãŒã ã¯ããã«åºæã®ããã€ãã®ãã©ã¡ãŒã¿ãŒãèšå®ããŸãã äžèšã®ããã«ãã©ãããã©ãŒã ãæååãšããŠã§ã¯ãªããJSONãªããžã§ã¯ããšããŠå®çŸ©ãããšããããã®ãã©ã¡ãŒã¿ãŒãå€æŽã§ããŸãã ãã®ãªããžã§ã¯ãã®å¯èœãªããããã£ã®ãªã¹ãã¯æ¬¡ã®ãšããã§ãã
ãã©ã¡ãŒã¿ | çš®é¡ | 説æ |
---|---|---|
type
| ã²ã | ãã©ãããã©ãŒã ã®ã¿ã€ãã å¯èœãªå€ã¯ã "android"
ãŸã㯠"ios"
ã§ãã å¿ é ã§ãã |
res_name
| ã²ã | æ¡åŒµåãªãã®ãªãœãŒã¹ãã¡ã€ã«åã æ¡åŒµåã¯ããã¡ã€ã«ã®çš®é¡ã«å¿ããŠéžæãããŸãã ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã
ããã©ã«ãå€ïŒ Android- "strings"
iOS- "Localizable"
|
res_dir
| ã²ã | ãªãœãŒã¹ãã£ã¬ã¯ããªãžã®ãã¹ã ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã
ããã©ã«ãå€ïŒ Android- "./src/main/res/"
iOS- "./"
|
temp_dir
| ã²ã | äžæãã¡ã€ã«ãä¿åãããã£ã¬ã¯ããªãžã®ãã¹ã ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã
ããã©ã«ãå€ïŒ Android- "./build/tmp/"
iOS- "../DerivedData/LocoLaserTemp/"
|
éèŠïŒãã®ä»ã®ãã©ã¡ãŒã¿ãŒ
ãã¹ãŠã®çžå¯Ÿãã¹ã¯ãäœæ¥ãã£ã¬ã¯ããªã«çžå¯Ÿçã§ãã ããã©ã«ãã§ã¯ãæ§æãã¡ã€ã«ã®ãã£ã¬ã¯ããªãäœæ¥ãã£ã¬ã¯ããªãšããŠäœ¿çšãããŸãã
æ§æã«ã¯ããã©ãããã©ãŒã ãšãœãŒã¹ã«å ããŠãããã«ããã€ãã®ãã©ã¡ãŒã¿ãŒãå«ãŸããå ŽåããããŸãã ãããã¯ãã¹ãŠçµæã«å€§ãã圱é¿ããŸãã
ãã©ã¡ãŒã¿ | çš®é¡ | 説æ |
---|---|---|
work_dir
| ã²ã | äœæ¥ãã©ã«ããŒãžã®ãã¹ã ãã¹ãŠã®çžå¯Ÿãã¹ã¯ããã®ãã©ã«ããŒã«çžå¯Ÿçã§ãã ããã©ã«ãã¯æ§æãã¡ã€ã«ã®ãã£ã¬ã¯ããªã§ãã |
force_import
| ããŒã«å€ | ãŠãŒãã£ãªãã£ã¯ãæåŸã®å®è¡æã®ãªãœãŒã¹ã®ç¶æ
ãèšæ¶ããäžå¿
èŠãªå¿
èŠãªãã«ã€ã³ããŒããéå§ããªãããã«ããŸãã ãããç¡èŠããŠåžžã«å®å
šã«ã€ã³ããŒãããã«ã¯ã force_import
ã true
ã«èšå®ã true
ã ããã©ã«ãå€ã¯falseã§ãã |
conflict_strategy
| ã²ã | ãã©ãããã©ãŒã ãªãœãŒã¹ãšGoogleã¹ãã¬ããã·ãŒãã®ãªãœãŒã¹ãçµã¿åãããéã®ç«¶åã解決ããæ¹æ³ãå®çŸ©ããŸãã 3ã€ã®ãªãã·ã§ã³ããããŸãã
keep_new_platform
ã§ãã |
duplicate_comments
| ããŒã«å€ | duplicate_comments = false
å Žåããã®ã³ã¡ã³ããããŒã«ã©ã€ãºãããæååãšçããå Žåãã³ã¡ã³ãã¯ãªãœãŒã¹ãã¡ã€ã«ã«è¿œå ãããŸããã ããã©ã«ãå€ã¯ false
ã§ãã |
delay
| é·ã | 次ã®ããŒã«ã©ã€ãºãŸã§ã®æå°æéãå®çŸ©ããååäœã®æéã ããŒã«ãªãŒãŒã·ã§ã³ã¯ãdelayãã©ã¡ãŒã¿ãŒã§æå®ãããŠãããããé »ç¹ã«å®è¡ãããŸããã force_import
䜿çšããã force_import
é 延ã¯ç¡èŠãããŸãã |
duplicate_comments
ãã©ã¡ãŒã¿ãŒã¯ãåºæ¬ãã±ãŒã«ãã³ã¡ã³ããšããŠäœ¿çšããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã ãã®å ŽåãããŒã«ã©ã€ãºããããªãœãŒã¹ã«ã¯åžžã«ããŒã¹èšèªïŒéåžžã¯è±èªïŒã®ããã¹ãä»ãã®ã³ã¡ã³ãããããããŒã¹ãªãœãŒã¹ã«ã¯ã³ã¡ã³ãããããŸããããã®å Žåããããã¯æååã®å€ãç¹°ãè¿ããäœåã§ãã
duplicate_comments = falseã®AndroidãªãœãŒã¹ã®äŸ
/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">LocoLaser example</string> <string name="screen_main_app_description">This is example application of how to use the LocoLaser.</string> <string name="screen_main_plural_example_title">Plural string examples</string> </resources>
/values-ru/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> /* LocoLaser example */ <string name="app_name">LocoLaser </string> /* This is example application of how to use the LocoLaser. */ <string name="screen_main_app_description"> LocoLaser.</string> /* Plural string examples */ <string name="screen_main_plural_example_title"> Plural </string> </resources>
ã«ã¹ã¿ãã€ãºãããlocalization_config.jsonã®èšå®äŸ
{ "platform": { "type":"android", "res_name":"strings_intro" }, "source": { "type":"googlesheet", "id":"1JZxUcu30BjxLwHg12bdHTxjDgsGFX9HA9zC4Jd8cuUM", "column_key":"key", "column_locales":["base", "ru"], "column_comment":"base", âworksheet_titleâ:âStrings introâ }, "force_import":true, "conflict_strategy":âkeep_new_platformâ, "delay":60, }
ã³ã³ãœãŒã«åŒæ°
ã³ã³ãœãŒã«ããããŒã«ã©ã€ã¶ãŒãèµ·åãããšãããã€ãã®æ§æãã©ã¡ãŒã¿ãŒãå€æŽã§ããŸãã ãããè¡ãã«ã¯ãé©åãªåŒæ°ãè¿œå ããŸãã éèŠïŒæ§æãã¡ã€ã«ãžã®ãã¹ã¯åžžã«æåã«æå®ãããŸãã æ®ãã®åŒæ°ã®é åºã¯éèŠã§ã¯ãããŸããã
åŒæ° | 説æ |
---|---|
--force
ãŸã㯠--f
| ãã©ã°ã "force_import = true"
èšå®ã "force_import = true"
|
-cs *string conflict strategy*
| "conflict_strategy"
ããããã£ããªãŒããŒã©ã€ãããŸã |
-delay *long delay*
| "delay"
ããããã£ããªãŒããŒã©ã€ãããŸã |
ã³ãã³ãäŸ
java -jar loco-laser-google.jar localization_config.json --f -cs keep_new_platform
Androidããã³Gradleãã©ã°ã€ã³
Androidã§LocoLaserã䜿çšããå Žåã¯ãç¹å¥ãªGradleãã©ã°ã€ã³ã䜿çšããå¿ èŠããããŸãã 圌ã¯ããããžã§ã¯ãã«ããã€ãã®ã¿ã¹ã¯ãè¿œå ãã ãããŒã«ãªãŒãŒã·ã§ã³ãã°ã«ãŒãã«çµ±åããŸããã ãã©ã°ã€ã³ã®æ¥ç¶ã«ã¯ããã¯ã©ã·ãã¯ããšã代æ¿ãã®2ã€ã®ãªãã·ã§ã³ããããŸãã
ãã©ã°ã€ã³ãæ¥ç¶ããå€å
žçãªæ¹æ³
ã«ãŒããããžã§ã¯ãã®
ãã¡ã€ã«ãéãã次ã®è¡ãè¿œå ããŸãã
ãã®åŸãã¢ããªã±ãŒã·ã§ã³ã¢ãžã¥ãŒã«ã®ãã¡ã€ã«
éãããã¡ã€ã«ã®å é ã«1è¡è¿œå ããŸãã
"build.gradle"
ãã¡ã€ã«ãéãã次ã®è¡ãè¿œå ããŸãã
buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "gradle.plugin.ru.pocketbyte.locolaser:plugin:1.0.1" } }
ãã®åŸãã¢ããªã±ãŒã·ã§ã³ã¢ãžã¥ãŒã«ã®ãã¡ã€ã«
"build.gradle"
éãããã¡ã€ã«ã®å é ã«1è¡è¿œå ããŸãã
apply plugin: "ru.pocketbyte.locolaser"
ãã©ã°ã€ã³ãæ¥ç¶ãã代æ¿æ¹æ³
ãã®æ¹æ³ã¯ãGradleããŒãžã§ã³2.1以éã®ãããžã§ã¯ãã«é©ããŠããããããããã€ã³ãã¥ããŒã·ã§ã³ãæ©èœã䜿çšããŸãïŒãèªèº«ã®è²¬ä»»ã§äœ¿çšããŠãã ãããGradleããŒã ã¯èŠåããŠããŸãïŒã ã«ãŒã
äœããæžãå¿ èŠã¯ãããŸããã å¿ èŠãª
ã¢ãžã¥ãŒã«ãéãããã¡ã€ã«ã®äžçªäžã«æ¬¡ã®è¡ãè¿œå ããŸã
ããã§ããè¡ãäžçªäžã«ããããšã«æ³šæããŠãã ããã 圌女ã®åã«ã¯ä»ã«äœã眮ããªãã§ãã ããã ããã§ãªãå Žåããããžã§ã¯ãã¯åæãããŸããã
"build.gradle"
äœããæžãå¿ èŠã¯ãããŸããã å¿ èŠãª
"build.gradle"
ã¢ãžã¥ãŒã«ãéãããã¡ã€ã«ã®äžçªäžã«æ¬¡ã®è¡ãè¿œå ããŸã
plugins { id "ru.pocketbyte.locolaser" version "1.0.1" }
ããã§ããè¡ãäžçªäžã«ããããšã«æ³šæããŠãã ããã 圌女ã®åã«ã¯ä»ã«äœã眮ããªãã§ãã ããã ããã§ãªãå Žåããããžã§ã¯ãã¯åæãããŸããã
äžèšã®ããããã®æ¹æ³ã§ãã©ã°ã€ã³ãæ¥ç¶ããåŸãåããã¡ã€ã«ã«æ¬¡ã®äŸåé¢ä¿ãè¿œå ããŸãã
dependencies { ... localize 'ru.pocketbyte.locolaser:locolaser-mobile-googlesheet:1.1.+' }
ããã§ãæ§æãã¡ã€ã«ãã¢ããªã±ãŒã·ã§ã³ã¢ãžã¥ãŒã«ã®ãã©ã«ããŒã«é 眮ããã ãã§ãäœæ¥ãéå§ã§ããŸãã ããã©ã«ãã§ã¯ããã©ã°ã€ã³ã¯èšå®ãã¡ã€ã«ãšããŠ
"localize_config.json"
ãšãããã¡ã€ã«ã䜿çšããŸãã ãããžã§ã¯ããåæããããšã ãããŒã«ãªãŒãŒã·ã§ã³ãã°ã«ãŒããã¿ã¹ã¯ã®Gradleãªã¹ãã«è¡šç€ºãããŸããããã«ã¯3ã€ã®ã¿ã¹ã¯ãå«ãŸããŠããŸãã
localize-æšæºãã©ã¡ãŒã¿ãŒã§LocoLaserãéå§ããŸãã
localizeForce -
"--force"
--force
"--force"
ãã©ã°ã䜿çšããŠLocoLaserãèµ·åããŸãã
localizeExportNew-ãã©ã°
"--force"
ããã³
"conflict_strategy" = "export_new_platform"
ãŸãã
ãã¹ãŠã®ãã«ãã§ããŒã«ã©ã€ãºãéå§ããå Žåã¯ã preBuildã¿ã¹ã¯ã«äŸåé¢ä¿ãè¿œå ããŸãã
afterEvaluate { preBuild.dependsOn project.tasks.localize }
GitHubã®Androidãããžã§ã¯ãã®äŸïŒ github.com/PocketByte/locolaser-android-example
Gradleãã©ã°ã€ã³ã䜿çšã ããŒã«ãªãŒãŒã·ã§ã³ã¯ãã«ãããã»ã¹ã«çµã¿èŸŒãŸããŠããŸãã
iOSã¢ããªã±ãŒã·ã§ã³ã®ããŒã«ã©ã€ãº
Androidãšã¯ç°ãªããiOSã«ã¯Gradleã®ãããªåŒ·åãªãã«ãã·ã¹ãã ããªããããåé¿çã䜿çšããå¿ èŠããããŸããå€ãã®åé¿çããããiOSã€ããªãã®ãŒã«å®å šã«é©åããããã§ãã æ§æãã¡ã€ã«ããœãŒã¹ãã©ã«ããŒã«ä¿åããããšããå§ãããŸããéåžžããã®ãã©ã«ããŒã®ååã¯ãããžã§ã¯ãã®ååãšäžèŽããŸãïŒãããããã©ã«ãå€ã䜿çšã§ããå¯äžã®å Žæã§ãïŒã
ãããã£ãŠãæ§æãã¡ã€ã«ãäœæãããœãŒã¹ãã©ã«ããŒã«é 眮ããŸããã 䜿ãæ¹ã¯ïŒ ãŠãŒãã£ãªãã£ã®ã¢ãŒãã£ãã¡ã¯ãã¯ãªã¢ãŒãMavenãªããžããªã«ãããããäŸåé¢ä¿ç®¡çã·ã¹ãã ãã·ãã¥ã¬ãŒãããbashã¹ã¯ãªãããäœæããæ¹æ³ãè©ŠããŸããã ããã«ãããŸãïŒ
localize.command
GROUP="ru/pocketbyte/locolaser" ARTIFACT="locolaser-mobile-googlesheet" VERSION="1.1.1" CONFIG_FILE="localization_config.json" cd "`dirname \"$0\"`" ARTIFACTS_DIR="../DerivedData/LocoLaserTemp/artifacts/$GROUP/" mkdir -p $ARTIFACTS_DIR ARTIFACT_FILE="$ARTIFACTS_DIR$ARTIFACT-$VERSION.jar" if [ -f $ARTIFACT_FILE ] then echo "Artifact already downloaded" else ARTIFACT_URL="https://bintray.com/pocketbyte/maven/download_file?file_path=$GROUP/$ARTIFACT/$VERSION/$ARTIFACT-$VERSION.jar" echo "Loading: $ARTIFACT_URL" curl -L -o $ARTIFACT_FILE $ARTIFACT_URL if [ $? -eq 0 ] then echo "Artifact downloaded" else exit $? fi fi java -jar $ARTIFACT_FILE $CONFIG_FILE
ãã®ã¹ã¯ãªããã¯ããªã¢ãŒãMavenãªããžããªãŒããjarãã¡ã€ã«ãããŠã³ããŒããã
"../DerivedData/LocoLaserTemp/artifacts/"
ãã©ã«ããŒã«é 眮ããŠããå®è¡ããããã«èµ·åããŸãã æ§æãã¡ã€ã«ãšããŠãAndroidã®ããã«
"localize_config.json"
ãšããååã®ãã¡ã€ã«
"localize_config.json"
ãããŸãã 決å®ã¯éåžžã«å€±ç€Œã§ãã䜿çšããã¢ãŒãã£ãã¡ã¯ãã®ããŒãžã§ã³ãæ£ç¢ºã«ç€ºãå¿ èŠããããŸãã ãã ããã¿ã¹ã¯ã«å®å šã«å¯Ÿå¿ããŠãããjarãããžã§ã¯ãã«ãŠãŒãã£ãªãã£ãã¡ã€ã«ãä¿åããå¿ èŠã¯ãããŸããã çžå¯Ÿãã¹ããæšæž¬ã§ããããã«ãã¹ã¯ãªããã¯æ§æãã¡ã€ã«ãšåããã©ã«ããŒã«ä¿åããå¿ èŠããããŸãã ç§ã®ãããžã§ã¯ãã«ã¯ã localize.command ã localizeForce.command ãããã³localizeExportNew.commandã®ãããªã¹ã¯ãªãããããã€ããããŸãã ãããã®ã³ãã³ãã¯ãã¹ãŠãäžèšã®Gradleãã©ã°ã€ã³ã®ã¿ã¹ã¯ãç¹°ãè¿ããŸãã
ãã¹ãŠã®ãã«ãã§ããŒã«ã©ã€ãºãå®è¡ããå Žåã¯ãé©åãªRun scripãè¿œå ããŸãã
å®è¡ã¹ã¯ãªããã¯ã ã¿ãŒã²ããã®äŸåé¢ä¿ãã§ãŒãºã®çŽåŸã«å®è¡ããå¿ èŠããããŸãã ããã¯éèŠã§ããããšãã°ã ãã³ãã«ãªãœãŒã¹ã®ã³ããŒãã§ãŒãºã®åŸã«æ°ããè¡ãã€ã³ããŒãããããšã次ã®ãã«ãã§ã®ã¿ç®çã®çµæãé ããŠè¡šç€ºãããããã§ãã
GitHubã®iOSãããžã§ã¯ãã®äŸïŒ github.com/PocketByte/locolaser-ios-example
䜿çšãããbashã¹ã¯ãªããã ããŒã«ãªãŒãŒã·ã§ã³ã¯ãã«ãããã»ã¹ã«çµã¿èŸŒãŸããŠããŸãã
Windows Phoneããã³ãã®ä»ã®ãã©ãããã©ãŒã
æ®å¿µãªããããã®ãã©ãããã©ãŒã ã§ã®éçºã®çµéšã¯ãŸã£ãããããŸãããçŸåšåããŠããçµç¹ã§ã¯ãWindows Phoneã¢ããªã±ãŒã·ã§ã³ã®éçºã¯é·ãéè¡ãããŠããŸããã ãã®èšäºãWindows Phoneããã«æçš¿ããããšãå¿ãããizeã³ç³ãäžããŸãã ãã ããWindows Phoneéçºè ã®æ³šæãåŒãããã®ããè¯ãæ¹æ³ã¯èŠã€ãããŸããã§ããã ããªããè±å¯ãªçµéšãæã€Windows Phoneéçºè ã§ããããã®ãããã¯ã«ã€ããŠæããŠã»ããããšãããã°ãç§ã«é£çµ¡ããŠãã ããã ãŸããèªè ã®1人ãä»ã®ãã©ãããã©ãŒã ããµãŒãã¹ã§LocoLaserã䜿çšããããšã«ã€ããŠèããŠãããªããæžãããšããããããªãã§ãã ãããç§ã¯ææ¡ãåãå ¥ããŸãã
è³æ ŒèšŒæãã¡ã€ã«
Googleã¹ãã¬ããã·ãŒãã«ã¢ã¯ã»ã¹ããã«ã¯ãOAuthèªèšŒãè¡ãå¿ èŠããããŸãã ãã©ã¡ãŒã¿ãŒ
"source.credential_file"
æ§æãã¡ã€ã«ã«èšå®ãããŠããªãå ŽåãããŒã«ã©ã€ã¶ãŒãèµ·åãããšãGoogleèªèšŒããŒãžã®ãããã©ãŠã¶ãŒãèªåçã«éããŸãã èªèšŒã«æåãããšããŠãŒãã£ãªãã£ã¯äœæ¥ãç¶è¡ããŸãã 次åããã®ããŒãã«ã«ãã°ã€ã³ããå¿ èŠã¯ãããŸããã
äžèšã®ã¢ãããŒãã¯ãŠãŒã¶ãŒã®ä»å ¥ãå¿ èŠãšãããããããŒã«ã©ã€ãºããã»ã¹ãèªåçã«è¡ãããç¶æ³ã«ã¯é©ããŠããŸããã ããã»ã¹ãåžžã«èªåçã«å®è¡ãããããã«ããã«ã¯ã
credential_file
æå®ããå¿ èŠããã
credential_file
ã è³æ Œæ å ±ãã¡ã€ã«ãšããŠã¯ãGoogleãµãŒãã¹ã¢ã«ãŠã³ããã¡ã€ã«ãé©ããŠããŸãã Google Developers Consoleã§äœæããã«ã¯ã次ãå®è¡ããå¿ èŠããããŸãã
- ã¢ããªã±ãŒã·ã§ã³çšã«ãŸã äœæãããŠããªãå Žåã¯ãæ°ãããããžã§ã¯ããäœæããŸãã
- ãµãŒãã¹ã¢ã«ãŠã³ãã®ãªã¹ããéããŸã ã ãããžã§ã¯ããéžæããããã«æ±ããããããã¢ããªã±ãŒã·ã§ã³ã®ãããžã§ã¯ããéžæããŸãã
- [ ãµãŒãã¹ã¢ã«ãŠã³ãã®äœæ]ãã¯ãªãã¯ããŸã ã
- [ ãµãŒãã¹ã¢ã«ãŠã³ãã®äœæ]ãŠã£ã³ããŠã§ãæ°ãããµãŒãã¹ã¢ã«ãŠã³ãã®ååãå ¥åãã[ æ°ããç§å¯ããŒã®äœæ]ãã©ã°ãæå¹ã«ããŠãJSONããŒã¿ã€ããéžæããŸãã ã¢ã«ãŠã³ãã®åœ¹å²ãéžæããå¿ èŠã¯ãããŸããã äœæãã¯ãªãã¯ããŸã ã
ãµãŒãã¹ã¢ã«ãŠã³ããäœæããããã®åŸãç§å¯ããŒãã¡ã€ã«ãèªåçã«ããŠã³ããŒããããŸãã ãã®ãã¡ã€ã«ãžã®ãã¹ã¯ããã©ã¡ãŒã¿ãŒ
"source.credential_file"
ãšããŠæå®ããå¿ èŠããããŸãã ãµãŒãã¹ã¢ã«ãŠã³ããGoogleã¹ãã¬ããã·ãŒãã«ã¢ã¯ã»ã¹ã§ããããã«ããã«ã¯ã以åã«äœæãããµãŒãã¹ã¢ã«ãŠã³ããšå ±æããå¿ èŠããããŸãã å ±æããå ŽåããµãŒãã¹ã¢ã«ãŠã³ãèå¥åãé»åã¡ãŒã«ãšããŠæå®ããŸãã ãã®èå¥åã¯ããµãŒãã¹ã¢ã«ãŠã³ãã®ãªã¹ãã§ç¢ºèªããããããŠã³ããŒãããããŒãã¡ã€ã«ã§ç¢ºèªã§ããŸãã
ãµãŒãã¹ããŒãã¡ã€ã«ã®äŸ
-ããã¯ã¢ã«ãŠã³ãèå¥åã§ãã
{ "type": "service_account", "project_id": "myapp-1086", "private_key_id": "b67c2edcc47c7053c035d8681c8eb7e9f4d90c09", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJUV49mSQB2NSO\nw+tfQWq4pP63U4t7W8V6O6E7FABbYS5N4g35nRzVEj5NciqI27shHSKVrsl7U5ji\nM0IIA+vi+dgHXwHfCPhS9d85xZ73fuqFaj29iru+pTq9tuNieLDl60L04oCc1qQKBgQDLsMMnX2r9qkQw01H5L2WRB9R6er+bO4DE\n8Ecpripfd/e7qq89WcGu1H8S+3Jy49dBmN709vPvVcsGQx8mDdYdm4P0WPkKbgTo\nt12OA07uiY6Zn54rW5CXrjdoscPXB94AS2ps4M3/xY5hHTxwtS8yJxoUgTVEfgNB\nDwzNrZSCVEMCoBAIYl6rWGITgNaR0+FLuP+kjZw\nHsLdkU8173J3nhuYhxo7N90BhO08lquIQ7bJAoGBAKLz\nVRxRdFlcdlMNK34K0dkVh4E4Y8K+9oQWqQeKIrHfWpuSr8CH5q+Dpek8qVGKPnFm\n567XRUzJuLLYzbl2xj1HZWf8KbeTTnALKYg8Jz\nxXXvLlZl2OJ8Frr9ry1DEszPkwWwTQJg5bRG7Z//QfpyEZ2PUvpCNVVpeRuMmUhv\nu5rSLa0G+C97/XIGz/O/1ME9WXU6ZNRwwDkSDw6L7AIrXY8V+8pIRL9e0ks4Uw/A\n6ACYrlYMYYAIl79MNrUrizvF5KwxLiohHJ5KVpThGuRZDaidCPp9BL/h8tfhXPel\nwQot9dM8P4CmQNR/fMpytQSVk7vv95B2JHrt6QmIsQKBgQD9BJ8gfZUVhlxtuaWO\nMKl1PjiD+YKhz4rmIZUKM84xphsGYUBhH29s1zb98u9vlEnlx3bGUtDakNnjTDQp\nagQv22+6STL+0s1haOxyfbi1jIzXvzh47yij6+v7WEIdNj45WV9kpcFTi2oUXURt\nEi3WskYTijYGbDNQmpG2kmY\nDz0KdeTFJxsnFstTT/VozEGvNIHf+8PhKv0123dBFuqSgBD5SFHDp3tQ2IzC81Jm\n5FJLldk3Hw1QRh6+WiEJBTX6nFU4DB5tVXKhbPOvhqYwI/CUYWWbVBQCQgqURcyr\nUdRxAHyDrxKhNrmXXKAEwR0rDz2uGTQCfJ0Zyk/Z1E7iDl/SDfYSSD70wAgGblH2\nAAIQzeoPAgMBAAECggEAb7Trswhft3qmb1V9LEzzN+OtxvHfqqKAkFO4Ijz1+b6R\n3/t4P7KTRhOqaHTZ7zjlu/kbsKzc9casRY+lqybp4/c4jNaGBklG6Vmu96E9wKBgEFPsRe88v/UaAV213Jlw0hdYE9I19yW6z7OSl+Q0dflDbLO5cRs\nTeHlh+9zhzThLVYf79vvwrO4klXm9Mv/7sa/uQ54GK7IkXVklSxUoZpThoOme5hT\n+8ScgJSnyqEpwFQjaslbNBUxtpc9IA2bseP1S7aCVDfZtEp7rHqOFZTvSgol5YD/AoGAdIMNKvg0IiS2xcIEbyHa\nPTNrUfpHeJk/P+Frr1cmDHhGe1l0FWNg9EDlhItAW5EP15ubZPdWQRrV7RuydJlc\ngWesc2RLPIG8+so1TpG1F62+tsQ9lGSF5imiew1x7sQ3H0VIpGtSfTvSMep6fuE7\niuSVbY0UnpxGnqzo9TBAYS4=\n-----END PRIVATE KEY-----\n", "client_email": "localizator@myapp-1086.iam.gserviceaccount.com", "client_id": "704739729071909788554", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/localizator%40myapp-1086.iam.gserviceaccount.com" }
KEYã----- \ nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJUV49mSQB2NSO \ NW + tfQWq4pP63U4t7W8V6O6E7FABbYS5N4g35nRzVEj5NciqI27shHSKVrsl7U5ji \ nM0IIA + VI + dgHXwHfCPhS9d85xZ73fuqFaj29iru + pTq9tuNieLDl60L04oCc1qQKBgQDLsMMnX2r9qkQw01H5L2WRB9R6er + bO4DE \ n8Ecpripfd / e7qq89WcGu1H8S + 3Jy49dBmN709vPvVcsGQx8mDdYdm4P0WPkKbgTo \ nt12OA07uiY6Zn54rW5CXrjdoscPXB94AS2ps4M3 / xY5hHTxwtS8yJxoUgTVEfgNB \ nDwzNrZSCVEMCoBAIYl6rWGITgNaR0 + FLUP + kjZw { "type": "service_account", "project_id": "myapp-1086", "private_key_id": "b67c2edcc47c7053c035d8681c8eb7e9f4d90c09", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJUV49mSQB2NSO\nw+tfQWq4pP63U4t7W8V6O6E7FABbYS5N4g35nRzVEj5NciqI27shHSKVrsl7U5ji\nM0IIA+vi+dgHXwHfCPhS9d85xZ73fuqFaj29iru+pTq9tuNieLDl60L04oCc1qQKBgQDLsMMnX2r9qkQw01H5L2WRB9R6er+bO4DE\n8Ecpripfd/e7qq89WcGu1H8S+3Jy49dBmN709vPvVcsGQx8mDdYdm4P0WPkKbgTo\nt12OA07uiY6Zn54rW5CXrjdoscPXB94AS2ps4M3/xY5hHTxwtS8yJxoUgTVEfgNB\nDwzNrZSCVEMCoBAIYl6rWGITgNaR0+FLuP+kjZw\nHsLdkU8173J3nhuYhxo7N90BhO08lquIQ7bJAoGBAKLz\nVRxRdFlcdlMNK34K0dkVh4E4Y8K+9oQWqQeKIrHfWpuSr8CH5q+Dpek8qVGKPnFm\n567XRUzJuLLYzbl2xj1HZWf8KbeTTnALKYg8Jz\nxXXvLlZl2OJ8Frr9ry1DEszPkwWwTQJg5bRG7Z//QfpyEZ2PUvpCNVVpeRuMmUhv\nu5rSLa0G+C97/XIGz/O/1ME9WXU6ZNRwwDkSDw6L7AIrXY8V+8pIRL9e0ks4Uw/A\n6ACYrlYMYYAIl79MNrUrizvF5KwxLiohHJ5KVpThGuRZDaidCPp9BL/h8tfhXPel\nwQot9dM8P4CmQNR/fMpytQSVk7vv95B2JHrt6QmIsQKBgQD9BJ8gfZUVhlxtuaWO\nMKl1PjiD+YKhz4rmIZUKM84xphsGYUBhH29s1zb98u9vlEnlx3bGUtDakNnjTDQp\nagQv22+6STL+0s1haOxyfbi1jIzXvzh47yij6+v7WEIdNj45WV9kpcFTi2oUXURt\nEi3WskYTijYGbDNQmpG2kmY\nDz0KdeTFJxsnFstTT/VozEGvNIHf+8PhKv0123dBFuqSgBD5SFHDp3tQ2IzC81Jm\n5FJLldk3Hw1QRh6+WiEJBTX6nFU4DB5tVXKhbPOvhqYwI/CUYWWbVBQCQgqURcyr\nUdRxAHyDrxKhNrmXXKAEwR0rDz2uGTQCfJ0Zyk/Z1E7iDl/SDfYSSD70wAgGblH2\nAAIQzeoPAgMBAAECggEAb7Trswhft3qmb1V9LEzzN+OtxvHfqqKAkFO4Ijz1+b6R\n3/t4P7KTRhOqaHTZ7zjlu/kbsKzc9casRY+lqybp4/c4jNaGBklG6Vmu96E9wKBgEFPsRe88v/UaAV213Jlw0hdYE9I19yW6z7OSl+Q0dflDbLO5cRs\nTeHlh+9zhzThLVYf79vvwrO4klXm9Mv/7sa/uQ54GK7IkXVklSxUoZpThoOme5hT\n+8ScgJSnyqEpwFQjaslbNBUxtpc9IA2bseP1S7aCVDfZtEp7rHqOFZTvSgol5YD/AoGAdIMNKvg0IiS2xcIEbyHa\nPTNrUfpHeJk/P+Frr1cmDHhGe1l0FWNg9EDlhItAW5EP15ubZPdWQRrV7RuydJlc\ngWesc2RLPIG8+so1TpG1F62+tsQ9lGSF5imiew1x7sQ3H0VIpGtSfTvSMep6fuE7\niuSVbY0UnpxGnqzo9TBAYS4=\n-----END PRIVATE KEY-----\n", "client_email": "localizator@myapp-1086.iam.gserviceaccount.com", "client_id": "704739729071909788554", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/localizator%40myapp-1086.iam.gserviceaccount.com" }
\ n567XRUzJuLLYzbl2xj1HZWf8KbeTTnALKYg8Jz \ nxXXvLlZl2OJ8Frr9ry1DEszPkwWwTQJg5bRG7Z // QfpyEZ2PUvpCNVVpeRuMmUhv \ nu5rSLa0G + C97 / XIGz / O / 1ME9WXU6ZNRwwDkSDw6L7AIrXY8V + 8pIRL9e0ks4Uw / A \ n6ACYrlYMYYAIl79MNrUrizvF5KwxLiohHJ5KVpThGuRZDaidCPp9BL / h8tfhXPel \ nwQot9dM8P4CmQNR / fMpytQSVk7vv95B2JHrt6QmIsQKBgQD9BJ8gfZUVhlxtuaWO \ nMKl1PjiD + YKhz4rmIZUKM84xphsGYUBhH29s1zb98u9vlEnlx3bGUtDakNnjTDQp \ nagQv22 + 6STL + 0s1haOxyfbi1jIzXvzh47yij6 + v7WEIdNj45WV9kpcFTi2oUXURt \ { "type": "service_account", "project_id": "myapp-1086", "private_key_id": "b67c2edcc47c7053c035d8681c8eb7e9f4d90c09", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJUV49mSQB2NSO\nw+tfQWq4pP63U4t7W8V6O6E7FABbYS5N4g35nRzVEj5NciqI27shHSKVrsl7U5ji\nM0IIA+vi+dgHXwHfCPhS9d85xZ73fuqFaj29iru+pTq9tuNieLDl60L04oCc1qQKBgQDLsMMnX2r9qkQw01H5L2WRB9R6er+bO4DE\n8Ecpripfd/e7qq89WcGu1H8S+3Jy49dBmN709vPvVcsGQx8mDdYdm4P0WPkKbgTo\nt12OA07uiY6Zn54rW5CXrjdoscPXB94AS2ps4M3/xY5hHTxwtS8yJxoUgTVEfgNB\nDwzNrZSCVEMCoBAIYl6rWGITgNaR0+FLuP+kjZw\nHsLdkU8173J3nhuYhxo7N90BhO08lquIQ7bJAoGBAKLz\nVRxRdFlcdlMNK34K0dkVh4E4Y8K+9oQWqQeKIrHfWpuSr8CH5q+Dpek8qVGKPnFm\n567XRUzJuLLYzbl2xj1HZWf8KbeTTnALKYg8Jz\nxXXvLlZl2OJ8Frr9ry1DEszPkwWwTQJg5bRG7Z//QfpyEZ2PUvpCNVVpeRuMmUhv\nu5rSLa0G+C97/XIGz/O/1ME9WXU6ZNRwwDkSDw6L7AIrXY8V+8pIRL9e0ks4Uw/A\n6ACYrlYMYYAIl79MNrUrizvF5KwxLiohHJ5KVpThGuRZDaidCPp9BL/h8tfhXPel\nwQot9dM8P4CmQNR/fMpytQSVk7vv95B2JHrt6QmIsQKBgQD9BJ8gfZUVhlxtuaWO\nMKl1PjiD+YKhz4rmIZUKM84xphsGYUBhH29s1zb98u9vlEnlx3bGUtDakNnjTDQp\nagQv22+6STL+0s1haOxyfbi1jIzXvzh47yij6+v7WEIdNj45WV9kpcFTi2oUXURt\nEi3WskYTijYGbDNQmpG2kmY\nDz0KdeTFJxsnFstTT/VozEGvNIHf+8PhKv0123dBFuqSgBD5SFHDp3tQ2IzC81Jm\n5FJLldk3Hw1QRh6+WiEJBTX6nFU4DB5tVXKhbPOvhqYwI/CUYWWbVBQCQgqURcyr\nUdRxAHyDrxKhNrmXXKAEwR0rDz2uGTQCfJ0Zyk/Z1E7iDl/SDfYSSD70wAgGblH2\nAAIQzeoPAgMBAAECggEAb7Trswhft3qmb1V9LEzzN+OtxvHfqqKAkFO4Ijz1+b6R\n3/t4P7KTRhOqaHTZ7zjlu/kbsKzc9casRY+lqybp4/c4jNaGBklG6Vmu96E9wKBgEFPsRe88v/UaAV213Jlw0hdYE9I19yW6z7OSl+Q0dflDbLO5cRs\nTeHlh+9zhzThLVYf79vvwrO4klXm9Mv/7sa/uQ54GK7IkXVklSxUoZpThoOme5hT\n+8ScgJSnyqEpwFQjaslbNBUxtpc9IA2bseP1S7aCVDfZtEp7rHqOFZTvSgol5YD/AoGAdIMNKvg0IiS2xcIEbyHa\nPTNrUfpHeJk/P+Frr1cmDHhGe1l0FWNg9EDlhItAW5EP15ubZPdWQRrV7RuydJlc\ngWesc2RLPIG8+so1TpG1F62+tsQ9lGSF5imiew1x7sQ3H0VIpGtSfTvSMep6fuE7\niuSVbY0UnpxGnqzo9TBAYS4=\n-----END PRIVATE KEY-----\n", "client_email": "localizator@myapp-1086.iam.gserviceaccount.com", "client_id": "704739729071909788554", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/localizator%40myapp-1086.iam.gserviceaccount.com" }
n5FJLldk3Hw1QRh6 + WiEJBTX6nFU4DB5tVXKhbPOvhqYwI / CUYWWbVBQCQgqURcyr \ nUdRxAHyDrxKhNrmXXKAEwR0rDz2uGTQCfJ0Zyk / Z1E7iDl / SDfYSSD70wAgGblH2 \ nAAIQzeoPAgMBAAECggEAb7Trswhft3qmb1V9LEzzN + OtxvHfqqKAkFO4Ijz1 + B6R \ N3 / t4P7KTRhOqaHTZ7zjlu / kbsKzc9casRY + lqybp4 / c4jNaGBklG6Vmu96E9wKBgEFPsRe88v / UaAV213Jlw0hdYE9I19yW6z7OSl + Q0dflDbLO5cRs \ nTeHlh + 9zhzThLVYf79vvwrO4klXm9Mv / 7sa / uQ54GK7IkXVklSxUoZpThoOme5hT \ N + { "type": "service_account", "project_id": "myapp-1086", "private_key_id": "b67c2edcc47c7053c035d8681c8eb7e9f4d90c09", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJUV49mSQB2NSO\nw+tfQWq4pP63U4t7W8V6O6E7FABbYS5N4g35nRzVEj5NciqI27shHSKVrsl7U5ji\nM0IIA+vi+dgHXwHfCPhS9d85xZ73fuqFaj29iru+pTq9tuNieLDl60L04oCc1qQKBgQDLsMMnX2r9qkQw01H5L2WRB9R6er+bO4DE\n8Ecpripfd/e7qq89WcGu1H8S+3Jy49dBmN709vPvVcsGQx8mDdYdm4P0WPkKbgTo\nt12OA07uiY6Zn54rW5CXrjdoscPXB94AS2ps4M3/xY5hHTxwtS8yJxoUgTVEfgNB\nDwzNrZSCVEMCoBAIYl6rWGITgNaR0+FLuP+kjZw\nHsLdkU8173J3nhuYhxo7N90BhO08lquIQ7bJAoGBAKLz\nVRxRdFlcdlMNK34K0dkVh4E4Y8K+9oQWqQeKIrHfWpuSr8CH5q+Dpek8qVGKPnFm\n567XRUzJuLLYzbl2xj1HZWf8KbeTTnALKYg8Jz\nxXXvLlZl2OJ8Frr9ry1DEszPkwWwTQJg5bRG7Z//QfpyEZ2PUvpCNVVpeRuMmUhv\nu5rSLa0G+C97/XIGz/O/1ME9WXU6ZNRwwDkSDw6L7AIrXY8V+8pIRL9e0ks4Uw/A\n6ACYrlYMYYAIl79MNrUrizvF5KwxLiohHJ5KVpThGuRZDaidCPp9BL/h8tfhXPel\nwQot9dM8P4CmQNR/fMpytQSVk7vv95B2JHrt6QmIsQKBgQD9BJ8gfZUVhlxtuaWO\nMKl1PjiD+YKhz4rmIZUKM84xphsGYUBhH29s1zb98u9vlEnlx3bGUtDakNnjTDQp\nagQv22+6STL+0s1haOxyfbi1jIzXvzh47yij6+v7WEIdNj45WV9kpcFTi2oUXURt\nEi3WskYTijYGbDNQmpG2kmY\nDz0KdeTFJxsnFstTT/VozEGvNIHf+8PhKv0123dBFuqSgBD5SFHDp3tQ2IzC81Jm\n5FJLldk3Hw1QRh6+WiEJBTX6nFU4DB5tVXKhbPOvhqYwI/CUYWWbVBQCQgqURcyr\nUdRxAHyDrxKhNrmXXKAEwR0rDz2uGTQCfJ0Zyk/Z1E7iDl/SDfYSSD70wAgGblH2\nAAIQzeoPAgMBAAECggEAb7Trswhft3qmb1V9LEzzN+OtxvHfqqKAkFO4Ijz1+b6R\n3/t4P7KTRhOqaHTZ7zjlu/kbsKzc9casRY+lqybp4/c4jNaGBklG6Vmu96E9wKBgEFPsRe88v/UaAV213Jlw0hdYE9I19yW6z7OSl+Q0dflDbLO5cRs\nTeHlh+9zhzThLVYf79vvwrO4klXm9Mv/7sa/uQ54GK7IkXVklSxUoZpThoOme5hT\n+8ScgJSnyqEpwFQjaslbNBUxtpc9IA2bseP1S7aCVDfZtEp7rHqOFZTvSgol5YD/AoGAdIMNKvg0IiS2xcIEbyHa\nPTNrUfpHeJk/P+Frr1cmDHhGe1l0FWNg9EDlhItAW5EP15ubZPdWQRrV7RuydJlc\ngWesc2RLPIG8+so1TpG1F62+tsQ9lGSF5imiew1x7sQ3H0VIpGtSfTvSMep6fuE7\niuSVbY0UnpxGnqzo9TBAYS4=\n-----END PRIVATE KEY-----\n", "client_email": "localizator@myapp-1086.iam.gserviceaccount.com", "client_id": "704739729071909788554", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/localizator%40myapp-1086.iam.gserviceaccount.com" }
Frr1cmDHhGe1l0FWNg9EDlhItAW5EP15ubZPdWQRrV7RuydJlc \ ngWesc2RLPIG8 + so1TpG1F62 + tsQ9lGSF5imiew1x7sQ3H0VIpGtSfTvSMep6fuE7 \ niuSVbY0UnpxGnqzo9TBAYS4 = \ N ----- END PRIVATE KEY ----- \ nãã¯ã { "type": "service_account", "project_id": "myapp-1086", "private_key_id": "b67c2edcc47c7053c035d8681c8eb7e9f4d90c09", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJUV49mSQB2NSO\nw+tfQWq4pP63U4t7W8V6O6E7FABbYS5N4g35nRzVEj5NciqI27shHSKVrsl7U5ji\nM0IIA+vi+dgHXwHfCPhS9d85xZ73fuqFaj29iru+pTq9tuNieLDl60L04oCc1qQKBgQDLsMMnX2r9qkQw01H5L2WRB9R6er+bO4DE\n8Ecpripfd/e7qq89WcGu1H8S+3Jy49dBmN709vPvVcsGQx8mDdYdm4P0WPkKbgTo\nt12OA07uiY6Zn54rW5CXrjdoscPXB94AS2ps4M3/xY5hHTxwtS8yJxoUgTVEfgNB\nDwzNrZSCVEMCoBAIYl6rWGITgNaR0+FLuP+kjZw\nHsLdkU8173J3nhuYhxo7N90BhO08lquIQ7bJAoGBAKLz\nVRxRdFlcdlMNK34K0dkVh4E4Y8K+9oQWqQeKIrHfWpuSr8CH5q+Dpek8qVGKPnFm\n567XRUzJuLLYzbl2xj1HZWf8KbeTTnALKYg8Jz\nxXXvLlZl2OJ8Frr9ry1DEszPkwWwTQJg5bRG7Z//QfpyEZ2PUvpCNVVpeRuMmUhv\nu5rSLa0G+C97/XIGz/O/1ME9WXU6ZNRwwDkSDw6L7AIrXY8V+8pIRL9e0ks4Uw/A\n6ACYrlYMYYAIl79MNrUrizvF5KwxLiohHJ5KVpThGuRZDaidCPp9BL/h8tfhXPel\nwQot9dM8P4CmQNR/fMpytQSVk7vv95B2JHrt6QmIsQKBgQD9BJ8gfZUVhlxtuaWO\nMKl1PjiD+YKhz4rmIZUKM84xphsGYUBhH29s1zb98u9vlEnlx3bGUtDakNnjTDQp\nagQv22+6STL+0s1haOxyfbi1jIzXvzh47yij6+v7WEIdNj45WV9kpcFTi2oUXURt\nEi3WskYTijYGbDNQmpG2kmY\nDz0KdeTFJxsnFstTT/VozEGvNIHf+8PhKv0123dBFuqSgBD5SFHDp3tQ2IzC81Jm\n5FJLldk3Hw1QRh6+WiEJBTX6nFU4DB5tVXKhbPOvhqYwI/CUYWWbVBQCQgqURcyr\nUdRxAHyDrxKhNrmXXKAEwR0rDz2uGTQCfJ0Zyk/Z1E7iDl/SDfYSSD70wAgGblH2\nAAIQzeoPAgMBAAECggEAb7Trswhft3qmb1V9LEzzN+OtxvHfqqKAkFO4Ijz1+b6R\n3/t4P7KTRhOqaHTZ7zjlu/kbsKzc9casRY+lqybp4/c4jNaGBklG6Vmu96E9wKBgEFPsRe88v/UaAV213Jlw0hdYE9I19yW6z7OSl+Q0dflDbLO5cRs\nTeHlh+9zhzThLVYf79vvwrO4klXm9Mv/7sa/uQ54GK7IkXVklSxUoZpThoOme5hT\n+8ScgJSnyqEpwFQjaslbNBUxtpc9IA2bseP1S7aCVDfZtEp7rHqOFZTvSgol5YD/AoGAdIMNKvg0IiS2xcIEbyHa\nPTNrUfpHeJk/P+Frr1cmDHhGe1l0FWNg9EDlhItAW5EP15ubZPdWQRrV7RuydJlc\ngWesc2RLPIG8+so1TpG1F62+tsQ9lGSF5imiew1x7sQ3H0VIpGtSfTvSMep6fuE7\niuSVbY0UnpxGnqzo9TBAYS4=\n-----END PRIVATE KEY-----\n", "client_email": "localizator@myapp-1086.iam.gserviceaccount.com", "client_id": "704739729071909788554", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/localizator%40myapp-1086.iam.gserviceaccount.com" }
"client_email"
-ããã¯ã¢ã«ãŠã³ãèå¥åã§ãã
ãããã«
ç¹°ãè¿ãã«ãªããŸããããŠãŒãã£ãªãã£ã¢ãŒããã¯ãã£ã¯ãç°¡åã«æ¡åŒµãŸãã¯è£å®ã§ããããã«èšèšãããŠããããœãŒã¹ãšãã©ãããã©ãŒã ãç¬ç«ããŠåäœããããšã«æ³šæããŠãã ããã ããšãã°ãå¿ èŠã«å¿ããŠããœãŒã¹ã®ãªã¹ããè£è¶³ããããã«é©ããAPIãåããããŒã¿ããŒã¹ãŸãã¯WebãµãŒãã¹ããœãŒã¹ãšããŠäœ¿çšã§ããŸãã ãã®ãããGoogleã¹ãã¬ããã·ãŒãã«å ãéãŸããããã°ãŒã°ã«å¯Ÿçãã®æ¯æè ã¯é©åãªè§£æ±ºçãèŠã€ããããšãã§ããŸãã
ãŸãããã®èšäºã®å·çã«ååããŠãããInnaïŒFoenixïŒã«ãæè¬ããŸãã ããããªããã°ãèšäºã¯ããã»ã©ãããããããç解ã§ããŸããã ã€ã³ããã¢ããã€ã¹ãã³ã¡ã³ããããããšãã
ããã§çµãããŸãã æéããããŠç§ã®åµé ã«æ £ããŠãããŠããããšãã ã³ã¡ã³ãã§ããªãã®æèŠãææ¡ãæ¹å€ãåŸãããšãã§ããŠããããã§ãã ãããŠãäžç¢å°ãŸãã¯äžç¢å°ãæŒãããšãå¿ããªãã§ãã ãããããã¯ç§ã«ãšã£ãŠéåžžã«éèŠã§ããHabrã³ãã¥ããã£ãç§ã®ä»äºãã©ã®ããã«åãå ¥ããããç¥ãããã§ãã
ãœãŒã¹ãžã®ãªã³ã¯ïŒ
â GitHubã®LocoLaserãœãŒã¹ã³ãŒã
â GitHubã®Gradleãã©ã°ã€ã³ã®ãœãŒã¹ã³ãŒã
â Androidã®äŸ
â iOSã®äŸ
â Bintrayãžã®ãªã³ã¯
â ãµã³ãã«è¡š