Правильный алгоритм для смешанного текста LTR/RTL в JavaScript?CSS

Разбираемся в CSS
Ответить Пред. темаСлед. тема
Anonymous
 Правильный алгоритм для смешанного текста LTR/RTL в JavaScript?

Сообщение Anonymous »

Я использую API API Open Applyions для написания текста, подобно тому, как Chatgpt делает это в сообщении пользователя/систем назад и вперед. Но это для арабского текста, и объяснение текста иногда возвращается в смесь английского и арабского языка. Есть ли стандартный идеальный подход к выяснению, как сказать, что вам нужна смесь rtl и ltr ? or ltr on spans (Arabic vs. Latin chunks)
[*]rtl-container-mixed-inside: rtl on container, rtl/ltr on spans again
[*]rtl-container-auto-inside: rtl on container, auto on all spans

auto-everywhere < /h2>

none-container-mixed-inside < /h2>

rtl-container-mixed-inside
rtl-container-auto-inside < /h2>

Общий код < /h2>

Код: Выделить всё


بالطبع.

[list]
[*]
"
الأشجار
" (al-ashjar) 
تعني 
"trees" 
وهي الفاعل.

[*]
"
جميلة
" (jameela) 
تعني 
"beautiful" 
وهي صفة.

[*]
"
تعطي
" (tu'ti) 
تعني 
"give" 
وهي الفعل.

[*]
"
الحياة
" (al-hayat) 
تعني 
"life" 
وهي المفعول الأول.

[*]
"
الظل
" (al-zill) 
تعني 
"shade" 
وهي المفعول الثاني.

[/list]

الجملة تصف جمال الأشجار وقدرتها على إعطاء الحياة والظل.

هل هذا يوضح ما كنت تتساءل عنه؟

< /code>
 скопированный контент < /h2>
Для читаемости, вот простой текст: < /p>
بالطبع.

"الأشجار" (al-ashjar) تعني "trees" وهي الفاعل.
"جميلة" (jameela) تعني "beautiful" وهي صفة.
"تعطي" (tu'ti) تعني "give" وهي الفعل.
"الحياة" (al-hayat) تعني "life" وهي المفعول الأول.
"الظل" (al-zill) تعني "shade" وهي المفعول الثاني.
الجملة تصف جمال الأشجار وقدرتها على إعطاء الحياة والظل.

هل هذا يوضح ما كنت تتساءل عنه؟
Вопрос
кажется сложной потенциально неоднозначной/неразрешимой проблемой, но все равно подумал, что я спрошу. /> Я чувствую, что это может стать довольно неоднозначным. Например, возьмите эти строки: < /p>
# should be rtl
هل هذا يوضح ما كنت تتساءل عنه
# ltr
it could get quite ambiguous
# ltr
it could get تتساءل quite ambiguous
# rtl
هل هذا يوضح ما hello كنت تتساءل عنه
# rtl
hello هل هذا يوضح ما كنت تتساءل عنه
< /code>
Таким образом, кажется, что вы должны знать значение предложения, чтобы правильно понять это. Я предполагаю, что это могло бы сработать.export type Span = {
fontSize: number
script: string
// heading: number
text: string
count: number
heading: number
dir?: 'ltr' | 'rtl'
}

export function parseSpans(text, size) {
const spans = []
const span = []
const list = [...text]
let script

function add(span, script) {
const heading = FONT_SIZE_MULTIPLIERS[script ?? 'code']?.body ?? 1
const fontSize = Math.round(size * heading)
const dir = getScriptDirection(script ?? 'latin')

spans.push({
fontSize,
dir: 'auto',
count: span.length,
script:
!script || script === 'latin'
? 'code'
: script === 'other'
? 'code'
: script,
heading,
text: span.join(''),
})
}

for (const char of list) {
const type = detectSymbol(char)

if (!type || type === script) {
span.push(char)

script = type
} else if (char.match(/[\s\.,:;\{\}\[\]\(\)\-\?\!]/)) {
span.push(char)
} else {
add(span, script)

span.length = 0

span.push(char)

script = type
}
}

if (span.length) {
add(span, script)
}

return spans
}
< /code>
Так что, возможно, я смогу расширить это или что -то в этом роде. Ищу совета по конкретному алгоритму или типу «нет ничего, что вы ничего не можете сделать» в этой ситуации ».

Подробнее здесь: https://stackoverflow.com/questions/796 ... javascript
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «CSS»