-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ユーザー名に日本語を許容する #4
Comments
正規表現のパターンについて、検討してみる。 オリジナルはこんな感じ。
パターン修飾子がよく分からなかったので、確認。 PHP: 正規表現パターンに使用可能な修飾子 - Manual
このパターンだと、要らないんじゃないかなぁ…。
これも要らない気がする。パターンにドットメタ文字 無いし。 あとよく分からないのが、「(...)?」でサブパターン作って 0 または 1 回マッチの指定をしているように見える。 以上を踏まえて、日本語対応のパターンの叩き台を作ってみる。
たしか「\w」で半角英数字とアンダースコアはカバーできるはず。
という感じで、どうでしょうか。 |
テーブル定義を確認してみたら、ユーザー名の列 (gdn_user.Name) は |
見てるだけですんません。ユーザー名に日本語使えるといいですねー |
うわっ、閉じちゃった。すんません。 orz |
大変遅くなりましたが、ユーザー名に日本語が使えることを確認しました。 |
現状
オリジナルでは、ユーザー名に使用できるのは以下の文字種だけに限られている。
a-zA-Z
0-9
_
また文字数には 3~20 文字の制限がある。
以下に、現状でのユーザー名の例を挙げる。
有効
JohnSmith
john_smith
js2011
無効
山田太郎
やまだたろう
ヤマダタロウ
J
拡張
ユーザー名に日本語も許容するように拡張する。
具体的には、現状の有効文字種に加えて、以下の文字種を追加する。
一-龠
ぁ-ん
ァ-ヶ
0-9a-zA-Z
・ー=_-
-
また、文字数は 1~20 文字の制限に(下限を)拡張する。
上限は、テーブルの列定義と関連しているので、触れない。
以下に、変更後 新たに有効になるユーザー名と、依然として無効のユーザー名の例を挙げる。
有効
山田太郎
やまだたろう
ヤマダタロウ
J
YU-TANG
月
ジャン=リュック・ピカード
ジョーディ・ラ=フォージ
無効
山田 太郎
(スペース文字は無効)モーニング娘。
(句点は無効)藤岡弘、
(読点は無効)実装方法
当初は日本語ロケール パック(言語ファイル)内で ValidateUsername() 関数をオーバーライドする予定だったが、実際に試すと ValidateUsername() 関数はどの言語定義ファイルよりも先に読み込まれてしまうらしく、オーバーライドできなかった。
そこで、
conf/bootstrap.before.php
内でのオーバーライドに切り替える。参考:
その他注意事項
エラーメッセージ
ユーザー名が無効時のエラーメッセージも併せて変更する必要がある。
↓
文字列長判定
Ver.2.0.17.9 時点の文字列長判定は、ASCII 以外の文字を正確に判定できない(日本語が 2~3 文字扱いになる)。
このバグは、コアの次リリースで修正される予定。
@リプライ(@mentions)
コメント中に
@UserName
と記述することによって、プロフィールへ自動リンクが張られる機能。この機能は ASCII ユーザー名にしか対応していないため、ユーザー名の文字種を拡張した場合は、こちらも対応させる必要がある。
別件の課題 #5 として追加する。
The text was updated successfully, but these errors were encountered: