Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NSEG 19/08 chromiumブランディングとローカライズ

NSEG 19/08 chromiumブランディングとローカライズ

D05b3b2abff3f73f249a01d60257bdde?s=128

hATrayflood

August 10, 2019
Tweet

Transcript

  1. 2019/8/10 NSEG 19/08 chromium ブランディング とローカライズ by ABE Hiroki aka

    hATrayflood
  2. 2019/8/10 NSEG 19/08 お前 誰︖ by ABE Hiroki aka hATrayflood

  3. 2019/8/10 NSEG 19/08 ⾃⼰紹介 ・名前︓アベヒロキ (@hATrayflood) ・職業︓⾃宅サーバ管理者 ・URL︓rayflood.org/diary-temp/ ・地元︓東部町 by

    ABE Hiroki aka hATrayflood
  4. 2019/8/10 NSEG 19/08 OSSの主な領域 ・firefox ・python ・ubuntu ・コンパイラ by ABE

    Hiroki aka hATrayflood
  5. 2019/8/10 NSEG 19/08 前回の内容で ビルドはできた わけですが by ABE Hiroki aka

    hATrayflood
  6. 2019/8/10 NSEG 19/08 そのままでは ただのchromium by ABE Hiroki aka hATrayflood

  7. 2019/8/10 NSEG 19/08 個⼈で使うだけだったり パッチを投げるだけなら そのままでもいいですが by ABE Hiroki aka

    hATrayflood
  8. 2019/8/10 NSEG 19/08 製品として配布するなら 最低でもブラウザー名と アイコンは変える必要あり by ABE Hiroki aka

    hATrayflood
  9. 2019/8/10 NSEG 19/08 アイコン by ABE Hiroki aka hATrayflood

  10. 2019/8/10 NSEG 19/08 デスクトップ版 chrome/app/theme/chromium android版 chrome/android/java/res_chromium by ABE Hiroki

    aka hATrayflood
  11. 2019/8/10 NSEG 19/08 画像数は多めなのでがんばりましょう 基本は⼀番⼤きいサイズを作ってから 縮⼩してほかを作ると良いでしょう by ABE Hiroki aka

    hATrayflood
  12. 2019/8/10 NSEG 19/08 実⾏ファイル名 by ABE Hiroki aka hATrayflood

  13. 2019/8/10 NSEG 19/08 デスクトップ版 以下のビルドルールにあるファイル名を変更 chrome/BUILD.gn chrome_binary("chrome_initial") action("reorder_imports") chrome/installer/mini_installer/BUILD.gn action(archive_name)

    build/win/reorder-imports.py input_image, output_image by ABE Hiroki aka hATrayflood
  14. 2019/8/10 NSEG 19/08 zipアーカイブするコマンドの変更 chrome/tools/build/win/FILES.cfg 'filename': 'chrome.exe', chrome/tools/build/win/make_zip.bat set archive=%outdir%\chrome-win32.zip

    cd src chrome\tools\build\win\make_zip.bat ..\out by ABE Hiroki aka hATrayflood
  15. 2019/8/10 NSEG 19/08 dllとかpakとか他のexeはいろんなところで ファイル名が直に書かれてたりするので やるなら覚悟が必要かも。。 by ABE Hiroki aka

    hATrayflood
  16. 2019/8/10 NSEG 19/08 android版 androidではパッケージIDが重要 apkファイル名やapkファイル内の 構造はどうでもいい by ABE Hiroki

    aka hATrayflood
  17. 2019/8/10 NSEG 19/08 chrome/android/BUILD.gn chrome_public_manifest_package chrome_public_test_manifest_package by ABE Hiroki aka

    hATrayflood
  18. 2019/8/10 NSEG 19/08 標準ユーザー データフォルダ by ABE Hiroki aka hATrayflood

  19. 2019/8/10 NSEG 19/08 デスクトップ版 windows: chrome/install_static/chromium_install_modes.cc kCompanyPathName kProductPathName kInstallModes (拡張⼦登録情報)

    linux: chrome/common/chrome_paths_linux.cc GetDefaultUserDataDirectory() mac: chrome/common/chrome_paths_mac.mm ProductDirNameForBundle() 共通: chrome/common/chrome_paths.cc ユーザーデータ以外いろいろたくさん by ABE Hiroki aka hATrayflood
  20. 2019/8/10 NSEG 19/08 android版 androidではパッケージIDで 勝⼿にフォルダが作られるので 対応不要 by ABE Hiroki

    aka hATrayflood
  21. 2019/8/10 NSEG 19/08 ブラウザー名 by ABE Hiroki aka hATrayflood

  22. 2019/8/10 NSEG 19/08 デスクトップ版 chrome/app/theme/chromium/BRANDING android版 chrome/android/java/res_chromium /values/channel_constants.xml by ABE

    Hiroki aka hATrayflood
  23. 2019/8/10 NSEG 19/08 これだけ by ABE Hiroki aka hATrayflood

  24. 2019/8/10 NSEG 19/08 とはいかない。。 by ABE Hiroki aka hATrayflood

  25. 2019/8/10 NSEG 19/08 ローカライズ by ABE Hiroki aka hATrayflood

  26. 2019/8/10 NSEG 19/08 chromiumではgritというツールを使ってる https://www.chromium.org/developers/ tools-we-use-in-chromium/grit/grit-users-guide by ABE Hiroki aka

    hATrayflood
  27. 2019/8/10 NSEG 19/08 構成例︓chrome/app 英語: chromium_strings.grd ⽇本語: resources/chromium_strings_ja.xtb オリジナルの定義となる英語と 他⾔語の翻訳データに分かれてる

    by ABE Hiroki aka hATrayflood
  28. 2019/8/10 NSEG 19/08 英語の例 <message name="IDS_TASK_MANAGER_TITLE" desc="The title of the

    Task Manager window"> Task Manager - Chromium </message> <message name="IDS_SESSION_CRASHED_VIEW_UMA_OPTIN" desc="Text besides the checkbox to let users optin to UMA in the restore from previous crash bubble."> Help make Chromium better by sending crash reports and <ph name="UMA_LINK">$1<ex>usage statistics</ex></ph> to Google </message> by ABE Hiroki aka hATrayflood
  29. 2019/8/10 NSEG 19/08 ここまで はいい by ABE Hiroki aka hATrayflood

  30. 2019/8/10 NSEG 19/08 ⽇本語の例 <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle

    lang="ja"> <translation id="1065672644894730302">ユーザー設定ファイルを 読み込むことができません。⼀部の機能が利⽤できない可能性があります。 また、設定への変更は保存されません。</translation> <translation id="1104942323762546749">Chromium から パスワードをエクスポートするための許可を求められています。 許可するには Windows のパスワードを⼊⼒してください。</translation> by ABE Hiroki aka hATrayflood
  31. 2019/8/10 NSEG 19/08 は︖ by ABE Hiroki aka hATrayflood

  32. 2019/8/10 NSEG 19/08 <message name="IDS_*"> みたいなのがないんだが︖ by ABE Hiroki aka

    hATrayflood
  33. 2019/8/10 NSEG 19/08 わからんからとりあえず 直すだけ直してみるか by ABE Hiroki aka hATrayflood

  34. 2019/8/10 NSEG 19/08 英語: chromium_strings.grd <message name="IDS_ABOUT" desc="In Title Case:

    The text label of the About Chrome menu item"> About &amp;Nseg Browser </message> ⽇本語: resources/chromium_strings_ja.xtb <translation id="2910007522516064972"> Nseg Browser について(&amp;C)</translation> by ABE Hiroki aka hATrayflood
  35. 2019/8/10 NSEG 19/08 英語になってやがる。。 by ABE Hiroki aka hATrayflood

  36. 2019/8/10 NSEG 19/08 translation idって そもそもなんだよ。。 by ABE Hiroki aka

    hATrayflood
  37. 2019/8/10 NSEG 19/08 tools/grit/grit/extern/tclib.py: GenerateId() message.nameではなく本⽂からID⽣成しよる。。。 by ABE Hiroki aka

    hATrayflood
  38. 2019/8/10 NSEG 19/08 tools/grit/grit/clique.py: MakeClique() 本⽂から⽣成したIDで翻訳データまとめよる。。 by ABE Hiroki aka

    hATrayflood
  39. 2019/8/10 NSEG 19/08 これは控えめに⾔って◦ソですね。。 by ABE Hiroki aka hATrayflood

  40. 2019/8/10 NSEG 19/08 問題点 ・英語の本⽂が変わるとIDも変わる ・英語のデータからID推測が困難 ・ブラウザー名が直接書かれてる しかも⼤量に by ABE

    Hiroki aka hATrayflood
  41. 2019/8/10 NSEG 19/08 ____ /      \ /  _ノ  ヽ、_ 

    \ そんなこと⾔われても /  (•)  (•)   \    どうすりゃいいのさ |     (__⼈__)    | \     ` ⌒´     / /´           `\ /  /          l  l   . __l  l_.[] _____/_/__ \, ´-'ヽ ヾ_ノ | | |__   コロ・・・・ _____\    コロ・・・・ ()__)」 by ABE Hiroki aka hATrayflood
  42. 2019/8/10 NSEG 19/08 cd src tools/grit/grit.py -v -i chrome/app/chromium_strings.grd build

    -o /tmp WARNING: Fell back to English for the following translations: 8739167630197873875 "You clear cookies when you quit Chromium..." gu,zh-TW,vi,sv,cs,es and 18 more 7827169012280634081 "Clear cookies and site data when you qui..." gu,zh-TW,vi,sv,cs,es and 18 more 5652071883946975157 "About &amp;Nseg Browser" el,gu,zh-TW,sw,ca,am and 46 more by ABE Hiroki aka hATrayflood
  43. 2019/8/10 NSEG 19/08 これでとりあえず不⾜IDは わかるようになった by ABE Hiroki aka hATrayflood

  44. 2019/8/10 NSEG 19/08 けど正直⾔って、ブラウザー名ある箇所 多すぎて、本⽂もIDも直すなんて 正気の沙汰じゃないだろ。。 by ABE Hiroki aka

    hATrayflood
  45. 2019/8/10 NSEG 19/08 tools/grit/grit/node/message.py: Translate() + _URL_PATTERN = lazy_re.compile(r'^[a-zA-Z0-9-]+:\/\/.*', re.I)

    + _GOOGLE_CHROME_PATTERN = lazy_re.compile(r'Google Chrom[a-zA-Z]+', re.I) + _CHROME_PATTERN = lazy_re.compile(r'Chrom[a-zA-Z]+', re.I) + _CHROME_PATTERN_HI = lazy_re.compile(u'\u0915\u094D\u0930\u094B\u092E', re.U) + + if not _URL_PATTERN.match(msg): + msg = _GOOGLE_CHROME_PATTERN.sub('Nseg Browser', msg) + msg = _CHROME_PATTERN.sub('Nseg Browser', msg) + msg = _CHROME_PATTERN_HI.sub('Nseg Browser', msg) by ABE Hiroki aka hATrayflood
  46. 2019/8/10 NSEG 19/08 もう出⼒直前で強引に置換しちまえ︕ elipsisもここでやってるしいいだろ。。 あ、でもURLっぽいものはスキップな︕ by ABE Hiroki aka

    hATrayflood
  47. 2019/8/10 NSEG 19/08 by ABE Hiroki aka hATrayflood

  48. 2019/8/10 NSEG 19/08 ヒンディー語だけはなぜか Chromiumというブランド名も ोिमयम と翻訳されてます ⽇本語だとカタカナの感覚か︖ by ABE

    Hiroki aka hATrayflood
  49. 2019/8/10 NSEG 19/08 Chromium本家としての⽇本語翻訳作業 https://translations.launchpad.net /chromium-browser/translations/+lang/ja by ABE Hiroki aka

    hATrayflood
  50. 2019/8/10 NSEG 19/08 ログインして、指定のライセンスで 公開されることに同意すれば ウェブ上で翻訳作業が可能なようで 未訳だけでなく既存の修正提案も可能 by ABE Hiroki

    aka hATrayflood
  51. 2019/8/10 NSEG 19/08 まとめ by ABE Hiroki aka hATrayflood

  52. 2019/8/10 NSEG 19/08 ブランディング変更は地獄 ローカライズもlaunchpad が使えないと地獄 by ABE Hiroki aka

    hATrayflood
  53. 2019/8/10 NSEG 19/08 こーんな⼤変なのに なーんでみんな chromiumで作り たがるんすかねー︖ by ABE Hiroki

    aka hATrayflood
  54. 2019/8/10 NSEG 19/08 firefox の場合 by ABE Hiroki aka hATrayflood

  55. 2019/8/10 NSEG 19/08 ビルドオプション --with-branding=/nsegbrowser/branding が⽤意されてる by ABE Hiroki aka

    hATrayflood
  56. 2019/8/10 NSEG 19/08 まずは、元となるフォルダをコピーして https://hg.mozilla.org/mozilla-central /file/tip/browser/branding/unofficial サイズに合った画像に差し替え by ABE Hiroki

    aka hATrayflood
  57. 2019/8/10 NSEG 19/08 ブラウザー名などはここで定義 configure.sh MOZ_APP_DISPLAYNAME="Nseg Browser" MOZ_APP_BASENAME=NsegBrowser MOZ_APP_VENDOR=NSEG MOZ_APP_UA_NAME=Firefox

    MOZ_DISTRIBUTION_ID=jp.nseg by ABE Hiroki aka hATrayflood
  58. 2019/8/10 NSEG 19/08 locales/en-US/brand.dtd locales/en-US/brand.ftl locales/en-US/brand.properties by ABE Hiroki aka

    hATrayflood
  59. 2019/8/10 NSEG 19/08 起動時に表⽰する初期ページなんかも設定可能 pref/firefox-branding.js windowsインストーラも作るなら branding.nsiの内容も変更を by ABE Hiroki

    aka hATrayflood
  60. 2019/8/10 NSEG 19/08 これだけで、アイコン画像 実⾏ファイル名、ブラウザー名 保存フォルダすべて変更完了 コードは⼀切変更なし by ABE Hiroki

    aka hATrayflood
  61. 2019/8/10 NSEG 19/08 ただし、User Agentだけは Firefoxのままにするのがおすすめ configure.shに以下の⾏を追記 MOZ_APP_UA_NAME=Firefox 意外と多くのサイトが壊れる by

    ABE Hiroki aka hATrayflood
  62. 2019/8/10 NSEG 19/08 とっても 簡単︕ by ABE Hiroki aka hATrayflood

  63. 2019/8/10 NSEG 19/08 chromiumにこだわらないなら firefoxのほうがはるかに簡単に 独⾃ブラウザーを作れます ビルド時間も圧倒的に速いし by ABE Hiroki

    aka hATrayflood
  64. 2019/8/10 NSEG 19/08 ・リンク集 twitter @hATrayflood http://twitter.com/hATrayflood The Chromium Projects

    https://www.chromium.org/ ブランディング画像 デスクトップ版 https://cs.chromium.org/chromium/src/chrome/app/theme/chromium/ ブランディング画像 android版 https://cs.chromium.org/chromium/src/chrome/android/java/res_chromium/ 実⾏ファイル名の変更 https://cs.chromium.org/chromium/src/chrome/BUILD.gn?l=369 https://cs.chromium.org/chromium/src/chrome/BUILD.gn?l=62 https://cs.chromium.org/chromium/src/chrome/installer/mini_installer/BUILD.gn?l=128 https://cs.chromium.org/chromium/src/build/win/reorder-imports.py?l=17 by ABE Hiroki aka hATrayflood
  65. 2019/8/10 NSEG 19/08 zipアーカイブするコマンドの変更 https://cs.chromium.org/chromium/src/chrome/tools/build/win/FILES.cfg?l=45 https://cs.chromium.org/chromium/src/chrome/tools/build/win/make_zip.bat?l=15 標準ユーザーデータフォルダ https://cs.chromium.org/chromium/src/chrome/install_static/chromium_install_modes.cc https://cs.chromium.org/chromium/src/chrome/common/chrome_paths_linux.cc?l=93 https://cs.chromium.org/chromium/src/chrome/common/chrome_paths_mac.mm?l=62

    https://cs.chromium.org/chromium/src/chrome/common/chrome_paths.cc ブラウザー名 デスクトップ版 https://cs.chromium.org/chromium/src/chrome/app/theme/chromium/BRANDING ブラウザー名 android版 https://cs.chromium.org/chromium/src/chrome/android/java/res_chromium/values/channel_constants.xml androidパッケージID https://cs.chromium.org/chromium/src/chrome/android/BUILD.gn?l=34 by ABE Hiroki aka hATrayflood
  66. 2019/8/10 NSEG 19/08 grit https://www.chromium.org/developers/tools-we-use-in-chromium/grit/grit-users-guide 構成例 英語 https://cs.chromium.org/chromium/src/chrome/app/chromium_strings.grd 構成例 ⽇本語

    https://cs.chromium.org/chromium/src/chrome/app/resources/chromium_strings_ja.xtb 謎のtranslation id https://cs.chromium.org/chromium/src/tools/grit/grit/extern/tclib.py?l=395 https://cs.chromium.org/chromium/src/tools/grit/grit/clique.py?l=105 tools/grit/grit.py https://cs.chromium.org/chromium/src/tools/grit/grit.py 出⼒時の整形 https://cs.chromium.org/chromium/src/tools/grit/grit/node/message.py?l=260 ヒンディー語でのChromiumの表記 ोिमयम https://cs.chromium.org/chromium/src/chrome/app/resources/chromium_strings_hi.xtb Chromium本家としての⽇本語翻訳作業 https://translations.launchpad.net/chromium-browser/translations/+lang/ja by ABE Hiroki aka hATrayflood