【Linux初心者向け】UbuntuでASP.NET Coreをホストしたときの和暦表示

オウルです。

C#をメインにされている方は、Windowsには慣れてるれど、Linuxはちょっと。。。という方は多いのではないでしょうか。というのも僕もその一人だからです。ということでC#プログラマーで、且つLinux(Ubuntu)初心者向けの方に、ASP.NET Coreアプリで和暦を使用する場合の紹介です。Ubuntuに.NET CoreのSDK3.1がインストール済であることを前提とします。

WSLを使えば簡単にLinux(Ubuntu)を準備できるので、環境がない方はこちらを参考にしてください。

ローカル環境
WSL v1 Ubuntu18.04 LTS
App ASP.NET Core 3.1.302

グローバリゼーション機能

まずは、グローバリゼーションのお話です。.NET Core3.1では、International Components for Unicode (ICU)を使用して和暦のようなグローバリゼーションの動作を制御します。microsoftのテックブログにも次のように説明されています。

For .NET Core on non-Windows platforms, calendar information is provided by International Components for Unicode (ICU), an open source globalization library. ICU libraries will be updated once the era name and abbreviated era name are known. Because they do not depend on ICU cultural data, applications that use the globalization invariant mode are not affected by this change.

ICUパッケージのインストール

公式のUbuntu に .NET Core SDK または .NET Core ランタイムをインストールするに説明がありますが、パッケージ マネージャーを使用して.NET Coreをインストールする場合は、自動的にICUライブラリがインストールされます。

パッケージを確認

依存関係でインストールされているICUパッケージのバージョンを確認します。

Ubuntu 18.04用のlibicu60がインストールされています。

令和を表示

インストール済みのICUパッケージで和暦を表示してみます。

令和表示にはなりません。それでは、令和対応済のICUバージョンを確認します。

令和対応済のICUバージョン

公式を確認すると、

ICU 64.2 released. This maintenance update for ICU 64 includes draft Unicode 12.1 update, CLDR 35.1 locale data and support for new Japanese era Reiwa (令和).

ICU 63.2 / 62.2 / 61.2 / 60.3 / 59.2 / 58.3 / 57.2 / 56.2 / 55.2 / 54.2 / 53.2 / 52.2 / 51.3 / 50.2 / 4.8.2 released. These maintenance updates for past ICU versions include support for new Japanese era Reiwa (令和).

ということで、ICU 60.3をインストールする方向で進めていきます。

ICU 60.3のdebパッケージ

結論から言うと、bionic (18.04LTS) のバージョンは、libicu60 パッケージですが、60.3はありません。困ったと思いながら調べていくと、icu4c-64_2-Ubuntu18.04-x64.tgzにたどり着きます。

ICU 64.2

パッケージ管理からは外れてしまいますが、icu4c-64_2-Ubuntu18.04-x64.tgzを解凍して上書きします。解凍すると親切に上書きできるようなディレクトリ構成になっています。但し、WSL v1を使用している場合は、/usr/lib/x86_64-linux-gnuにインストールされているので注意が必要です。

念のため上書き前にバックアップします。

WSLバックアップ

環境によりますが、それなりのサイズになるのでしっかり空き容量があるかどうかを確認してください。

再度令和を表示

こうやって記事にすると簡単ですが、辿り着くまでハマった。。。debパッケージも自作できるようなので、またチャレンジしてみたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA