[jQ plugin] replaceText - Thay thế từ một cách đơn giản

  Bài viết hay nhất1
jQ plugin: replaceText Ver 0.3
Tác giả: Zzbaivong


Chức năng: replaceText giúp bạn thay thế một hoặc nhiều từ (cụm từ) một cách đơn giản và trả lại nội dung đã cập nhật.


Cài đặt: Xem thông tin và cập nhật mới nhất tại: https://github.com/baivong/replacetext

Code:
<!-- Thư viện jQuery 1.4.3+ -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<!-- replaceText plugin -->
<script type="text/javascript" src="./source/replacetext.js"></script>


Cách dùng: Gọi hàm replaceText tại phần tử chứa từ (cụm từ) cần chuyển.

Code:
$(selector).replaceText({
   key: value
});
Trong đó:
key: Từ (cụm từ) cần thay thế.
value: nội dung sẽ thay thế, có thể sử dụng HTML.
Thêm các cặp key - value tương ứng số từ (cụm từ) cần chuyển, cách nhau bằng dấu phẩy (,) trừ cặp cuối cùng. Ví dụ:
Code:
$(selector).replaceText({
   "devs.forumvi.com": "devs.forumvi.com",
   "admin": "Zzbaivong"
});




Ứng dụng trong forumotion

ACP >> Modules >> HTML & JAVASCRIPT >> Javascript Codes >> Create a new javascript:
Title: replaceText - devs.forumvi.com
Placement: In all the pages
Javascript Code * :
Code:
/* jQuery plugin replaceText v0.3 <http://www.devs.cf/> Copyright (c) 2014+ zzbaivong */
(function ($) {
   $.fn.replaceText = function (a) {
      var c = $.extend({}, a);
      return this.each(function (a, f) {
         $(this).html(function () {
            var b = this.innerHTML;
            $.each(Object.keys(c), function (a, d) {
               var e = RegExp(d.replace(/(\"|\'|\(|\)|\[|\]|\.|\*|\!|\?|\$|\||\+|\^|\/|\,|\;)/g, "\\$1"), "gi");
               b = b.replace(e, c[d])
            });
            return b
         })
      })
   };
}(jQuery));

[*]: Để sử dụng những ứng dụng dưới đây, bạn thêm code vào cuối file javascript replaceText đã tạo ở trên.

1 - Việt hóa trang cá nhân:
Code:
$(function () {
   if (_userdata["user_lang"] == "vi" && /\/u\d+/.test(location.pathname)) {
      $("#tabs a > span").replaceText({
         "Visitor messages": "Tường nhà",
         "Statistics": "Hoạt động",
         "Friends": "Bạn bè",
         "Contact": "Liên hệ"
      });
      $("#profile-advanced-details li > label").replaceText({
         "Points": "Tài sản",
         "Average per post": "Trung bình mỗi bài",
         "Reputation": "Uy tín",
         "Positive votes received": "Số phiếu thuận",
         "Negative votes received": "Số phiếu chống",
         "Thanks received": "Được cảm ơn",
         "Positive votes given": "Bỏ phiếu thuận",
         "Negative votes given ": "Bỏ phiếu chống",
         "Thanks given": "Đã cảm ơn",
         "Latest topic": "Lần tạo chủ đề gần đây",
         "Find all topics where": "Tìm tất cả chủ đề",
         "has posted in": "đã thảo luận",
         "Latest post": "Lần đăng bài gần đây",
         "Find all messages posted by": "Tìm tất cả bài viết đăng bởi",
         "Visitor messages number": "Số tin trên tường",
         "Last visitor message": "Lần đăng tin gần đây",
         "visitor messages": "tường",
         "Send a new message on": "Gửi một tin lên tường của",
         " profile": "",
         "Number of friends": "Số bạn bè",
         "Private messages": "Số tin nhắn riêng",
         "Last visit": "Lần truy cập gần đây"
      });
      $("#profile-advanced-details legend").replaceText({
         "Points": "Tài sản",
         "Reputation": "Uy tín",
         "Visitor messages": "Tường nhà"
      });
      $("#profile-advanced-details li").replaceText({
         "</label> Today at": "</label> Hôm nay",
         "</label> Yesterday at": "</label> Hôm qua",
         "</label> Never": "</label> Chưa có"
      });
      $("#profile-advanced-details .message-header").replaceText({
         'title="Message"> by <': 'title="Message"><'
      });
      $("#profile-advanced-details .message-text").replaceText({
         '</a><br>Rank: ': '</a><br>Cấp bậc: '
      });
      $("#profile-advanced-details .message-date").replaceText({
         "Today at": "Hôm nay",
         "Yesterday at": "Hôm qua"
      });
      $("#profile-advanced-details .subtitle").replaceText({
         "Visitor messages": "Tường nhà",
         "Messages from": "đến",
         " on ": " trong ",
         " to ": " đến ",
         "Statistics": "Thống kê hoạt động",
         "friends": "bạn bè",
         "Contact user": "Liên hệ với"
      });
      $("#profile-advanced-details .main-content:not(fieldset)").replaceText({
         "has no friends yet": "chưa có bạn bè",
         "No message.": "Chưa đăng tin"
      });
   }
});

2 - Việt hóa tab trong UCP:
Code:
$(function () {
   if ((GetParam("search_id") == "draftsearch" || GetParam("search_id") == "favouritesearch" || GetParam("search_id") == "watchsearch" || GetParam("mode") == "editprofile") && _userdata["user_lang"] == "vi") {
      $("#tabs a > span").replaceText({
         "Thông báo": "Thông tin",
         "Giao diện": "Tùy chọn",
         "Friends and foes": "Bạn và thù",
         "Notifications": "Thông báo",
         "Topic(s) being watched": "Đang theo dõi",
         "Favourites": "Ưa thích",
         "Drafts": "Nháp",
         "Facebook invite": "Mời bạn facebook",
         "Attachments": "Tệp đính kèm"
      });
   }
});

3 - Thay thế tên miền cũ trong bài viết:
Code:
$(function () {
   $(".postbody").replaceText({
      "devs.forumvi.com": "devs.cf"
   });
});
Lưu ý: Sử dụng tên miền của bạn.

4 - Đánh dấu các từ khóa quan trọng trong bài viết:
Code:
$(function () {
   $(".postbody").replaceText({
      "CSS": "<a href='http://vi.wikipedia.org/wiki/CSS' title='CSS là từ viết tắt của từ viết tắt của Cascading Style Sheet, được dùng để miêu tả cách trình bày các tài liệu viết bằng ngôn ngữ HTML và XHTML.'>CSS</a>",
      "Zzbaivong": "<strong data-tooltip='Người sáng lập devs forumvi'>Zzbaivong</strong>"
   });
});
Lưu ý: Trên đây chỉ là ví dụ mẫu, hãy sử dụng những từ khóa của bạn.


Zzbaivong
  Bài viết hay nhất2
thư viện jq 1.10.2 thì chạy tốt không huynh
  Bài viết hay nhất3
cho thư viện này vào đâu Baivong?
Code:
<!-- Thư viện jQuery 1.4.3+ -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<!-- replaceText plugin -->
<script type="text/javascript" src="./source/replacetext.js"></script>
  Bài viết hay nhất4
@bluehnvn wrote:cho thư viện này vào đâu Baivong?
Code:
<!-- Thư viện jQuery 1.4.3+ -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<!-- replaceText plugin -->
<script type="text/javascript" src="./source/replacetext.js"></script>

Đoạn mã đó là sử dụng jQuery từ 1.4.3 trở lên và jQ Source của replaceText.
Nó là hướng dẫn sử dụng cho các Website có Hosting chứ không phải cho forumotion.

Forumotion xem từ đoạn <Ứng dụng trong forumotion> trở xuống.

-------- Edit:
Code khá hay, tích hợp khá tốt! Vote + :3
Plugin này coi bộ hay :v
Mong có nhiều pl hay hơn nữa :3
(Kẻ có tham vọng :v)
  Bài viết hay nhất5
vậy bạn cho hỏi có cách nào việt hóa được toàn bộ từ tiếng anh thành tiếng việt trong rum dc ko


và ở cái bước 3
thay thế tên miền cũ = tên miền mới tức là những bài viết của mình từ trước khi viết bài có tên miền cũ h muốn thay đổi là chỉ cần dùng js kia là thay đổi hết đúng ko :D
  Bài viết hay nhất6
@toiyeuem wrote:Vậy bạn cho hỏi có cách nào việt hóa được toàn bộ từ tiếng anh thành tiếng việt trong rum dc ko?

Và ở cái bước 3, thay thế tên miền cũ = tên miền mới tức là những bài viết của mình từ trước khi viết bài có tên miền cũ h muốn thay đổi là chỉ cần dùng js kia là thay đổi hết đúng ko? :D
Dùng replaceText không thể Việt hóa 100% vì có một số mục không thể sửa Temp hoặc có nội dung trùng lặp.
Chỉ nên Việt hóa ở những trang thành viên thường truy cập vì sử dụng quá nhiều javascript sẽ làm chậm diễn đàn.

Cách thay thế tên miền cũ sẽ đổi tất cả liên kết ở những bài trước.
  Bài viết hay nhất7
*** Xin lỗi vì đã đào bài viết này lên (ờ mà đào thì nó cũng sẽ lại tụt xuống -_- )

Tình hình là:
@Zzbaivong wrote:[*]: Để sử dụng những ứng dụng dưới đây, bạn thêm code vào cuối file javascript replaceText đã tạo ở trên.

Méo tạo mục Javascript chứ code tổng rồi, méo thêm cục replaceText vào cuối mục đó. Và kết quả là nó không thay Admin thành Méo mà nó múa may quay cuồng không cho tải index, xóa trắng trang bài viết và nhân cái chữ Action làm nhiều lần -_-
Đến khi méo tạo thành hai mục javascript riêng biệt, một mục chứa code tổng với một mục chứa mấy cái replaceText thì nó mới chịu
Thế là sao thế mọi người :O

Bổ sung thêm:
Giờ thì méo để $("*"), $("div") nó cũng bị trắng trang load hoài không xong :O Phải đề có class và id hay mấy cái nhỏ như $("a") thì nó chịu
Khi bị trắng trang, méo console ra được đoạn này
Code:
content: Stop here, cause a second Tampermonkey instance was detected!
This can be caused by using "document.write" at Userscripts.
See https://code.google.com/p/chromium/issues/detail?id=253388 for more information
  Bài viết hay nhất8
Nếu phải tạo file riêng cho plugin và code thì có thể là có js all pages bị lỗi hoặc chưa đóng.
Plugin này là replace nên việc của nó là thay thế, nếu méo đặt selector không chặt chẽ thì nó sẽ chạy không đúng điều méo cần.
Trường hợp méo đặt selector là * và div thì nó có quá nhiều thành phần lồng vào nhau, trong div có div, div ở ngoài replace xong chạy đến div ở trong thì tìm không thấy, ở trong lại có div khác nữa...
Cái đoạn méo console đấy là lỗi của extension Tampermonkey.
  Bài viết hay nhất9
Nhưng nếu méo muốn đổi tên thành viên toàn forum mà vẫn giữ nguyên nick đăng nhập sẽ khá là mệt :O
** Cái đoạn méo console đấy là lỗi của extension Tampermonkey. : Méo tắt Tampermonkey rồi mà ta :O
  Bài viết hay nhất10
Không đọc nó ghi gì sao còn hỏi O.o

Khi replaceText thì phần bị replace sẽ bị thay thế thành một đối tượng mới, nên các js áp dụng cho đối tượng cũ sẽ có thể bị lỗi. :fb88:

Chỉ nên áp dụng khi thật sự cần. Đổi tên nick chỉ cần replace <strong> là được rồi, mà sao ko đổi tên bình thường ấy, lạm dụng js không đúng chỗ. -_-
  Bài viết hay nhất11
Mình thay cho .maintitle (Tên bài viết) cũng bị tình trạng "Action"
  Bài viết hay nhất12
4 - Đánh dấu các từ khóa quan trọng trong bài viết:

sử dụng code này thì toàn bộ từ khóa sẽ thay đổi. có cách nào để chỉ thay đổi từ khóa đầu tiên xuất hiện không @baivong
  Bài viết hay nhất13

@the_dav wrote:4 - Đánh dấu các từ khóa quan trọng trong bài viết:

sử dụng code này thì toàn bộ từ khóa sẽ thay đổi. có cách nào để chỉ thay đổi từ khóa đầu tiên xuất hiện không @baivong
Trong mã nguồn của plugin, tìm "gi" và xóa chữ g trong đó.
You cannot reply to topics in this forum