初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2024-02-09 12:57:30

ろこもこ
Guest

ローマ字をカタカナに変換するカスタム関数

ローマ字で入力されている名前をカタカナに変換したく
FMPro.infoというサイト(http://www.fmpro.jp/)今は閉鎖されてしまったようなのですが
そこにあったカスタム関数に
RomanKana ( Rstr ; Kstr ) ※ローマ字をひらがなに変換するカスタム関数
というのがあったようなのですが、どこかに公開されていたりしますでしょうか?

#2 2024-02-09 16:38:38

Shin
Member

Re: ローマ字をカタカナに変換するカスタム関数

多分、
Substitue ( text ;[ "kya" ; "キャ" ];[ "kyu" ; "キュ" ];[ "kyo" ; "キョ" ]; ......;[ "ka" ; "カ" ];[ "ki" ; "キ" ];[ "ku" ; "ク" ];......[ "a" ; "ア" ];[ "i" ; "イ" ]; ..... )
みたいなことをやっていたと思います。
ただ、この変換は非常に難しくて、enya は、エンヤ、エニャ のどちらでしょう。

Last edited by Shin (2024-02-09 22:14:59)

Offline

#3 2024-02-10 17:25:12

himadanee
Guest

Re: ローマ字をカタカナに変換するカスタム関数

Shinさんがおっしゃるように、
ローマ字も色々なつづり方があるようですが、長音を表記しないのが標準的に使われてるようで、
そうなると弁当は「bento」ですが「ベント」と全く区別がつきません。
機械的に変換するのは無理では。
漢字はないのですか?

#4 2024-02-14 09:40:05

ろこもこ
Guest

Re: ローマ字をカタカナに変換するカスタム関数

人の名前のフィールドが「漢字」「ローマ字」と2つあるのですが、そこから「カタカナ」にしたく
漢字を使うと「江古田」が「エゴタ」だったり「エコダ」だったりすると思い、ローマ字が使えたらなと思ったので
確かにローマ字からの変換も厳しいですよね...。ありがとうございます。

#5 2024-02-14 11:20:10

Shin
Member

Re: ローマ字をカタカナに変換するカスタム関数

手で変換するよりは、効率いいかもしれません。作ってテストしてみれば。

ちょっとややこしいですが、
別テーブルを作り、漢字とそのヨミカナのローマ字、ローマ字フィールドを作ります。そこに、氏名をインポートします。
ふりがな機能をつかったローマ字とローマ字のフィールドと比較して、同じならばそのまま採用して、元テーブルで漢字から読みかなとして設定します。
それ以外は、ローマ字から変換したものをメインにして設定、とすると、だいぶ数が減ると思いますよ。

Last edited by Shin (2024-02-14 13:23:52)

Offline

#6 2024-02-15 13:03:26

himadanee
Guest

Re: ローマ字をカタカナに変換するカスタム関数

Javascriptで変換するものがありました。
https://github.com/WaniKani/WanaKana
これをWebビューアに組み込んで、 [Web ビューアで JavaScript を実行] スクリプトステップで呼び出せば、できました。
(ライブラリを外部から読み込む形式でテストしただけ=インターネット接続が必要 なので、手順は書きません)

漢字とローマ字と両方変換して、一致しない場合は警告して人間が直せば、だいぶ楽になるかな?

#7 2024-02-20 20:28:46

himadanee
Guest

Re: ローマ字をカタカナに変換するカスタム関数

インターネット接続不要の実装ができたので書いておきます。

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のスクリプトを呼び出すときにレコードが移動してないかチェックしないと、無関係なレコードに結果をフィールド設定したりエラーになったりする可能性があるらしいですが)

Registered users online in this topic: 0, guests: 1
[Bot] CCBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 520.48 KiB (Peak: 525.39 KiB) ]