20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
1

Перевод на русский значения из переменной

22.10.2017, 20:42. Показов 2059. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, подскажите решение проблемы
есть хml файл с него я парсю данные

в частности есть в хml файле строка
XML
1
<windDirection deg="81.0024" code="E" name="East"/>

PHP
1
2
3
4
5
в парсере я дергаю содержимое атрибута name
$windDirection = $time->windDirection['name'];
 
вывожу
echo "$windDirection";
в браузере отображает
East


Моя задача нужно чтобы выводило по-русски
Восток



Я сделал ассоциативный массив, но где-то ошибка и не выводит перевод, поправьте меня пожалуйста.


PHP
1
2
3
4
5
6
7
8
9
10
$curmap = array(
'Light breeze' => 'Легкий ветер',
'East' => 'Восток',
'Gentle Breeze' => 'Нежный бриз'
);
// заменяет название с английского на русский
if(!empty($windDirection) && in_array($windDirection, array_keys($curmap))){ 
$windDirection_title = $curmap[$windDirection]; 
}
echo "$windDirection_title";
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2017, 20:42
Ответы с готовыми решениями:

Перевод значения переменной с типом string в time
Есть переменая dtime с типом string в этой переменной указано время dtime:= '0:22:45'; ...

Перевод транслита на русский
пока что поставил только 2 memo и button и не написал саму программу

Перевод аплета на русский
Есть вот такая значит программка: Всё значит в ней работает. Я её декомпилировал, потом...

Statement (перевод на русский)
Всем привет! Задумался о переводе слова statement. В контексте, например: if (expression)...

8
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
22.10.2017, 20:56 2
Я добавил 1 строку:
PHP
1
$windDirection = 'East';
Итого:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$curmap = array(
'Light breeze' => 'Легкий ветер',
'East' => 'Восток',
'Gentle Breeze' => 'Нежный бриз'
);
$windDirection = 'East';
 
// заменяет название с английского на русский
if(!empty($windDirection) && in_array($windDirection, array_keys($curmap))){
  $windDirection_title = $curmap[$windDirection];
}
echo $windDirection_title;
Результат:
Код
Восток
0
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
22.10.2017, 23:34  [ТС] 3
Цитата Сообщение от Пифагор Посмотреть сообщение
Я добавил 1 строку:

Вы не поняли наверное что мне нужно раз в вашем ответе вы присвоили значение переменной
смотрите есть хмл файл, есть кусок кода в нем
XML
1
<windDirection deg="81.0024" code="E" name="East"/>
в атрибуте name=""
может быть много значений сейчас там East
если например мой парсер делает парсинг хмл файла и в этом теге находит
East
то через ассоциативный массив выводит значение ключа
Восток

если в атрибуте name="Light breeze"
то вывод будет
Легкий ветер

а вы в примере добавили строку
$windDirection = 'East';

а если в атрибуте
name="Light breeze"
то что выведет?
0
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
23.10.2017, 00:41 4
Просто сделайте код более информативным

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$curmap = array(
'Light breeze' => 'Легкий ветер',
'East' => 'Восток',
'Gentle Breeze' => 'Нежный бриз'
);
// заменяет название с английского на русский
if(empty($windDirection))
{
      echo 'windDirection пустоват';
}
elseif (isset($curmap[$windDirection])){ 
      $windDirection_title = $curmap[$windDirection];
      echo "$windDirection_title";
}
else{echo "Нет перевода для " . $curmap[$windDirection]};
или пользуйтесь отладчиком, чтобы понять в каком месте что не срабатывает. Какой-то очевидной ошибки в вашем коде лично я не вижу.
0
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
23.10.2017, 10:11  [ТС] 5
Уменя есть
такой парсер пхп

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$link = "http://путь-до-хмл-файла";
 
$xml = simplexml_load_file($link); // раскладываем xml на массив
 
 
foreach ($xml->forecast->time as $time) {
echo readableDate($time['to']);
$windDirection = $time->windDirection['name']; // направление ветра
echo "направление ветра $windDirection<br>";
}
 
function readableDate($dateA) {
$monthes = array(
1 => 'Января', 2 => 'Февраля', 3 => 'Марта', 4 => 'Апреля', 5 => 'Мая', 6 => 'Июня', 7 => 'Июля', 8 => 'Августа', 9 => 'Сентября', 10 => 'Октября', 11 => 'Ноября', 12 => 'Декабря'
);
$timestamp = strtotime($dateA) + 60*60;
 
return date('d', $timestamp) . ' ' . $monthes[(date('n', $timestamp))] . ' в ' . date('G:i ', $timestamp) . 'ч<br>';
}
?>



который парсит данные с такого хмл файла




XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<forecast>
<windDirection deg="255.5" code="WSW" name="Southwest"/>
</time>
<time from="2017-10-23T09:00:00" to="2017-10-23T12:00:00">
<windDirection deg="255.5" code="WSW" name="West-southwest"/>
</time>
<time from="2017-10-23T12:00:00" to="2017-10-23T15:00:00">
<windDirection deg="255.5" code="WSW" name="West-southwest"/>
</time>
<time from="2017-10-23T15:00:00" to="2017-10-23T18:00:00">
<windDirection deg="255.5" code="WSW" name="Nord"/>
</time>
<time from="2017-10-23T18:00:00" to="2017-10-23T21:00:00">
<windDirection deg="255.5" code="WSW" name="West-southwest"/>
</time>
<time from="2017-10-23T21:00:00" to="2017-10-24T00:00:00">
<windDirection deg="230.501" code="SW" name="West"/>
</time>
<time from="2017-10-24T00:00:00" to="2017-10-24T03:00:00">
<windDirection deg="230.501" code="SW" name="Southwest"/>
</time>
<time from="2017-10-24T03:00:00" to="2017-10-24T06:00:00">
<windDirection deg="230.501" code="SW" name="West"/>
</time>
<time from="2017-10-24T06:00:00" to="2017-10-24T09:00:00">
<windDirection deg="230.501" code="SW" name="Southwest"/>
</time>
<time from="2017-10-24T09:00:00" to="2017-10-24T12:00:00">
<windDirection deg="230.501" code="SW" name="Southwest"/>
</time>
<time from="2017-10-24T12:00:00" to="2017-10-24T15:00:00">
<windDirection deg="230.501" code="SW" name="Southwest"/>
</time>
<time from="2017-10-24T15:00:00" to="2017-10-24T18:00:00">
<windDirection deg="230.501" code="SW" name="Southwest"/>
</time>
<time from="2017-10-24T18:00:00" to="2017-10-24T21:00:00">
<windDirection deg="230.501" code="SW" name="Southwest"/>
</time>
<time from="2017-10-24T21:00:00" to="2017-10-25T00:00:00">
<windDirection deg="232.003" code="SW" name="Southwest"/>
</time>
<time from="2017-10-25T00:00:00" to="2017-10-25T03:00:00">
<windDirection deg="236.502" code="WSW" name="West-southwest"/>
</time>
</forecast>

мне нужно получить перевод на русский язык, этих слов!
Southwest
West-southwest
West
Nord


в данном примере после отработки парсера я получаю в браузере данные вида

23 Октября в 10:00 ч
направление ветра SouthEast
23 Октября в 13:00 ч
направление ветра SouthEast
23 Октября в 16:00 ч
направление ветра East-southeast
23 Октября в 19:00 ч
направление ветра East-southeast
23 Октября в 22:00 ч
направление ветра East-southeast
24 Октября в 1:00 ч
направление ветра East
24 Октября в 4:00 ч
направление ветра East
24 Октября в 7:00 ч
направление ветра East-northeast
24 Октября в 10:00 ч
направление ветра East-northeast
24 Октября в 13:00 ч
направление ветра East-northeast
24 Октября в 16:00 ч
направление ветра East-northeast
24 Октября в 19:00 ч
направление ветра East-northeast
24 Октября в 22:00 ч
направление ветра NorthEast
25 Октября в 1:00 ч
направление ветра NorthEast




как мне заменить русскими словами
добавлял код



PHP
1
2
3
4
5
6
7
8
9
10
11
$curmap = array(
'Southwest' => 'саунд вест',
'West-southwest' => 'вест ваунд вест',
'West' => 'вест',
'Nord' => 'норд'
);
// заменяет название с английского на русский
if(!empty($windDirection) && in_array($windDirection, array_keys($curmap))){ 
$windDirection_title = $curmap[$windDirection]; 
}
echo "$windDirection_title";

то ничего не заменяет
но если есть одно слово в переменно
$windDirection = 'West';
то заменяет русским значением.
0
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
23.10.2017, 10:15 6
serauto79, Странно, в примере вывода у вас East-ы, а в массиве West-ы
0
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
23.10.2017, 11:33  [ТС] 7
Цитата Сообщение от renat_dmitriev Посмотреть сообщение
Странно, в примере вывода у вас East-ы, а в массиве West-ы
это пример, мне главное может кто сможет объяснить почему не получается замена.
0
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
23.10.2017, 12:00 8
serauto79, Замена не получается, потому что вы не умеете пользоваться отладчиком. Код выглядит абсолютно рабочим.
0
20 / 9 / 3
Регистрация: 02.04.2015
Сообщений: 646
23.10.2017, 15:20  [ТС] 9
Цитата Сообщение от renat_dmitriev Посмотреть сообщение
Замена не получается, потому что вы не умеете пользоваться отладчиком. Код выглядит абсолютно рабочим.

я запостил сюда свой парсер и хмл документ, еслибы тут действительно присутствовал программист со знанием пхп то возможно помог, а так, Код выглядит абсолютно рабочим
0
23.10.2017, 15:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2017, 15:20
Помогаю со студенческими работами здесь

Перевод на Русский в php?
здравствуйте, столкнулась с небольшой проблемой. В мобильной версии сайта. название меню на...

Перевод на русский язык
Forces Acting on the Aircraft Thrust, drag, lift, and weight are forces that act upon all...

Перевод с кириллицы на русский
Доброго времени суток! Кто-нибудь подскажет, что здесь не так? Цель задачи - переводить cout с...

Перевод меню с английского на русский.
Есть меню вида var menu_label:Array = new Array(&quot;Main page&quot;, &quot;Leadership in life&quot;, &quot;Leader in...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru