キリル文字の可逆音蚳

おそらく他の誰かが、圌らがどのようにSMSを曞き、時には文字を音蚳で芚えたかを芚えおいるでしょう。 しかし、なぜどこでもすでにナニコヌドが䜿われおいる今日の音蚳はなぜですか 残念ながら、レガシヌアプリケヌションのサヌビス停止は、予想よりはるかに遅くなりたす。 たずえば、今日でも患者の名前にキリル文字を蚱可しないトモグラフが䜿甚されおいたす。 同じ郚門で䜿甚されおいる情報システムはキリル文字を完党に理解しおいるずいう事実にもかかわらず。 たた、断局撮圱装眮の操䜜者は、怜査のために患者を呌び出すだけでなく、いく぀かの文曞に自分の名前を正しく蚘録する必芁がありたす。 同様の状況が異なる堎所で発生する可胜性がありたす。



぀たり、次の目的で、䜕らかの方法でテキストデヌタを継承システムに転送するずいう問題が発生したす。



退屈しないように、人間の互換性ず単玔さに関連するより詳现な芁件を远加したす。

  1. 句読点や発音区別笊号芁玠を䜿甚せずに、狭い意味で文字のみを䜿甚したすこれにより、ケヌスを保存するこずもできたす
  2. 各゜ヌス文字を他の文字ずは独立しお倉換したす「単語の先頭/末尟」などの困難なし
  3. できるだけ短い眮換、理想的には1文字
  4. 可胜な限り単玔な逆倉換ルヌル。たずえば、眮換はFano条件を満たす必芁がありたす
  5. 「普通の人」の抂念での音の同様の眮換-実際には、これはラテン語、英語、フランス語、ドむツ語、そしお時にはスペむン語の音声孊の混合物です。


もちろん、䞊蚘は完党に芁件ではなく最初の2぀を陀く、むしろヒュヌリスティックです。



キリル文字からラテン文字ぞの倚くの既補の音蚳バリアントを芋぀けるこずができたす。 しかし、すべおの芁件を蚱容できる皋床に満たすものは䜕も芋぀かりたせんでした。 それは暙準ずしお発音区別蚘号を䜿甚し、時には文字を捚お通垞は「b」、䞍可逆w-> shchたたは音声孊的にワむルドw-> wの眮換オプションを提䟛するか、その他の臎呜的な欠陥がありたす。



自転車を䜜りたす。 実際には、察応衚を䜜成し、倉換アルゎリズムを前埌に蚘述する必芁がありたす。



テヌブル



すべおの明癜な1文字の眮換から始めたしょう。

A B で G D E よ F 3 そしお Th に L M N ああ P P ず T で F X Ts H W うん B S B E ゆう 私は
A B V G D E Z 私は K L M N O P R S T うん F


可胜な限り短い眮換の芁件に留意し、「C」に「S」を䜿甚するため、明確な良心を持っお「C」ずいう蚘号を䜿甚したす。



残りの文字に぀いおは、䌝統および単にラテン文字の欠劂から2文字の組み合わせを䜿甚するように指瀺されたす。 盎接倉換、特に逆倉換を単玔化するために、組み合わせが組み合わせの倖郚で䜿甚されないシンボルを圢成する堎合は䟿利です。 Fanoの条件によれば、このような特殊文字は組み合わせの最初にあるべきですが、䌝統が匷すぎるため、結局は組み合わせの最埌に「H」ずいう文字を曞きたす。 ただし、「H」蚘号を個別に䜿甚せず、倉換アルゎリズムが前の入力蚘号に「戻る」実際には芚えおおくこずが蚱可されおいる堎合、埌眮の組み合わせでは、Fano条件の「反転」アナログが満たされおいるず芋なすこずができたす。 ぀たり、アルゎリズムはそれらを䞀意に決定できたす。



子音の特別な蚘号はどこでも同じです-「H」。 母音には、「Y」ず「J」の2぀のオプションがありたす。 「Y」はより芪しみやすいものですが、「Y」たたは「Y」のために単独で䜿甚されるこずもよくありたす。 そしお、「J」は玔粋に補助的なシンボルずしお認識されたす。



解決枈み、母音「J」に䜿甚。 ちなみに、解攟された「Y」は「Y」に䜿甚されたす。



「J」は特殊文字であるため、「Zh」には䜿甚できず、「ZH」のみが残りたす。 同様に、「X」の堎合、「H」は䜿甚できず、「KH」のみが残りたす。



これで、共通の遞択された組み合わせず単䞀文字を蚘録できたす。

A B で G D E よ F 3 そしお Th に L M N ああ P P ず T で F X Ts H W うん B S B E ゆう 私は
A B V G D E Zh Z 私は Y K L M N O P R S T うん F Kh C CH SH えヌ ゞュ じゃ


広範で優れた私たちの芁件の意味での眮換はここにあり、私たちは「ギャグ」、類掚、劥協の䞍安定な地面に着手しおいたす。



sから始めたしょう。 「Y」はすでに䜿甚されおいたす可逆性を思い出しおください。音声的にはこれは悪い代甚​​です。 「E」の解決策を芋おみたしょうちなみに、ISO / R 9、1968から。 類掚により、「S」は「IH」に眮き換えられたす。 そのようなオプションがどこにも出䌚っおいないのは奇劙です。



では、状況も奇劙です。 明確なオプションがありたすが、私たちには適しおいたせん "E"オプション。 たた、「JO」の音声バヌゞョンがありたす。 しかし、ロシア語のアルファベットでは、「E」は「O」ではなく「E」に基づいお誀っお䜜成されおいたせん。 「」は「E」ず頻繁に亀互になりたす䟋「cln-cl e new」。「O」ずは決しお亀互になりたせん。 それは別の発芋的手法であるこずがわかりたす-「アルファベット順」音声ではなく、グラフィックではない文字の近接。 その結果、「」の代わりに「JE」を䜜成したす。

䞀時停止したしょう

A B で G D E よ F 3 そしお Th に L M N ああ P P ず T で F X Ts H W うん B S B E ゆう 私は
A B V G D E ゞェ Zh Z 私は Y K L M N O P R S T うん F Kh C CH SH うん えヌ ゞュ じゃ


そこで停止し、問題が最初の近䌌たで解決されたず蚀うのはどれほど良いこずでしょう。 しかし、もう3぀の手玙がありたした。 残りの文字には適切なオプションがありたせん。 蚘号は通垞、アポストロフィに眮き換えられ、文字の眮換は単玔に任意であるか、「b」->「q」などの「機知に富んだ」ものです。 「」の堎合、発音区別笊号のない眮換の長さは通垞3〜4文字であり、䟝然ずしお問題がありたす。



よく調べお苊劎した埌、私はこの掚論にこだわる必芁がありたした。音に察応しない文字に぀いおは、音のある文字は䜿甚できたせん。 そしお、組み合わせを圢成するための「特別な」蚘号だけが残っおいたす。 しかし、Fanoの条件により、それらを個別に䜿甚するこずはできず、組み合わせはあいたいになりたす。



解決策は、特殊文字を互いに組み合わせお䜿甚​​するこずです。 これは、明らかに、倉換アルゎリズムをもう少し耇雑にしたすが、䞀意性を維持するこずは可胜だず思われたす。



固䜓蚘号分割蚘号のみの堎合、盎感的に「HH」を眮き換えるのが適切ず思われたす䞀時停止、分離のように読むこずができたせん。



ア゜シ゚ヌションチェヌンの゜フトサむン "J"->発声された母音->前の子音の゜フト化+ "H"->分離は、 "JH"の眮換に぀ながりたす。



あなたはそれを矎しい解決策ず呌ぶこずはできたせんが、腐ったリンゎの䞭では遞択肢は倧きくありたせん。



残念ながら、このような遞択により、眮換「」->「SHH」を䜿甚できなくなりたす。 シヌケンス「SHH」は「S」を意味し、そのような組み合わせはロシア語で芋られたすたずえば、「congress」。 繰り返したすが、きれいな解決策はありたせん。少なくずもやる気があるように芋える必芁がありたす。 音「」は゜フト化された「」に近く、゜フト蚘号ずの類掚により、これは接頭蟞「J」で衚すこずができたす。 私は今、自分自身に぀いお蚀及しおいるこず、コヌドはただ長く、暙準ではないこずを理解しおいたす。 しかし、圌らが蚀うように、「私たちにはあなたのために他の䜜家がいたす」。



その結果

A B で G D E よ F 3 そしお Th に L M N ああ P P ず T で F X Ts H W うん B S B E ゆう 私は
A B V G D E ゞェ Zh Z 私は Y K L M N O P R S T うん F Kh C CH SH Jsh うん うん Jh えヌ ゞュ じゃ


アルゎリズム



キリル文字からラテン文字ぞの倉換は簡単です。 簡朔にするためにレゞスタに泚意を払いたせん。

Javaコヌド
public class Translit { public static String cyr2lat(char ch){ switch (ch){ case '': return "A"; case '': return "B"; case '': return "V"; case '': return "G"; case '': return "D"; case '': return "E"; case '': return "JE"; case '': return "ZH"; case '': return "Z"; case '': return "I"; case '': return "Y"; case '': return "K"; case '': return "L"; case '': return "M"; case '': return "N"; case '': return "O"; case '': return "P"; case '': return "R"; case '': return "S"; case '': return "T"; case '': return "U"; case '': return "F"; case '': return "KH"; case '': return "C"; case '': return "CH"; case '': return "SH"; case '': return "JSH"; case '': return "HH"; case '': return "IH"; case '': return "JH"; case '': return "EH"; case '': return "JU"; case '': return "JA"; default: return String.valueOf(ch); } } public static String cyr2lat(String s){ StringBuilder sb = new StringBuilder(s.length()*2); for(char ch: s.toCharArray()){ sb.append(cyr2lat(ch)); } return sb.toString(); } }
      
      





結果の䟋ずしお、既知のパングラムのペア

Shirokaja ehlektrifikacija juzhnihkh guberniy dast mojshnihy tolchok podhhjemu seljhskogo khozjaystva。

Shheshjh zhe ejshje ehtikh mjagkikh francuzskikh bulok da vihpey chaju。



芋た目はあたりよくありたせんが、音蚳のこのオプションの䞻な目的はただフルネヌムです

アレクサンドル・むワノビッチ・レベゞ

ゲオルギヌ・コンスタンティノノィッチ・Z・フコフ



逆倉換の方がはるかに興味深いです。 特に、「むンザマむンド」を実行するためにIT郚門からではなく人に説明するのが良いず考えおいたす。

どうやら、特別な堎合から始める必芁がありたす。



実践が瀺すように、短いトレヌニングセッションの埌、人々は手動で逆倉換を実行できたす。 しかし、圓然、特別な必芁なしにこれを匷制するこずは必芁ありたせん。 自動化するこずもできたす簡単にするため、文字列ず倧文字のみ

Javaコヌド
  public static String lat2cyr(String s){ StringBuilder sb = new StringBuilder(s.length()); int i = 0; while(i < s.length()){//     .  ,     char ch = s.charAt(i); if(ch == 'J'){ //    i++; //      ch = s.charAt(i); switch (ch){ case 'E': sb.append( ''); break; case 'S': sb.append( ''); i++; //      if(s.charAt(i) != 'H') throw new IllegalArgumentException("Illegal transliterated symbol at position "+i);//      break; case 'H': sb.append( ''); break; case 'U': sb.append( ''); break; case 'A': sb.append( ''); break; default: throw new IllegalArgumentException("Illegal transliterated symbol at position "+i); } }else if(i+1 < s.length() && s.charAt(i+1)=='H' && !(i+2 < s.length() && s.charAt(i+2)=='H')){//  ,      .          . switch (ch){ case 'Z': sb.append( ''); break; case 'K': sb.append( ''); break; case 'C': sb.append( ''); break; case 'S': sb.append( ''); break; case 'E': sb.append( ''); break; case 'H': sb.append( ''); break; case 'I': sb.append( ''); break; default: throw new IllegalArgumentException("Illegal transliterated symbol at position "+i); } i++; //   }else{//   switch (ch){ case 'A': sb.append( ''); break; case 'B': sb.append( ''); break; case 'V': sb.append( ''); break; case 'G': sb.append( ''); break; case 'D': sb.append( ''); break; case 'E': sb.append( ''); break; case 'Z': sb.append( ''); break; case 'I': sb.append( ''); break; case 'Y': sb.append( ''); break; case 'K': sb.append( ''); break; case 'L': sb.append( ''); break; case 'M': sb.append( ''); break; case 'N': sb.append( ''); break; case 'O': sb.append( ''); break; case 'P': sb.append( ''); break; case 'R': sb.append( ''); break; case 'S': sb.append( ''); break; case 'T': sb.append( ''); break; case 'U': sb.append( ''); break; case 'F': sb.append( ''); break; case 'C': sb.append( ''); break; default: sb.append(ch); } } i++; //     } return sb.toString(); }
      
      





たずめ



単玔で長い間解決された問題のように思えたすが、創造性ず議論の範囲です。



真剣に、ロシア語のキリル文字のすべおの文字をラテン文字に可逆的に音蚳するための実甚的なアルゎリズムを埗たした。 さらに、芁件の厳栌さを割り匕いた結果は、読むのに蚱容できたす。 これを䜿甚しお、レガシヌシステムおよびラむブラリず統合し、識別子を生成できたす。



誰かがこの゜リュヌションが有甚であり、それぞの道を芋぀けおくれるこずを願っおいたす。



远加



コメントの議論に基づきたす。 より短く、より圢匏的でなければなりたせん。

取り消し可胜な芁件はありたせん 。

  1. 文字倉換の結果、メむンのラテンアルファベットの文字のみを取埗する必芁がありたす
    26個ありたす
    abcdefghijklmnopqrstuvwxyz
  2. 文字倉換は完党に可逆的である必芁がありたす。


暙準がありたす。 芁件を満たしおいるものはありたせん。

芁件を満たすためにのみ 、1぀の暙準を遞択し、最小限に倉曎する必芁がありたす。

倉曎はチェヌンによっお䞀意に識別されたす。 結果が気に入らない堎合は、チェヌンのどのポむントから同意しないかを曞いおください。

゜リュヌションを少し理論的に正圓化するために。
文字倉換 -ある文章の兆候が別の文章の兆候によっお正確に䌝達されるこず。

音声衚蚘ず混同しないでください-音の䌝達は奚励されたすが、保蚌されたせん。

最も䜎い優先順䜍は、文字のグラフィックの類䌌性に䞎えられたす。 たずえば、文字haをXずしお送信するこずは、音声的には受け入れられたせん。



文字倉換は、゜ヌスアルファベットの文字を、タヌゲットアルファベットの文字からの可倉長コヌドで゚ンコヌドするず芋なすこずができたす。 コヌドは次のずおりです。

  1. 䞀文字
  2. プレフィックスず次の基本文字
  3. 特定の接尟蟞が続く基本文字
  4. プレフィックスずポストフィックスの䞡方を持぀基本文字


接頭蟞ず接尟蟞の長さは異なっおいおもかたいたせんが、短いほど良いです。 そしおもちろん、異なるプレフィックスずポストフィックスを持たない方がいいでしょう。

キリル文字ずラテン語の堎合、䞡方ずも1文字で、1぀の接頭蟞ず1぀の接尟蟞に制限するこずができたす。



コヌドの「簡単な可逆性」のために、次の条件を導入したす。

接尟蟞で始たるコヌドや接頭蟞で終わるコヌドはありたせん。



これは、 プレフィックスコヌドの私の䞀般化です 。

このような条件䞋では、結果のシヌケンスのどのフラグメントにも長い「停のコヌド」は存圚しないず䞻匵できたす。 ぀たり、接頭蟞たたは接尟蟞を切り捚おるこずができ、残りの基本文字が単䞀の基本文字ず䞀臎するこずは明らかです。

これは避けられないため、芚えおおく必芁がありたす。 しかし、耇合幎の䞀郚が隣接する単䞀の文字ず䞀緒に蚈画倖の耇合コヌドず芋なされるこずはありたせん。

たずえば、コヌド「S」、コヌド「SH」、およびコヌド「HH」を䜿甚しおみたしょう条件に違反し、接尟蟞で始たりたす。 次に、シヌケンス「SHH」3番目ず1番目のコヌドで、フラグメント「SH」2番目のコヌドに察応を遞択できたす。

プレフィックスの堎合、「簡単な可逆性」条件の違反はそれほど䞍快ではありたせん違いは、分析が巊から右に進むためです。 しかし、それはたた、「目で」知芚するこずを難しくしたす-倧たかなスキャン䞭、私たちは単語を連続的ではなく党䜓を読み、ランダムな組み合わせを「キャッチ」できたす。

導入された条件の特定の結果は、プレフィックスたたはポストフィックスを単䞀文字ずしお䜿甚するこずの犁止です。



キリル文字およびラテン語の堎合、接尟蟞には「H」オプションはありたせん。

プレフィックスは「Y」たたは「J」です。 接頭蟞「Y」が䜿甚されおいる堎合、「Y」たたは「S」を䌝えるために䜿甚するこずはできたせん。 ぀たり、2文字および「»」は非垞に䞀般的の堎合、非暙準、音声孊からは皋遠い、そしおおそらくは長いコヌドを考え出す必芁がありたす。

「J」に問題はありたせん。 このシンボルを個別に䜿甚したくありたせんでした。



I.開始暙準を遞択したす。

もちろん、最も音声的に正しいのはBGNです。 しかし、BGNは基本的に故意であっおもリバヌシブルではありたせん。

私の意芋では、基本的なラテンアルファベットず可逆性に最も近いのは「GOST 16876-71 /è¡š2」であり、これを遞択したす。
...
GOST 7.79-2000 / System Bが珟圚関連しおいない理由を尋ねたす。 䞻に「X」->「X」および「Y」->「J」。 さお、今日は関連性があり、明日は前のGOSTず同じです。
A B で G D E よ F 3 そしお Th に L M N ああ P P ず T で F X Ts H W うん B S B E ゆう 私は
A B V G D E ゞョヌ Zh Z 私は Jj K L M N O P R S T うん F Kh C CH SH SHH ″ Y ′ えヌ ゞュ じゃ


このスキヌムは、私たちの芁件の点では完党ではありたせん。 倉曎する必芁がありたす。

II。 最初に目を匕くのは「JJ」です。 なぜこれが悪いのか、「理論的な」ネタバレで芋るこずができたす。 「理解できない状況では、BGNを芋おください」ずいうルヌルに埓いたす。 ぀たり、「Y」->「Y」です。

III。 今、私はコヌド「Y」なしで残されたした。 BGNは圹に立ちたせん。 ペア「I-Y」ず「E-E」には音声のアナロゞヌがありたす。 文字「E」のコヌドを取埗するために、芏栌はコヌド「E」に埌眮蚘号を远加したす。 「S」->「IH」も実行したす。

IV。 「b」ず「b」の代わりに非文字眮換がありたした。 音声孊を砎壊しないために、プレフィックスずポストフィックスのみを䜿甚できたす。

V.理論䞊のネタバレでは、接頭蟞ず組み合わせお少なくずもベヌスシンボルずしお接尟蟞を䜿甚するこずを犁じないこずに泚意しおください。 ぀たり、「JH」、「JHH」、「JJH」ずいうコヌドがありたす。

VI。 この富を分配するこずは残っおいたす。 倚くの堎合、「b」は最短コヌドです「b」->「jh」。

VII。 Kommersantには音がありたせん。Hは読み䞊げ時に声を出さない方が簡単です。 したがっお、「H」よりも倚い残りのコヌドから遞択したす「b」->「JHH」。



それは刀明した

A B で G D E よ F 3 そしお Th に L M N ああ P P ず T で F X Ts H W うん B S B E ゆう 私は
A B V G D E ゞョヌ Zh Z 私は Y K L M N O P R S T うん F Kh C CH SH SHH Jhh うん Jh えヌ ゞュ じゃ


「SHH」コヌドは、長さ2の接尟蟞を䜿甚する唯䞀のコヌドです。しかし、コヌドの党長はわずか3で、たれな文字です。 可逆性は䟵害されたせん「簡単な可逆性」さえも。

暙準で他の䜕かに觊れる必芁はありたせん。



説明するJavaコヌド
 package tools; import static java.lang.Character.toUpperCase; /** *      * Created by vladimir on 25.08.15. */ public class Translit { public static String lat2cyr(String s){ StringBuilder sb = new StringBuilder(s.length()); int i = 0; while(i < s.length()){//     .  ,     char ch = s.charAt(i); boolean lc = Character.isLowerCase(ch); //    ch = toUpperCase(ch); if(ch == 'J'){ //    i++; //      ch = toUpperCase(s.charAt(i)); switch (ch){ case 'O': sb.append(ch('', lc)); break; case 'H': if(i+1 < s.length() && toUpperCase(s.charAt(i+1))=='H') { //    ( JHH) sb.append(ch('', lc)); i++; //   }else{ sb.append(ch('', lc)); } break; case 'U': sb.append(ch('', lc)); break; case 'A': sb.append(ch('', lc)); break; default: throw new IllegalArgumentException("Illegal transliterated symbol '"+ch+"' at position "+i); } }else if(i+1 < s.length() && toUpperCase(s.charAt(i+1))=='H' ){//  ,      .          . switch (ch){ case 'Z': sb.append(ch('', lc)); break; case 'K': sb.append(ch('', lc)); break; case 'C': sb.append(ch('', lc)); break; case 'S': if(i+2 < s.length() && toUpperCase(s.charAt(i+2))=='H') { //     sb.append(ch('', lc)); i++; //    }else{ sb.append(ch('', lc)); } break; case 'E': sb.append(ch('', lc)); break; case 'I': sb.append(ch('', lc)); break; default: throw new IllegalArgumentException("Illegal transliterated symbol '"+ch+"' at position "+i); } i++; //   }else{//   switch (ch){ case 'A': sb.append(ch('', lc)); break; case 'B': sb.append(ch('', lc)); break; case 'V': sb.append(ch('', lc)); break; case 'G': sb.append(ch('', lc)); break; case 'D': sb.append(ch('', lc)); break; case 'E': sb.append(ch('', lc)); break; case 'Z': sb.append(ch('', lc)); break; case 'I': sb.append(ch('', lc)); break; case 'Y': sb.append(ch('', lc)); break; case 'K': sb.append(ch('', lc)); break; case 'L': sb.append(ch('', lc)); break; case 'M': sb.append(ch('', lc)); break; case 'N': sb.append(ch('', lc)); break; case 'O': sb.append(ch('', lc)); break; case 'P': sb.append(ch('', lc)); break; case 'R': sb.append(ch('', lc)); break; case 'S': sb.append(ch('', lc)); break; case 'T': sb.append(ch('', lc)); break; case 'U': sb.append(ch('', lc)); break; case 'F': sb.append(ch('', lc)); break; case 'C': sb.append(ch('', lc)); break; default: sb.append(ch(ch, lc)); } } i++; //     } return sb.toString(); } public static String cyr2lat(char ch){ switch (ch){ case '': return "A"; case '': return "B"; case '': return "V"; case '': return "G"; case '': return "D"; case '': return "E"; case '': return "JO"; case '': return "ZH"; case '': return "Z"; case '': return "I"; case '': return "Y"; case '': return "K"; case '': return "L"; case '': return "M"; case '': return "N"; case '': return "O"; case '': return "P"; case '': return "R"; case '': return "S"; case '': return "T"; case '': return "U"; case '': return "F"; case '': return "KH"; case '': return "C"; case '': return "CH"; case '': return "SH"; case '': return "SHH"; case '': return "JHH"; case '': return "IH"; case '': return "JH"; case '': return "EH"; case '': return "JU"; case '': return "JA"; default: return String.valueOf(ch); } } public static String cyr2lat(String s){ StringBuilder sb = new StringBuilder(s.length()*2); for(char ch: s.toCharArray()){ char upCh = toUpperCase(ch); String lat = cyr2lat(upCh); if(ch != upCh){ lat = lat.toLowerCase(); } sb.append(lat); } return sb.toString(); } /** *      */ private static char ch(char ch, boolean toLowerCase){ return toLowerCase? Character.toLowerCase(ch): ch; } /** *  */ public static void main(String[] args) { String s1 = cyr2lat("  "); String s2 = cyr2lat(" "); String s3 = cyr2lat("         "); String s4 = cyr2lat("         ."); String s5 = cyr2lat("                                "); System.out.println(s1); System.out.println(s2); System.out.println(s3); System.out.println(s4); System.out.println(s5); System.out.println(); System.out.println(lat2cyr(s1)); System.out.println(lat2cyr(s2)); System.out.println(lat2cyr(s3)); System.out.println(lat2cyr(s4)); System.out.println(lat2cyr(s5)); } }
      
      





コヌドは、実隓および逆倉換アルゎリズムの芖芚的な説明のためにのみ提䟛されおいたす。



工業甚の音蚳のニヌズには、適切な゜リュヌションがありたすただし、芁件1および2には既補の゜リュヌションはありたせん。
業界暙準のうち、音蚳はUnicode Common Locale Data Repository ProjectCLDRの䞀郚です。

CLDR International Components for Unicodeを含む非垞に匷力な実装がありたす 。

具䜓的には、ICUのJavaバヌゞョン ICU4J 。

音蚳およびその他を蚘述および実行するためのフレヌムワヌクがありたす。

ロシア語キリル文字に぀いおは、既補の実装がありたす

1. ISO 9.リバヌシブル、ただし発音区別笊号付き。

2. BGN。 分音蚘号はありたせんが、句読点ず䞍可逆性がありたす。

GOSTを远加する「あいたいな蚈画」がありたす。

それを理解するための時間ず劎力があれば、私はそれを行い、ICU4Jを䜿甚しお私のスキヌムの実装をレむアりトしたす。





コメントの建蚭的な批刀のおかげで、決定は倉わりたした。 問題に察する私の理解が深たりたした。 「アダルト」実装に぀いお考えたす。

みんなありがずう Habrはより良いこずをしたす。



All Articles