1→One

書類の部数なんかを表示する際に、英語表記の場合は気をつける必要があるらしい。

数字を書くときの決まりごと
先頭に数字を持ってきては行けないらしい。

1 copy of document.

ではなく、

One copy of document.
或いは、
a copy of document.

らしい。複数になると、XXX copies of...となる。
日本語なら、「個」とか「部」とかで同じなのに、英語では違う。
数字の部分は当然動的なものであり、且つDB内では、数値型で持っている為、1,2,3,...というアラビア数値から、One,Two,Threeというアルファベットに変換する必要がある。
で、調べて見たら、さすがのStack Ovewflowに載っていた。
.NET convert number to string representation (1 to one, 2 to two, etc…)
流石です。そのまんまです。数値系の配列なんかは、static readonlyが良いと思わなくもないけど、ほぼこのままで行けそう。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: C# | コメント: 0 | トラックバック: 0

多言語化、或いはローカライズ(参)

多言語化、或いはローカライズ(弐)で作ったマークアップを使ってみる。
<Window x:Class="TawamureDays.WPFTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tw="http://schemas.tawamuredays.jp/gui"
Title="Tawamure.WPFTest" Height="300" Width="300">
<DockPanel>
<tw:TwContents>
<Button Content="{tw:Trans Key=FIRST_BUTTON, Default=最初のページへ}"/>
</tw:TwContents>
</DockPanel>
</Window>

リソースファイルは、こんな感じ。
20130519_1
実行
20130519_2
これで多言語化はなんとかなるかな。後は自分の英語力だけ。
自身がないときは、↓のようなものもあったりする。
間違い英語を無料で直せる、すごい技術続きを読む
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0

多言語化、或いはローカライズ(弐)

多言語化、或いはローカライズ(壱)の続き。まずは、ほぼそのまま作ってみる。続きを読む
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0

ボタンに画像を表示する

ボタンに文字ではなく、画像を表示するなんてのは、よくある事であり、やりたい事でもある。
直感的にわかるというのもあるし、場所を取らないというのもある。

Icon置き場的なサイト:
Icon Archive
画像の表示方法:
画像を貼り付けてみようとしたら、勘違いに気づいた。
今回は直下ではなく、Imagesというフォルダを作って、そこに画像を配置した。
※App.xaml
<Application x:Class="TawamureDays.WPFTest.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
<BitmapImage x:Key="Button_First_Png" UriSource="Images/Button-First-icon.png"/>
</Application.Resources>
</Application>


※Window1.xaml
<Window x:Class="TawamureDays.WPFTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tw="http://schemas.tawamureworks.jp/gui"
Title="TawamureDays.WPFTest" Height="300" Width="300"
tw:UIElementBehavior.OnLoadedCommand="{Binding OnLoadedCommand}">
<DockPanel>
<DockPanel.Resources>
</DockPanel.Resources>
<tw:TwContents>
<Image Source="{StaticResource Button_First_Png}"
/>
</tw:TwContents>
</DockPanel>
</Window>

実行するとこんな感じ
20130509_1

この画像をボタンの中身として使う。
<Window x:Class="TawamureDays.WPFTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tw="http://schemas.tawamureworks.jp/gui"
Title="TawamureDays.WPFTest" Height="300" Width="300"
tw:UIElementBehavior.OnLoadedCommand="{Binding OnLoadedCommand}">
<DockPanel>
<DockPanel.Resources>
</DockPanel.Resources>
<tw:TwContents>
<Button Height="48" Width="52">
<Image Source="{StaticResource Button_First_Png}"
/>
</Button>
</tw:TwContents>
</DockPanel>
</Window>

20130509_2

ボタンの中の画像という感じ。これをボタンの形まで変えようと思うと大変めんどくさい。
StyleのTemplateを弄る必要がある。ここではやらない。
で、このボタンを無効化してみる。
<Window x:Class="TawamureDays.WPFTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tw="http://schemas.tawamureworks.jp/gui"
Title="TawamureDays.WPFTest" Height="300" Width="300"
tw:UIElementBehavior.OnLoadedCommand="{Binding OnLoadedCommand}">
<DockPanel>
<DockPanel.Resources>
</DockPanel.Resources>
<tw:TwContents>
<Button Height="48" Width="52" IsEnabled="False">
<Image Source="{StaticResource Button_First_Png}"
/>
</Button>
</tw:TwContents>
</DockPanel>
</Window>

20130509_5
同じ画像ではない。見た目が変わらない…。んー。グレースケールの画像を別途用意するのもアレだしなと思い、調べてみたらいいのがあった。
[WPF] How to gray the icon of a MenuItem ?
おお。なんかできそうなので、実装してみよう。ただし、Imageクラスを継承するのではなく、添付プロパティとして実装してみる。続きを読む
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0

多言語化、或いはローカライズ(壱)

 色々な言い方はあるけど、開発するアプリケーションで、表示したい言語に合わせて、画面に表示する文字(の言語)を切り替えられるようにする事を多言語化とか、ローカライズと言っている。自分の周りでは、多言語化の方かな。
自分で作り、自分だけが使うアプリケーションでは、不要な機能である。動作を遅くさせるだけのもの。でも、任意のユーザ、それも海外の人にも使ってもらおうと思った時には、必須の実装となる。というか、Windowsストアに公開するようなアプリだと、必須要件になっている。
Windows 8 アプリの認定の要件より引用。

6.5 サポートしているすべての言語でアプリをローカライズしなければならない
アプリでサポートできる言語は、Windows ストアの利用可能な言語だけです。また、サポートする少なくとも 1 つの言語が認定言語でなければなりません。アプリのエクスペリエンスは、サポートするどの言語でも同じように機能しなければなりません。
アプリのパッケージで宣言する各言語で、ユーザー向けにアプリの詳しい説明を提供する必要があります。 スクリーンショット、テキスト、プロモーション用の画像など、アプリを説明するその他の要素もローカライズする必要があります。ローカライズされたバージョンで特定の機能が使用できなくなるようにアプリをローカライズする場合は、アプリの説明の中にローカライズの制限を明確に記述、または表示する必要があります。

社内向けのアプリでも、ユーザ向けのアプリでも、使う人の中に日本語が通用しない人がいるのは、よくある事になってきたんだろう。
この多言語化に関する記事のリンクをメモっておく。
Windows 8アプリのローカライズ
多言語化対応を楽に行うには?[Win 8]
MetroTips #12 多言語化対応を楽に行うには?
Metro向けのアプリ開発環境では、上記のような感じで用意されている。では、Windows7以前は?というと、
Windowsフォームを多言語対応にするには?
というところか。

 仕事では、データベース内に管理される文字列リソース用テーブルから取得するという方法が採用されていた。
文字列(単語や文言)をコードをキーに管理し、各プロジェクトは、使用中の言事とコードを元に文字列をリソースとして取得する。
 これは、社内専用用語のような、アプリケーションの種類に関係なく使用する用語(文字列)を共有するという事が念頭に置かれている。それを各々のプロジェクトで定数定義してしまうと、変更対応が大変であり、且つリリースする必要も出てくる。そういう事をしなくて済ます為に、テーブルの値が持つ文字列を更新すれば、一斉に変更できる様にしてある。逆に「このアプリだけこの文言で表示したい」なんていう時には融通が効かなくなるんだけどね。
WPFでは、以下のサイトの記事を参考にMarkupという形で実装した。
Localization of a WPF application using a custom MarkupExtension
これだけでも十分に思えるんだけど、使っていくうちに、自分なりに(必要に迫られて)改造しつづけている。
続く
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: C# | コメント: 0 | トラックバック: 0

サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m