Intereting Posts
IcePHP не может открыть общий объектный файл: нет такого файла или каталога в Unknown в строке 0 PHP – Заменить данные в многомерном массиве, конкретный ключ Как установить список доверенных сертификатов для клиента сокета в PHP? Вставить автоматически увеличивающийся идентификатор с помощью подготовленных операторов XMLHttpRequest Почтовые данные не отправляются Короткую руку сделать что-то вроде: if ($ variable == 1 || $ variable == "whatever" || $ variable == '492'). Kohana 3.3 Не работает из подкаталога хотите знать, является ли это проблемой html, php или javascript Как удалить «через» и имя сервера при отправке писем с помощью PHP? PHP Замечание: преобразование массива в строку только на PHP 7 Использовать ключевое слово в функциях – PHP Лучший способ разбора bbcode Опубликовать массив с помощью PHP-сокета WAMPServer phpMyadmin Максимальное время выполнения на 360 секунд превышено Разница между сортировкой utf8 между юникодом и датским языком

Обрабатывать арабскую строку в PHP с помощью Eclipse

В настоящее время я работаю над локализацией веб-сайта, который был первым на английском языке. Третья компания выполнила переводы и предоставила нам файл excel с переводами. Который я успешно преобразовал в массив PHP, который я могу использовать в своих представлениях. Я использую Eclipse для Windows для редактирования моих файлов PHP.

Все в порядке, за исключением того, что мне нужно добавить переменные в мои строки, например:

'%1 is now following %2' 

В арабском я был снабжен струнами вроде этого:

 '_______الآن يتتبع _______' 

Я считаю, что заменить _ _ на% 1 и% 2 невероятно сложно, потому что арабская часть – это право на левую строку, а %1 , %2 будут считаться слева направо или справа налево и Я не уверен . У меня почти нет ожидаемых результатов с порядком моего параметра, потому что% 1 иногда будет идти слева от строки, иногда справа, в зависимости от того, где я начинаю печатать. Скопировать вставку строк замены также могут иметь одинаковые странные эффекты.

В большинстве случаев я получаю строку, подобную этой:

 %2الآن يتتبع %1 

% 1 должно быть на правом сайте,% 2 – на левом сайте. Очевидно, что %1 считается строкой справа налево, потому что% появляется справа. %2 считается слева направо.

Я уверен, что кто-то, как этот вопрос раньше. Есть ли способ легко сделать это в Eclipse? Или использовать более умный редактор для арабских проблем? Или, может быть, это проблема с Windows? Есть ли обходной путь?

ОБНОВИТЬ

Я также попытался разбить мою строку на несколько строк, но это также изменяет порядок параметров:

 '%1' . 'الآن تتبع' . '%2' 

ОБНОВЛЕНИЕ 2

Кажется, что замена сменной строки делает все лучше. Вероятно, это связано с тем, как номера обрабатываются в арабских строках. Эта строка была отредактирована в Eclipse без каких-либо проблем. Порядок параметра правильный, строка корректно обрабатывается PHP:

 '{var2} الآن يتتبع {var1}' 

Если никакое другое решение не найдено, это может быть хорошей альтернативой.

    Будучи арабским докладчиком, я получаю много задач локализации. Хотя я не сталкивался с этой проблемой, в частности, но во время редактирования у меня было много вопросов слева направо / справа налево. Я успешно работал с Notepad ++ .

    Итак, вот что я обычно делаю, когда хочу редактировать арабский текст

    1. Открыть пустой Notepad ++ *
    2. Установите кодировку в UTF-8 (Encoding -> Encoding в UTF-8)
    3. Включить RTL-режим (View -> Text Rirection RTL)
    4. Вставить ваши строки

    И вот скриншот, показывающий, как я редактирую вашу строку

    введите описание изображения здесь

    *: по какой-то причине, когда я открываю уже существующий файл, дела идут бананы. Так что, может быть, я суеверен, но это всегда срабатывало для меня.

    Обновление: впервые я сделал это, я был настроен скептически, потому что строки выглядели неправильно, но потом я сделал это:

     print_r(str_split($string)); 

    и я увидел, что они действительно в правильном порядке.

    @Adnan помог мне понять, а затем подтвердил, что есть проблемы при смешивании латинских цифр с арабским текстом.

    Исходя из этого вывода, решение просто прекратить использование %1 , %2 , %3 , … в качестве заполнителей. Вместо этого я буду использовать более описательные ключевые слова, например {USER} , {ALBUM} , {PHOTO} , …

    Это показывает ожидаемый результат в файле PHP и легко редактируется:

     'ar' => '{USER} الآن يتابع {ALBUM}' 

    Я бы предпочел оригинальный блокнот для этой задачи.

    1. Откройте «Блокнот», убедитесь, что вы находитесь в режиме LTR
    2. Тип %1
    3. Измените режим на RTL, нажав CTRL + SHIFT
    4. Вставьте арабскую строку в редактор.
    5. Вернитесь назад к LTR, снова нажав CTRL + SHIFT .
    6. Тип %2
    7. Выделить все с помощью CTRL + A и скопировать с помощью CTRL + C
    8. Вставьте в IDE. Это должно выглядеть странно, но выполнять, как ожидалось.

    Причина использования Блокнота: более сложный редактор, такой как Notepad ++, Sublime, Coda (Mac) и некоторые IDE – в вашем случае Eclipse может не использовать правильную кодировку, а «Блокнот» прост, но работает хорошо для многоязычных задач.