PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Приветствие
McLotos
Отправлено: 25 Мая, 2011 - 13:11:14
Post Id



Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Подскажите как сделать чтобы имя и фамилия пользователя выводились на русском и на английском, в БД эти данные только на английском.
И как сделать чтобы выводилось не полное имя, а только первая буква
Ну допустим пользователь в БД записан как Petr Ivanov
А в приветствии выводится только Ivanov P
Имя и фамилия в БД хранятся в разных полях таблицы


-----
ЯГотовПоверить,ЧтоБываютСлучаи,КогдаУдалениеЗубовАвтогеномЧерезЗаднийПроходЯвляетсяРациональным.
 
 Top
EuGen Администратор
Отправлено: 25 Мая, 2011 - 13:18:51
Post Id


Профессионал


Покинул форум
Сообщений всего: 9097
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Обычно бывает наоборот, есть вариант на русском и выполняется транслитерация.
Если же нужно сделать с английского на русский, то транслитерацию можно сделать просто по принципу "1:1". Завести, например, массив и использовать его. Простой пример (замена 1:1):
PHP:
скопировать код в буфер обмена
  1.  
  2. //варианты для всех букв, не забыть заглавные
  3. $rgLetters=array('a'=>'а', 'b'=>'б');
  4. $nameEng='Peter Ivanov';
  5. $nameRus=join('',array_map(create_function('$item', 'global $rgLetters; return $rgLetters[$item];'), str_split($nameEng)));
  6.  

Но следует помнить, что в английском языке тоже есть комбинации вроде "th" - читающееся как "з". Так что надежнее всего - хранить 2 поля в БД.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
McLotos
Отправлено: 25 Мая, 2011 - 13:24:11
Post Id



Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Блин. Огромное человеческое! А то я никак не мог сообразить как это реализовывается, раньше использовал готовые lang файлы, теперь хоть буду знать как это пишется.


-----
ЯГотовПоверить,ЧтоБываютСлучаи,КогдаУдалениеЗубовАвтогеномЧерезЗаднийПроходЯвляетсяРациональным.
 
 Top
Мелкий Супермодератор
Отправлено: 25 Мая, 2011 - 13:26:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 11874
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 612 раз(а)




EuGen, ничего себе конструкция. А разве не проще:


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 25 Мая, 2011 - 13:29:07
Post Id


Профессионал


Покинул форум
Сообщений всего: 9097
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




На случай, когда мы захотим сделать более сложную обработку, скажем, учесть все такие хитрости вроде транскрипций, проверки закрытых/открытых слогов, больше подойдет array_map


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
McLotos
Отправлено: 25 Мая, 2011 - 13:45:20
Post Id



Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




А расположение букв играет роль?
Ну к примеру фамилия Zhilenko. Логически человек понимает что это Жиленко, а не Зхиленко.
Переведётся ли это корректно, если в списке
PHP:
скопировать код в буфер обмена
  1. $rgLetters=array('zh'=>'ж', 'z'=>'з','h'=>'х');

Будут сначала стоять парные, а патом одинарные.


-----
ЯГотовПоверить,ЧтоБываютСлучаи,КогдаУдалениеЗубовАвтогеномЧерезЗаднийПроходЯвляетсяРациональным.
 
 Top
EuGen Администратор
Отправлено: 25 Мая, 2011 - 13:57:46
Post Id


Профессионал


Покинул форум
Сообщений всего: 9097
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




В случае с str_replace - да.
Для array_map же нужно будет изменить логику встроенной функции. В этом вариант, предложенный Мелкий предпочтительнее


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
McLotos
Отправлено: 25 Мая, 2011 - 14:10:21
Post Id



Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Так какой вариант мне использовать? Я что-то запутался


-----
ЯГотовПоверить,ЧтоБываютСлучаи,КогдаУдалениеЗубовАвтогеномЧерезЗаднийПроходЯвляетсяРациональным.
 
 Top
EuGen Администратор
Отправлено: 25 Мая, 2011 - 14:18:58
Post Id


Профессионал


Покинул форум
Сообщений всего: 9097
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Этот:
PHP:
скопировать код в буфер обмена
  1.  
  2. $rgLetters=array('Zh'=>'Ж', 'z'=>'з','h'=>'х', 'i'=>'и', 'l'=>'л','o'=>'о','k'=>'к', 'n'=>'н');
  3. $nameEng ='Zhilenko';
  4. $nameRus = str_replace(array_keys($rgLetters),array_values($rgLetters), $nameEng);
  5.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB