PostgreSQL9.5で文字列を受け取り、別の言語に翻訳するカスタム関数を作成しようとしています。 私が翻訳しようとしている文字列の特有のことは、要素のリストなので、文法上の意味を全く必要としないということです。postgresの翻訳カスタム機能
例の翻訳は、次のようになります。
normal_string translated_string
apple manzana
banana banano
tiger tigre
elephant | monkey | apple elefante | mico | manzana
the elephant ate a banana the elefante ate a banano
私はすでに少し進んだし、これを実行する方法を発見し、ここで私が作成した関数であるいます
CREATE OR REPLACE FUNCTION translate_en_es(to_translate character varying)
RETURNS character varying AS $result$
declare
result character varying;
BEGIN
SELECT
case when to_translate like 'apple' then replace(to_translate,'apple','manzana')
when to_translate like 'elephant' then replace(to_translate,'elephant','elefante')
...
...
else to_translate end::character varying
into result;
RETURN result;
END;
$result$ LANGUAGE plpgsql;
はあなたのよう問題は、この関数が1つの翻訳に対してのみ機能することです。
私はこの機能を複数回使用して、複数の要素を置き換えて望みの結果を得ても大丈夫でしたが、これを行うより良い方法があると確信しています。私が提案した
この問題を回避するには、例えば次のとおりです。
select translate_en_es(translate_en_es('apple | banana'))
文字列内の要素として多くの機能を追加する必要がないように、どのように私はそれを行うことができますか?クエリがテーブルを検索し、見つかったスペイン語の単語を返す、指定された英語の文章について
create table dictionary (id serial primary key, english text, spanish text);
insert into dictionary (english, spanish) values
('apple', 'manzana'),
('banana', 'banano'),
('tiger', 'tigre'),
('monkey', 'mico');
:
:
は、関数内で上記のクエリを使用しますか?次に正しい翻訳を見つけるために単純な 'select'をとるでしょう。 – redneb
例のテーブルの4番目の行のような複数の単語を含むすべての組み合わせを作成する必要があります。 – johan855
この要件を満たしていても、テーブルで作業できるようにすることは可能です。 – redneb