みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
ローマ字で入力されている名前をカタカナに変換したく
FMPro.infoというサイト(http://www.fmpro.jp/)今は閉鎖されてしまったようなのですが
そこにあったカスタム関数に
RomanKana ( Rstr ; Kstr ) ※ローマ字をひらがなに変換するカスタム関数
というのがあったようなのですが、どこかに公開されていたりしますでしょうか?
多分、
Substitue ( text ;[ "kya" ; "キャ" ];[ "kyu" ; "キュ" ];[ "kyo" ; "キョ" ]; ......;[ "ka" ; "カ" ];[ "ki" ; "キ" ];[ "ku" ; "ク" ];......[ "a" ; "ア" ];[ "i" ; "イ" ]; ..... )
みたいなことをやっていたと思います。
ただ、この変換は非常に難しくて、enya は、エンヤ、エニャ のどちらでしょう。
Last edited by Shin (2024-02-09 22:14:59)
Offline
Shinさんがおっしゃるように、
ローマ字も色々なつづり方があるようですが、長音を表記しないのが標準的に使われてるようで、
そうなると弁当は「bento」ですが「ベント」と全く区別がつきません。
機械的に変換するのは無理では。
漢字はないのですか?
人の名前のフィールドが「漢字」「ローマ字」と2つあるのですが、そこから「カタカナ」にしたく
漢字を使うと「江古田」が「エゴタ」だったり「エコダ」だったりすると思い、ローマ字が使えたらなと思ったので
確かにローマ字からの変換も厳しいですよね...。ありがとうございます。
手で変換するよりは、効率いいかもしれません。作ってテストしてみれば。
ちょっとややこしいですが、
別テーブルを作り、漢字とそのヨミカナのローマ字、ローマ字フィールドを作ります。そこに、氏名をインポートします。
ふりがな機能をつかったローマ字とローマ字のフィールドと比較して、同じならばそのまま採用して、元テーブルで漢字から読みかなとして設定します。
それ以外は、ローマ字から変換したものをメインにして設定、とすると、だいぶ数が減ると思いますよ。
Last edited by Shin (2024-02-14 13:23:52)
Offline
Javascriptで変換するものがありました。
https://github.com/WaniKani/WanaKana
これをWebビューアに組み込んで、 [Web ビューアで JavaScript を実行] スクリプトステップで呼び出せば、できました。
(ライブラリを外部から読み込む形式でテストしただけ=インターネット接続が必要 なので、手順は書きません)
漢字とローマ字と両方変換して、一致しない場合は警告して人間が直せば、だいぶ楽になるかな?
インターネット接続不要の実装ができたので書いておきます。
https://unpkg.com/wanakana から「wanakana.min.js」をダウンロードして、オブジェクトフィールドに入れておく。(js::jsというグローバルフィールドを使用した)
Webビューアを"wv1"というオブジェクト名で、以下のURLを設定
"data:text/html," &
"<DOCTYPE! html><head>
<script>" & HexDecode ( HexEncode ( js::js ) ) &
"</script>
<script>
function setFM(t,f){
FileMaker.PerformScriptWithOption (\"Set field\", f + '\n' + wanakana.toKatakana(t), 0);
}
</script>
</head>
<body>
</body>"
「Set field」というスクリプト
フィールドを名前で設定「GetValue(Get(スクリプト引数);1)
Let ( p=Get(スクリプト引数) ;
Replace ( p ; 1 ; Position(p;Char(10);1;1) ; "" )
)」
ローマ字かな変換するスクリプト
WebビューアでJavascriptを実行「オブジェクト名:"wv1"; 関数名:"setFM" ; 引数: ローマ字のフィールド(というかローマ字のテキスト), "table::field"(カタカナを設定するフィールド名) 」
実行したJavascriptが結果を返さないので関数として扱うのは面倒ですが、スクリプトは各1行なので、出来上がってみればそれほど複雑ではないですね。
(厳密には、FMのスクリプトを呼び出すときにレコードが移動してないかチェックしないと、無関係なレコードに結果をフィールド設定したりエラーになったりする可能性があるらしいですが)
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 518.42 KiB (Peak: 523.33 KiB) ]