Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Monacaでアプリ名の多言語化
Search
Daisuke Kishino
November 28, 2017
Programming
800
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Monacaでアプリ名の多言語化
Daisuke Kishino
November 28, 2017
More Decks by Daisuke Kishino
See All by Daisuke Kishino
Flutterコンテストを開催した話
kishino
1
470
Monaca、WKWebViewに移行しようぜ!
kishino
0
960
Ionicあらまし@okayama-js
kishino
0
1.1k
MonacaアプリをネイティブのUXに近づけるために
kishino
0
1k
Sign In with Appleを実装してみた
kishino
0
450
Fluid interfaces for Monaca
kishino
0
270
Vue.jsの特徴
kishino
0
620
Other Decks in Programming
See All in Programming
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
260
Heart of Swift Concurrency
koher
0
1.2k
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
350
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
2
1.2k
AIに “答え“を書かせるのを やめてみた
___akari11
0
110
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
560
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
200
setup-vp GitLab対応の裏側
naokihaba
0
150
R8 の設定見直しでアプリサイズ削減
andpad
0
190
速習iPhone Duo対応
yuukiw00w
2
960
Domain-Driven Transformation
hschwentner
2
2.3k
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
120
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.4k
How to train your dragon (web standard)
notwaldorf
96
6.9k
Building the Perfect Custom Keyboard
takai
2
890
The SEO identity crisis: Don't let AI make you average
varn
0
580
Ruling the World: When Life Gets Gamed
codingconduct
0
390
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
350
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
920
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
620
Facilitating Awesome Meetings
lara
57
7.2k
Producing Creativity
orderedlist
PRO
348
41k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.3k
Transcript
Monacaでアプリ名の多言語化 Monaca UG TOKYO #3 ~年末のLT大会!~ @2017/11/27
2 ピープルソフトウェア株式会社 岸野 大輔 @岡山県 Monaca歴10ヵ月 最近はAngularJSとかVue.jsとかやってます。 好きな言語はSwift 自己紹介
3 多言語化したアプリ • 会津若松の観光アプリ • Monaca+BaaS@rakuza • OnsenUI+Vue.js • 日本語、英語、中国語(簡・繁)、タイ
語の5か国語に対応
4 アプリの多言語化 • サーバー側 • BaaS@rakuzaで対応 • アプリ側 • OnsenUI+Vue.jsで作っているので、vue-i18nで対応
5 アプリ名は? • リリースの1週間前にアプリ名が多言語化されていないことに気が 付く • Cordova・Monacaに何か仕組みがあるだろうと高を括っていた ら、どうやらなさそう・・ どうしよう!!!
6 ネイティブはどうやるんだっけ? • Android 1. resにvalues-enなど、言語ごとのディレクトリを作成 2. strings.xmlを作成し、「app_name」にアプリ名を記述 • iOS
1. XcodeからInfoPlist.stringを作成し、 Localizationをクリックして各言 語をチェックする 2. InfoPlist.stringの「CFBundleDisplayName」にアプリ名を記述 strings.xmlとInfoPlist.stringをコピーすればよいのでは?
7 CordovaのHook機能を使ってみる • Cordovaの各種操作時に処理を挟み込むことができる • プラグイン追加時、プリペア時など • after_prepare(プリペア後)に、strings.xmlとInfoPlist.stringをコ ピーするHookスクリプトを作成
8 Hookスクリプト Android用の スクリプト iOS用のスク リプト プラグインの 定義ファイル Hookスクリプトは Cordova
Pluginとして作 成
9 plugin.xml
10 Hookスクリプト(Android)
11 コピーするリソースファイル Monacaはルート配下に自由に ファイルを配置できないため、 wwwに配置 phonegap buildがこのディレク トリ構成(Androidだけ)なので真 似た
12 project.pbxprojの罠 • Androidはstrings.xmlをコピーするだけでOK! • iOSはコピーするだけだとうまくいかない・・ • iOSはXcodeに認識させるために、リソースファイル(InfoPlist.string) とそのLocalization設定をproject.pbxprojに定義する必要がある •
Xcode使ってると、よくコンフリクトする謎フォーマットのアレです
13 project.pbxprojの構成 PBXFireReference PBXVariantGroup すべてのリソースファイルを表すク ラス。ここにInfoPlist.stringを言語分 だけ設定する。 ※ en.lprojなど、言語ごとのディレ クトリに配置した上で追加する
Localizationされているファイルの グループを表現するクラス。 InfoPlist.stringsというグループ名を 設定する。 ファイルの ObjectIDを参照
14 node-xcode • project.pbxprojをパース・編集できるnode.jsのライブラリ • このライブラリを使って、 PBXFireReferenceとPBXVariantGroupを 設定 iOSもうまくいった!!
15 (TIPS)node-xcodeのインストール • CustomConfigプラグインを使用していればインストール不要…と 思ったが、Monaca標準のCustomConfigプラグイン(2.0.3)だと node-xcodeのバージョンが古い(0.8.x) • 0.9.xでないと、 PBXVariantGroupの編集ができない •
MonacaのCustomConfigプラグインを最新(4.0.2)にしてみるも、なぜ かビルドでコケる… • npm install xcodeを実行して、node_modules以下をまるごとアップ ロードして解決
16 参考 • cordova-plugin-localization-strings (https://github.com/kelvinhokk/cordova-plugin-localization- strings) • node-xcodeの使い方の参考 • .xcodeproj/project.pbxproj
を解読する (https://qiita.com/yokomotod/items/02e395e99bb891d27f67) • project.pbxprojの仕様の参考
17 ソースコード • GitHubにアップしました https://github.com/kishino/cordova-plugin-i18n-app-name