covid19 icon indicating copy to clipboard operation
covid19 copied to clipboard

[ruby] やさしい日本語 のルビタグ対応

Open shgtkshruch opened this issue 6 years ago • 20 comments

概要

「やさしい日本語」のルビタグ対応を行います。 トップページで例にすると、

現状から こうしたい
スクリーンショット 2020-04-10 22 07 47 スクリーンショット 2020-04-10 22 07 52

進め方

僕の方で対象ページごとに issue を立てますので、ページごとにルビタグ対応をすすめていきたいと思っています。 ページによっては検討事項がありますので、issue で方針が決まってから実装をお願いできればと思います。

今回のプロジェクトのベースブランチは dev-ja-hira-ruby です。 プルリクエストを作成する場合はこちらに向けて作成してください。

動作確認用の Netlify URL: https://ja-hira-covid19-tokyo.netlify.com/

対象ページ・箇所

ページ名 url
都内の最新感染動向 (#2764 で対応) /ja-basic
都内の最新感染動向のグラフ(後述) /ja-basic
新型コロナウイルス感染症が心配なときに(PC) /ja-basic/flow
新型コロナウイルス感染症が心配なときに(SP) /ja-basic/flow
お子様をお持ちの皆様へ /ja-basic/parent
企業の皆様・はたらく皆様へ /ja-basic/worker
当サイトについて /ja-basic/about
お問い合わせ先一覧 /ja-basic/contacts

ルビタグ対応方法

ふりがな部分を <ruby> タグでマークアップすることで対応します。

例えば「検査陽性者の状況」は「やさしい日本語」で表示するとこのようなマークアップになっています。

<h3>
  あたらしいコロナウイルスの 病気(びょうき)になった 人(ひと)
</h3>

このマークアップをこちらのように修正します。

<h3>
  <span>
    あたらしいコロナウイルスの
     <ruby>
      病気
      <rp>(</rp>
      <rt>びょうき</rt>
      <rp>)</rp>
    </ruby>
    になった
     <ruby>
      人
      <rp>(</rp>
      <rt>ひと</rt>
      <rp>)</rp>
    </ruby>
  </span>
</h3>

今回は「やさしい日本語」の場合だけ上記のようなルビタグがついたマークアップを生成する t-i18n コンポーネントを用意しました。

こちらのコンポーネントを使って、多言語対応している箇所を以下の方法で修正していただきたいです。

t-i18n コンポーネントの使い方

多言語対応してるコードを t-i18n コンポーネントのスロットに渡してください。

  • $t メソッドで埋め込んでいる文字列
  • Flow ページなどで利用している i18n コンポーネント

t-i18n コンポーネントは <span> タグで囲まれたノードを返すので、もともと <span> で囲われているものは <t-i18n> に置き換えてください。

# before
<span>{{ $t('検査陽性者の状況') }}</span>

# after
+ <t-i18n>{{ $t('検査陽性者の状況' }}</t-i18n>

<div><strong> など <span> 以外のタグで囲われていた場合は、そのタグの中に t-i18n コンポーネントを配置してください。

# before
<div>{{ $t('検査陽性者の状況') }}</div>

# after
<div>
+ <t-i18n>{{ $t('検査陽性者の状況') }}</t-i18n>
</div>

Flow ページなどで利用している i18n コンポーネント の場合は、それをまるごと t-i18n のスロットに渡してください。

# before
<i18n
  :class="$style.Catch"
  tag="p"
  path="新型コロナ外来 {advice} と判断された場合"
>
  <template v-slot:advice>
    <span :class="$style.Emphasis">
      {{ $t('受診が必要') }}
    </span>
  </template>
</i18n>

# after
+ <t-i18n>
  <i18n
    :class="$style.Catch"
    tag="p"
    path="新型コロナ外来 {advice} と判断された場合"
  >
    <template v-slot:advice>
      <span :class="$style.Emphasis">
        {{ $t('受診が必要') }}
      </span>
    </template>
  </i18n>
+ </t-i18n>

やさしい日本語の記法

漢字にルビを振る際の記法をまとめます。 こちらの記法から外れてもエラーにはなりませんが、そのままの文字列で表示されます。

  1. 基本形: 漢字 + 全角丸括弧 + ひらがな + 全角丸括弧
東京都(とうきょうと)
  1. 漢字・ふりがなともに間に全角中点を入れることができます。
土・日・祝日(ど・にち・しゅくじつ)
  1. ふりがなには全角・半角スペースを入れることができます。
都市整備局(とし せいび きょく)
  1. NG: 全角丸括弧の前にスペースや改行コードを入れないでください
# 半角スペース
東京都 (とうきょうと)

# 改行コード
東京都\n(とうきょうと)

その他の対応項目

「都内の最新感染動向」のグラフについては、凡例やツールチップのルビタグ対応が必要です。 凡例については対応方針が決まっているので、それぞれ issue を作って @shgtkshruch が対応します。

shgtkshruch avatar Apr 11 '20 00:04 shgtkshruch

おつかれさまです。 作業環境など準備してるので、簡単そうなところから手を上げようと思っています。 「当サイトについて」「お問い合わせ先一覧」あたりは特段課題無くできそうですかね。

shunito avatar Apr 11 '20 01:04 shunito

ありがとうございます。

「当サイトについて」はすすめていただいて大丈夫です。(この後 issue を立てます) 「お問い合わせ先一覧」については、テーブル内にルビタグがつくとセルの高さが揃わない箇所があるので、そちらついて解決できればと思っています。

スクリーンショット 2020-04-11 10 25 06

詳細は issue に記載しますので、なにかいい解決策があればご提案いただけると助かります!

shgtkshruch avatar Apr 11 '20 01:04 shgtkshruch

@shgtkshruch @shunito @kebhr 皆さまありがとうございます。 作業中に申し訳ないのですが、 development での変更が一部 dev-ja-hira-ruby に反映されていなかったので、今から取り込みます。その影響でコンフリクトや追加修正が必要になる場合があります。お手数おかけいたしますがよろしくお願いいたします

MaySoMusician avatar Apr 11 '20 06:04 MaySoMusician

@shgtkshruch @shunito @kebhr 上記について、 #3136 にてマージ完了しました。不具合など発生していないがご確認よろしくお願いいたします

MaySoMusician avatar Apr 11 '20 06:04 MaySoMusician

#3266 にて現行の development を取り入れました。 Revert必要でしたらこちらでご連絡ください

新規対応が必要な部分があった場合はissueの起票をお願いいたします

MaySoMusician avatar Apr 14 '20 04:04 MaySoMusician

development のマージありがとうございます。 自分が必要だと思う issue は起票いたしました。

あと残っているのがグラフの軸の対応です。 「都庁来庁者数の推移」のみ軸に漢字が含まれています。

こちらの対応方法を検討しているのですが、Chart.js で実装するのは難易度が高いような気がしています。 (凡例のように DOM 上に出せば他の部分と同じようにルビが振れますが、そもそも DOM 上に軸を出すのが大変そうです) デザインを変更できるなら、グラフ外に単位を出せれば実装難易度は低くなりますが、その場合は都側との調整等が必要になるかと思います。

スクリーンショット 2020-04-15 1 00 16

shgtkshruch avatar Apr 14 '20 16:04 shgtkshruch

@shgtkshruch 「都庁来庁者数の推移」のy軸については

  • y軸の目盛りから単位を抜く
  • 注釈に「単位:人」と記載する

という方向でお願いします!

MaySoMusician avatar Apr 16 '20 08:04 MaySoMusician

#3461 にて development を取り込みました #3348 でflowページが全面的に変更になりました。混乱を避けるため、 pages/flow.vue 内のテンプレートは一部を除き dev-ja-hira-ruby 側の変更を破棄し development 側の変更を反映させました。 その他、いくつか新しい要素が追加されています

MaySoMusician avatar Apr 18 '20 06:04 MaySoMusician

/pages/flow.vue~~とSP版のFlowコンポーネント~~のruby対応やります。

Edited: /components/flow以下は現在使用されていないようです。/pages/flow.vueのみ対応します。https://github.com/tokyo-metropolitan-gov/covid19/issues/3116#issuecomment-615591992

kebhr avatar Apr 18 '20 06:04 kebhr

@kebhr 詳しく確認しておりませんが、おそらく今回のflowページ改修でPCとスマホ版でソースコードが統一となり、それに伴って components/flow/ 以下のコンポーネントも使用していないようです!

Edited: なのでflowページについては /pages/flow.vue だけ対応すれば大丈夫なはずです

MaySoMusician avatar Apr 18 '20 06:04 MaySoMusician

@MaySoMusician ちょうど /pages/flow.vue の中身の変化に驚いていたところです! /pages/flow.vueのみ対応します。

kebhr avatar Apr 18 '20 06:04 kebhr

私の方で認識してる、今プルリクエストが出ているもの以外のタスク

  1. <TI18n> によるルビ対応 個別のチケットにすると細かすぎると思うので、まとめて 1つの issue で対応すると良さそう

https://github.com/tokyo-metropolitan-gov/covid19/blob/c8d003f19ccd3e670b439c6d2ef7bde9c4807b18/pages/parent.vue#L17-L30

https://github.com/tokyo-metropolitan-gov/covid19/blob/c8d003f19ccd3e670b439c6d2ef7bde9c4807b18/pages/about.vue#L201-L213

  1. 正規表現の改善 #3133

shgtkshruch avatar Apr 18 '20 08:04 shgtkshruch

@shgtkshruch 1番目の<TI18n>によるルビ対応、まとめて対応します。

kebhr avatar Apr 19 '20 09:04 kebhr

@kebhr ありがとうございます!


私の方でリリーススケジュールを把握していないので確定ではないのですが、 今後さらに development をマージした場合、追加対応が必要になる可能性があります。 その際は追加でコメントします。

shgtkshruch avatar Apr 19 '20 10:04 shgtkshruch

#3588 にて development を取り込みました! 今回取り込んだ分がおそらく現時点での最終稿だと思われます。

現在openとなっているPRで追加対応が必要そうなものは個別にコメントいたしました。

MaySoMusician avatar Apr 22 '20 06:04 MaySoMusician

「やさしい日本語の記法」ガイドラインについてひとつ提案なのですが、たとえば 「中国湖南省長沙市(ちょうごくこなんしょうちょうさし)」となっていると、横幅が狭いときに下図のようにルビと本文でそれぞれ改行されてしまいます。 image

「中国(ちゅうごく)湖南省(こなんしょう)長沙市(ちょうさし)」とすると、下図のようになります。見た目の問題はありますが、どのルビがどの文字に対応しているかはこちらの方がわかりやすくなると思います。 image

なので漢字(熟語?)が連続するときはある程度の単位で区切ってルビを振るというガイドラインがあっても良いと思いました。皆さまいかがでしょうか?


Edited: 問い合わせ一覧の「戦略政策情報推進本部(せんりゃく せいさく じょうほう すいしん ほんぶ)」でも同様の事態が起きています image

MaySoMusician avatar Apr 24 '20 08:04 MaySoMusician

漢字(熟語?)が連続するときはある程度の単位で区切ってルビを振るというガイドラインがあっても良いと思いました。皆さまいかがでしょうか?

いいと思います。 個人的にも長い単語の場合に、漢字とルビの対応関係が少しわかりにくいかなと思っていました。

shgtkshruch avatar Apr 25 '20 03:04 shgtkshruch

#3876 にて最新の development を取り込みました

MaySoMusician avatar May 02 '20 17:05 MaySoMusician

#3944 にて最新の development を取り込みました

@shgtkshruch t-i18n コンポーネントで確認していただきたいことがあります。詳細は #3947

MaySoMusician avatar May 07 '20 02:05 MaySoMusician

#1295 をcloseとし、連絡・議論は原則こちらで行うこととします

MaySoMusician avatar May 07 '20 02:05 MaySoMusician