13

私はコミュニティのウェブサイトを持っていて、ユーザーに書いてもらいたい

  • 方向LTR/text-align:left)の英語の投稿と
  • 方向RTL/text-alignのアラビア語の投稿:右。

たとえば、Google+とtwitterはそのようなPOSTソリューションを提供します。

rtlまたはltrのデータベースpostloadから読み取るときに、postに方向属性を自動的に追加したい!しかし、私は方法がわかりませんか?!

4

5 に答える 5

21

知っているすべての文字が RTL である関数を作成し、ロード時に確認する必要があります。RTL を表示するには、CSS 属性 、directiontext-alignおよびが必要unicode-bidiです。

デモ: jsフィドル

脚本

function checkRtl( character ) {
    var RTL = ['ا','ب','پ','ت','س','ج','چ','ح','خ','د','ذ','ر','ز','ژ','س','ش','ص','ض','ط','ظ','ع','غ','ف','ق','ک','گ','ل','م','ن','و','ه','ی'];
    return RTL.indexOf( character ) > -1;
};

var divs = document.getElementsByTagName( 'div' );

for ( var index = 0; index < divs.length; index++ ) {
    if( checkRtl( divs[index].textContent[0] ) ) {
        divs[index].className = 'rtl';
    } else {
        divs[index].className = 'ltr';
    };
};

CSS

.rtl {
    direction: rtl; 
    text-align: right;
    unicode-bidi: bidi-override;
}

.ltr {
    direction: ltr; 
    text-align: left;
    unicode-bidi: bidi-override;
}

HTML

<div>hello</div>
<div>ظ</div>
于 2012-08-03T00:41:43.080 に答える
3

dir="rtl"PHPで正しいプレゼンテーションを行うために、htmlタグで指定できます

CMS で、または CMS を使用していない場合は、コンテキストを DB に保存するときに、作成者が使用したテキストの方向で変数を保存するオプションを使用できます。

したがって、投稿を取得するときに、作成者がマークしたオプションも取得できます。

それ以外の場合は、仲間のプログラマーが提案したように、コンテンツを解析して、アラビア文字かラテン文字かを確認してください。

<body dir="<?php se_11787707_get_post_language(); ?>">

投稿の公開方法に関する詳細情報がなければ、これ以上詳しく説明することはできません. 投稿の保存方法と取得方法を教えてください

私はこの手法を使用してサイトを構築し、毎日アラビア語の rtl コンテンツを扱っています。それはとても簡単です:

dir="rtl" の実際の例

jsfiddle.net

参考:w3.org

于 2012-08-03T00:30:11.503 に答える
1

実はアラビア語のアルファベットはこれ

var RTL = ['ا','ء','ب','ت','ث','ج','ح','خ','د','ذ','ر','ز','س','ش','ص','ض','ط','ظ','ع','غ','ف','ق','ک','ل','م','ن','و','ه','ی'];

とペルシア語 (ペルシア語) のアルファベット文字はこれらです

var RTL = ['ا','ب','پ','ت','ث','ج','چ','ح','خ','د','ذ','ر','ز','ژ','س','ش','ص','ض','ط','ظ','ع','غ','ف','ق','ک','گ','ل','م','ن','و','ه','ی'];

1 番目と 2 番目の文字を確認すると、箇条書きなどで始まる場合があるので便利です。

for ( var index = 0; index < divs.length; index++ ) {
    if( checkRtl( divs[index].textContent[0] ) || checkRtl( divs[index].textContent[1] ) ) {
        divs[index].className = 'rtl';
    } else {
        divs[index].className = 'ltr';
    };
};
于 2017-03-09T12:50:14.480 に答える