ФИО по-латински.
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
ФИО по-латински.
Нужно на лету преобразовывать фамилию и, может быть, имя, отчество в латиницу. Хранить по-латински в базе не хочется. Ни у кого нет процедурки для этого дела?
We are hard at work… for you. 

- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
ФИО по-латински.
Интересный вопрос. Если без затей, то без проблем - поставить каждой русской букве однозначное соответствие. А если например надо "Чехов" преобразовать в "Chekhov"?
С уважением, ДП
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
ФИО по-латински.
Как раз с Чеховым проблем нет, однозначное соответствие "ч"-"ch", "х"-"kh". Пугает скорее "й", "ий", "ый". В общем, когда надо обрабатывать несколько русских букв, а звук как бы один. Целая тема. Думал, может кто уже проходил.
We are hard at work… for you. 

- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
ФИО по-латински.
Нашёл перспективную страничку, для php, но это не важно https://habrahabr.ru/post/187778/
С уважением, ДП
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
ФИО по-латински.
Ну по тупому как то так... на основе документа
Код: Выделить всё
PROGRAM
MAP
Translit(STRING Str),STRING
END
CODE
MESSAGE(Translit('Пример: транслитерация фамилии - Пупкин Василий Васильевич!'))
Translit PROCEDURE(STRING Str)!,STRING
RusSmall STRING('абвгдеёжзийклмнопрстуфхцчшщыэюяьъ')
EngChars STRING(4),DIM(33)
Result STRING(1024)
Counter SHORT
Spaces SHORT
Position SHORT
CODE
EngChars[1] = 'a'
EngChars[2] = 'b'
EngChars[3] = 'v'
EngChars[4] = 'g'
EngChars[5] = 'd'
EngChars[6] = 'e'
EngChars[7] = 'e'
EngChars[8] = 'zh'
EngChars[9] = 'z'
EngChars[10] = 'i'
EngChars[11] = 'i'
EngChars[12] = 'k'
EngChars[13] = 'l'
EngChars[14] = 'm'
EngChars[15] = 'n'
EngChars[16] = 'o'
EngChars[17] = 'p'
EngChars[18] = 'r'
EngChars[19] = 's'
EngChars[20] = 't'
EngChars[21] = 'u'
EngChars[22] = 'f'
EngChars[23] = 'kh'
EngChars[24] = 'tc'
EngChars[25] = 'ch'
EngChars[26] = 'sh'
EngChars[27] = 'shch'
EngChars[28] = 'y'
EngChars[29] = 'e'
EngChars[30] = 'iu'
EngChars[31] = 'ia'
EngChars[32] = ''
EngChars[33] = ''
LOOP Counter = 1 TO LEN(Str)
IF Str[Counter] = ' '
Spaces += 1
CYCLE
END
Position = INSTRING(LOWER(Str[Counter]),RusSmall,1,1)
IF Position > 0
Result = CLIP(Result) & ALL(' ',Spaces) & CHOOSE(ISUPPER(Str[Counter]), UPPER(EngChars[Position]), EngChars[Position])
ELSE
Result = CLIP(Result) & ALL(' ',Spaces) & Str[Counter]
END
Spaces = 0
END
RETURN Result
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
ФИО по-латински.
ENV файл не забываем... сам забыл и тупил сидел несколько минут 

Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
ФИО по-латински.
Ага... ну и UPPER у меня жирный
нужно только первую букву ...

Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
ФИО по-латински.
Исправил
Код: Выделить всё
PROGRAM
MAP
Translit(STRING Str),STRING
END
CODE
MESSAGE(Translit('Пример: транслитерация фамилии - Чумак Василий Васильевич!'))
Translit PROCEDURE(STRING Str)!,STRING
RusSmall STRING('абвгдеёжзийклмнопрстуфхцчшщыэюяьъ')
EngChars STRING(4),DIM(33)
Result STRING(1024)
Counter SHORT
Spaces SHORT
Position SHORT
FourChars STRING(4)
CODE
EngChars[1] = 'a'
EngChars[2] = 'b'
EngChars[3] = 'v'
EngChars[4] = 'g'
EngChars[5] = 'd'
EngChars[6] = 'e'
EngChars[7] = 'e'
EngChars[8] = 'zh'
EngChars[9] = 'z'
EngChars[10] = 'i'
EngChars[11] = 'i'
EngChars[12] = 'k'
EngChars[13] = 'l'
EngChars[14] = 'm'
EngChars[15] = 'n'
EngChars[16] = 'o'
EngChars[17] = 'p'
EngChars[18] = 'r'
EngChars[19] = 's'
EngChars[20] = 't'
EngChars[21] = 'u'
EngChars[22] = 'f'
EngChars[23] = 'kh'
EngChars[24] = 'tc'
EngChars[25] = 'ch'
EngChars[26] = 'sh'
EngChars[27] = 'shch'
EngChars[28] = 'y'
EngChars[29] = 'e'
EngChars[30] = 'iu'
EngChars[31] = 'ia'
EngChars[32] = ''
EngChars[33] = ''
LOOP Counter = 1 TO LEN(Str)
IF Str[Counter] = ' '
Spaces += 1
CYCLE
END
Position = INSTRING(LOWER(Str[Counter]),RusSmall,1,1)
IF Position > 0
FourChars = EngChars[Position]
FourChars[1] = UPPER(FourChars[1])
Result = CLIP(Result) & ALL(' ',Spaces) & CHOOSE(ISUPPER(Str[Counter]), FourChars, EngChars[Position])
ELSE
Result = CLIP(Result) & ALL(' ',Spaces) & Str[Counter]
END
Spaces = 0
END
RETURN Result
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
ФИО по-латински.
Принцип ясен. Нужно для начала сделать по-простому. А потом вылавливать необычные фамилии, и для них пытаться найти варианты. Сразу не могу сообразить, что делать с дифтонгами, которых по определению в русском языке нет
.

We are hard at work… for you. 

- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
ФИО по-латински.
По ссылке, которую я приводил, есть же разбор сложных случаев - Е,Ё в начале слова или в середине кодируются по-разному, ну и т.д.
С уважением, ДП
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
ФИО по-латински.
Для начала найти актуальную документацию по загран. паспортам.
Подправить и все.
Без разных фантазий...
Подправить и все.
Без разных фантазий...
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
ФИО по-латински.
А я банально не согласен с тем автором. Почему Егор должен писаться как Yegor, а Елена как Yelena? Нужно, действительно, искать правила. Если они вообще существуют. Либо методом проб и ошибок.Дед Пахом писал(а):По ссылке, которую я приводил, есть же разбор сложных случаев - Е,Ё в начале слова или в середине кодируются по-разному, ну и т.д.
We are hard at work… for you. 

-
- ✯ Ветеран ✯
- Сообщения: 5159
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
ФИО по-латински.
Вот, кстати, хоть какие-то правила - http://transliteration.ru/mvd_1047. Может даже и официоз.
We are hard at work… for you. 

- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
ФИО по-латински.
И опять дифтонги. Откуда вы их в русском языке выкопали?kreator писал(а): Вот, кстати, хоть какие-то правила - http://transliteration.ru/mvd_1047. Может даже и официоз.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация: