D365BC 日付フォーマットの決定要素(言語と地域)


BCのv19.1から日付フォーマットの制御が変更されました。結論を先に言うと「完全に言語依存」になりました。では、v19.0以前はどうだったかというと、、、後ほど説明します。

まずは環境を2個用意します。v19.1環境とv19.0環境です。(下の画像は3つ環境がありますが、Sandbox系の2つを使用します。)いずれもCountryがUnitedStatesです。USにしたのは少し意味があります。

先にv19.1の日付フォーマットから説明します。Cronusカンパニーのデータを使用します。発注伝票を使います。

以下の発注を開いて印刷します。

注文書をプレビュー表示すると日付は April 9, 2021 と表示されます。月、日、年、の順です。月はテキスト形式です。Excelの書式設定に準拠して日付フォーマットを表現すると “mmmm d, yyyy” 形式です。

アメリカ人はこの並び順に違和感を持たないと思いますが、月を先頭に表示するのは実は世界的に少数派です。ヨーロッパなど、他の地域では日を先頭に表示するのが一般的です。ちなみに私は日本人で、日本人のほとんどは欧米の並び順の違いを知らないのであまり違和感を感じませんw。日本では年月日の順ですね。調べたところ中国も年月日の順のようです。

月が先頭に表示されている理由は、My設定のLanguageが”English(United States)”に設定されているからです。これはEnvironmentのRegionがUSだからです。

Languageを変更してみましょう。例えばFrenchに変更します。

日付が 9 avril 2021 と表示されました。日付が先頭のフランス式の並び順です。Excelの表現では “d mmmm yyyy” というフォーマットです。

Languageを”English(United Kingdom)”に変更してみます。

注文書を再度印刷プレビューすると 09 April 2021 と表示されました。月のテキストがフランス語から英語に代わりました。他には日付の前ゼロがついています。英国では前ゼロをつけてフランスでは前ゼロをつけないのが一般的かどうかは私は把握していませんが、BC上ではフランス語と英語(英国)でフォーマットが違うことは分かると思います。Excel式でフォーマットを表現すると “dd mmmm yyyy” になります。

ちなみにLanguageを日本語にすると以下のように表示されます。年、月、日の順です。漢字語圏以外の方に補足すると2021の後の漢字はYear、4の後の漢字はMonth、9の後の漢字はDayを表しています。Languageを中国に変更しても同様のフォーマットで表示されました。

このようにv19.1は日付フォーマットがLanguage依存のようです。もう少し詳しく見てみます。同じv19.1でSales Quoteを印刷してみましょう。

Sales Quoteを開いて印刷します。

なお、My設定の言語は”English(United Kingdom)”に設定しています。

印刷プレビューすると April 2, 2021 と表示されます。言語はEnglish(United Kingdom)に設定したのに月が最初に表示されます。これは何故でしょう?

それは伝票言語が関係しています。Sales Quoteのカード画面でCtrl+Alt+F1を押すとページ検査機能が起動します。キーワード”Lang”で検索すると伝票ヘッダーに非表示項目としてLanguageが存在し、値が”ENU”であることが分かります。ENUはEnglish(United States)です。従って米国式のフォーマット “mmmm d, yyyy”で表示されるのです。

伝票言語を変更してみましょう。Personalize機能で伝票ヘッダーにLanguage Codeを項目追加します。

そしてFRA(French)に変更します。

印刷プレビューすると、 2 avril 2021 と表示されています。これはフランス式の日付フォーマットです。

つまり、日付フォーマットはLanguage依存で、Languageの設定はMy設定のLanguageよりも伝票のLanguageが優先するという仕組みになっています。

ところで、Regionは関係ないのでしょうか? My設定でRegionのツールチップには日付フォーマットを規定する、と書かれています。

実は、v19.0以前はRegionが日付フォーマットに影響していました。これから以降は用意しておいたv19.0の環境で説明します。

v19.1と同様にSales Quoteの伝票ヘッダーにLanguage Codeを項目追加します。v19.1と同様にCronusカンパニーの同じSales Quoteを使用します。

My設定の RegionはEnglish(United States)に LanguageはEngulish(United Kingdom)を設定します。

伝票の言語はFRA(French)を設定します。

印刷プレビューすると avril 2, 2021 と表示されました。月の表示言語はFrenchですが、並び順は 月が先頭に来ています。つまり並び順は米国式です。

RegionをFrenchに変更してみましょう。LanguageはEnglish(United Kingdom)のままです。

日付は 2 avril 2021 と表示されました。日が先頭に表示されており、フランス式です。

念のため、もう一つ試します。My設定でRegionをEnglish(United Kingdom)に変更します。

すると日付が 02 avril 2021 と表示されました。先ほどとほぼ同じですが、日付の前ゼロがついています。つまりフランス式ではなくイギリス式です。

まとめると、以下の通りです。
・v19.1:日付フォーマットはLanguage依存。伝票言語がMy設定のLanguageに優先する。
・v19.0以前:日付フォーマットはRegion依存。月の表示言語(April/avril)はLanguage依存。

ただし、NAVのころから20年近くNAV/BCをやっている開発者に聞いたところ、NAVでは元々完全に言語依存だったそうです。私が確認した限りBCのv16.5ではRegion依存になっていたようです。

いつからRegion依存になったのか、そしてなぜRegion依存になり、そしてRegion依存で亡くなったのかは分かりませんが、少なくともv19.1からは完全にLanguage依存になったことは事実ですので紹介いたしました。

返信を残す

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