LoginSignup
7
2

More than 3 years have passed since last update.

かなり特殊な運用をしている兵庫県版COVID-19まとめサイト(非公式)の翻訳運用に関するお話

Last updated at Posted at 2020-04-24

最近兵庫県版COVID-19まとめサイト関連のお話ばっかりで、そろそろ飽きられそうですが、今回は技術的な面のお話をします...

かなり特殊な運用をしているんだ

兵庫県版のCOVID-19まとめサイトは、運用にあたって随時東京都版の最新のものを取り込む(マージする)運用を行っています。
東京都版で起きている問題は地域版でも起こりえる、として常々修正や機能追加が行われる東京都版を取り入れることで、地域版で起こる問題を間接的に解決できるメリットが大きいからです。
でもこれ、かなり大変(デメリットが大きい)で、自分の関わる地域版の変更と、目まぐるしく変わっている東京都版の変更のつじつまをしっかり合わせてあげないといけなくて、多分ですがかなり上級者向けの運用方法です。全部のコードを読んでて理解してるくらいの勢いじゃないと多分無理です。(なお私はそこまで詳しく理解しているわけではなく、大まかに理解しているぐらいです...)
この運用を始めた当時は兵庫県版ぐらいしかなかったのですが、今となっては他の地域版でも行われる運用形態になってきました。

東京都版をマージする運用を続けやすくするには

大変なマージ作業を少しでも楽にしようと思えば、地域版上で変更を加え過ぎない運用をする他にありません。
サイト改善のススメでも書きましたが、兵庫県版は表の追加/改善を積極的に行っています。これと変更を加えすぎない運用は正反対なので、簡単ではありません。出来る限りコンポーネントを増やさない(出来る限りコンポーネントを使いまわす)ことで、マージ運用における保守性を高めていたりします。(その分可読性が下がる懸念がありますが...)

特に翻訳において

地域版で翻訳が進んでいるところはそれほど多くないですが、2020/04/24現在、兵庫県版は進んでいない地域版に当たります...w2020/05/08現在、5か国語(英語、簡体中国語、繁体中国語、韓国語、やさしい日本語)での翻訳を提供できています。翻訳者の皆様には本当に感謝いたします。
現在ちょうど進行中ではあるのですが、兵庫県版の翻訳は保守性と運用を考えた翻訳を進めるために遅れを取っているといっても過言ではないかもしれません。
そんな、「ぼくのかんがえたさいきょうのほんやくうんようほうほう」(僕の考えた最強の翻訳運用方法)を、共有としてここに書き記しておきたいと思います。

東京都版の翻訳と地域版の翻訳の両立

東京都版は東京都版で翻訳プロジェクトが進んでおり、随時ファイル(assets/locales/ja.jsonなど)が更新されていきます。これを地域版でも触ると大変なことになります。出来る限り変更を加えない運用どころではありません。しかも、地域版でもTransifexを使って翻訳を管理しようと思えば他の言語ファイルも大量に変更が加わることになるでしょう。翻訳だけで大変なことになってしまいます。
私たち兵庫県版では、東京都版の翻訳をうまく有効活用しつつ、兵庫県版での翻訳も進められる形をとるために、翻訳ファイルを分離してassets/locales-hyogo/ja.jsonとし、そこに兵庫県版で新たに追加されたものだけを格納してTransifexに連携を取らせる方針で進めることとしました。
Transifexとの連携に関しては、北海道版で活躍しておられる方が記事を書いておりますので、こちらを参考にしました。
サイトへの反映に関しては、以下のようなファイルを生成してミックスさせて処理しています。

assets/locales-mixed/ja.js
import Tokyo from '@/assets/locales/ja.json'
import Hyogo from '@/assets/locales-hyogo/ja.json'

export default Object.assign(Hyogo, Tokyo)

翻訳ファイル生成の自動化

翻訳に当たって、使われる語句/文章の抽出が必要ですが、これを手動でやっているとミスが発生することもあり、とても大変です。そこで、滋賀県版に協力しておられる方が作っておられる翻訳ファイル自動生成スクリプトを改良し、活用することになりました。(兵庫県版で実際に活用されているスクリプトはこちら)
$t('<翻訳すべき内容>')という表現を正規表現で取り出している滋賀県版に加え、兵庫県版ではVueファイル内にちりばめられている<i18n>タグを抽出して、更にそのなかのpathを抽出することもしています。
Vueの書き方は、HTMLにそっくりなので、HTMLスクレイピングをするかのようにBeautifulSoupで抜き出してあげることができます(とりあえず試してみたら出来たというちょっと驚きな部分ですw)。

ちなみにですが、これらの経験を総合し、集大成として東京都版に自動生成スクリプトのPRもしています。無事にready-for-mergeラベルが付与され、マージされることになりました!

終わりに

兵庫県非公式版のまとめサイトに関わるようになってから、運用や開発など、いろいろなことを知り、いろいろなことを学び、またいろいろな体験をし、本家である東京都版にも貢献できるような技術力が身についてきたと感じています。
これは私が積極的に活動に取り組んでいるからかもしれませんが、このような経験はもうこれっきり二度とないように感じます。不謹慎かもしれませんが、本当に良い経験が出来るチャンスだと思っているのでみなさんも積極的に参加してみると良いのではないでしょうか...?

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2