@Maturmalayev

Как написать переводчик с кириллицы на латиницу?

Как написать веб сайт с двумя окошками для перевода из одного состояния в другое?

Чтобы при вводе в поле ввода на кириллице в другом окошке выдавал текст на латинице?
  • Вопрос задан
  • 390 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Zewkin
Я у мамы фронтэндер
Да как угодно. Я когда-то для первого Angular делал так

.directive('translit', function() {
    var rules = {                           // according to http://zakon3.rada.gov.ua/laws/show/55-2010-%D0%BF
      'А' : 'A',
      'Б' : 'B',
      'В' : 'V',
      'Г' : 'H',
      'Ґ' : 'G',
      'Д' : 'D',
      'Е' : 'E',
      'Є' : ['YE', 'IE'],
      'Ж' : 'ZH',
      'З' : 'Z',
      'И' : 'Y',
      'І' : 'I',
      'Ї' : ['YI', 'I'],
      'Й' : ['Y', 'I'],
      'К' : 'K',
      'Л' : 'L',
      'М' : 'M',
      'Н' : 'N',
      'О' : 'O',
      'П' : 'P',
      'Р' : 'R',
      'С' : 'S',
      'Т' : 'T',
      'У' : 'U',
      'Ф' : 'F',
      'Х' : 'KH',
      'Ц' : 'TS',
      'Ч' : 'CH',
      'Ш' : 'SH',
      'Щ' : 'SHCH',
      'Ю' : ['YU', 'IU'],
      'Я' : ['YA', 'IA'],
    }
    return {
      link: function(scope, element, attrs) {
        element.bind('blur', function(e) {
          var translited = '';
          element.val(element.val().toUpperCase());
          var letters = element.val().split('');
          letters.map(function(letter) {
            var latinLetter;
            rules[letter] ?
              Array.isArray(rules[letter]) ?
                letters.indexOf(letter) == 0 ?      // checking if the letter is the first in the word
                  latinLetter = rules[letter][0] :
                  latinLetter = rules[letter][1]
              : latinLetter = rules[letter]
            : latinLetter = '';                     // if there is no rule for the character, then replace with nothing
            translited += latinLetter;
          })
          scope.$apply(function() {
            scope.customer.personalData[attrs.translit] = translited;
          })
        })
      }
    }
  })
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы