Hướng dẫn dùng php abbreviation trong PHP

  • Trang chủ
  • Tham khảo
  • Tag html
  • <abbr>

Định nghĩa và sử dụng

  • Tag <abbr> mô tả một cụm từ viết tắt.
  • Khi tag này được dùng, ta đã cung cấp những thông tin hữu ích cho trình duyệt, hệ thống dịch thuật, và công cụ tìm kiếm.

Sự khác nhau giữa HTML và XHTML

HTML4.01XHTML1.0XHTML1.1
Không có sự khác nhau

Cấu trúc

<abbr title=""></abbr>

title="" là thuộc tính trong <abbr>, nhằm giải thích nghĩa cho từ viết tắt.

Ví dụ

Html viết:

<p><abbr title="World Health Organization">WHO</abbr> là một Tổ chức Y tế Thế giới.</p>

Hiển thị trình duyệt:

WHO là một Tổ chức Y tế Thế giới.

Trong đoạn trên, ta đã biết "WHO" là viết tắt của "World Health Organization".

Trình duyệt hỗ trợ

Tag <abbr> được hỗ trợ trong đa số các trình duyệt, ngoại trừ trình duyệt IE6 trở xuống.

Thuộc tính

Cách sử dụng: <abbr thuoctinh="giatri"></abbr>

Thuộc tính tổng quát (xem thêm)

Thuộc tínhGiá trịVí dụMô tả
class Tên class class="section" Tên class
dir rtl
ltr
dir="rtl" Xác định hướng văn bản cho các nội dung trong một thành phần.
id Tên id id="layout" Xác định tên id cho thành phần, mỗi thành phần chỉ có một id duy nhất (hoặc một id chỉ có trong một thành phần) trong một văn bản HTML
lang Mã ngôn ngữ lang="vi" Xác định mã ngôn ngữ cho nội dung trong một thành phần.
style Kiểu định dạng style="color:red" Xác định một định dạng cho một thành phần.
title Text title="Đây là title" Xác định thêm thông tin cho thành phần.
xml:lang Mã ngôn ngữ lang="vi" Xác định mã ngôn ngữ cho nội dung trong một thành phần, trong văn bản XHTML.

Thuộc tính sự kiện

Không được hỗ trợ trong DTD Strict

Thuộc tínhGiá trịVí dụMô tả
onclick Code script onclick="code" Script chạy khi click chuột.
ondblclick Code script ondblclick="code" Script chạy khi double click chuột.
onmousedown Code script onmousedown="code" Script chạy khi button chuột được nhấn.
onmousemove Code script onmousemove="code" Script chạy khi di chuyển con trỏ chuột.
onmouseout Code script onmouseout="code" Script chạy khi di chuyển con trỏ chuột ra khỏi thành phần.
onmouseover Code script onmouseover="code" Script chạy khi di chuyển con trỏ chuột di chuyển trên thành phần.
onmouseup Code script onmouseup="code" Script chạy khi button chuột được thả ra.
onkeydown Code script onkeydown="code" Script chạy khi nút trên bàn phím được nhấn.
onkeypress Code script onkeypress="code" Script chạy khi nút trên bàn phím được nhấn và thả ra.
onkeyup Code script onkeyup="code" Script chạy khi nút trên bàn phím được thả ra.

  • Trang chủ
  • Tham khảo
  • Tag html
  • <abbr>

Định nghĩa và sử dụng

  • Tag <abbr> mô tả một cụm từ viết tắt.
  • Khi tag này được dùng, ta đã cung cấp những thông tin hữu ích cho trình duyệt, hệ thống dịch thuật, và công cụ tìm kiếm.

Sự khác nhau giữa HTML và XHTML

HTML4.01XHTML1.0XHTML1.1
Không có sự khác nhau

Cấu trúc

<abbr title=""></abbr>

Nội dung chính

  • Định nghĩa và sử dụng
  • Cấu trúc
  • Trình duyệt hỗ trợ
  • Thuộc tính
  • 1. Cách thiết lập.
  • 1.1 Sử dụng file php
  • 1.2 Sử dụng file json
  • 2. Website thay đổi ngôn ngữ theo người dùng
  • 2.1 Sử dụng session và middleware
  • 2.2 Sử dụng subdomain
  • 2.3 Sử dụng trên url

title="" là thuộc tính trong <abbr>, nhằm giải thích nghĩa cho từ viết tắt.

Ví dụ

Html viết:

<p><abbr title="World Health Organization">WHO</abbr> là một Tổ chức Y tế Thế giới.</p>

Hiển thị trình duyệt:

WHO là một Tổ chức Y tế Thế giới.

Trong đoạn trên, ta đã biết "WHO" là viết tắt của "World Health Organization".

Trình duyệt hỗ trợ

Tag <abbr> được hỗ trợ trong đa số các trình duyệt, ngoại trừ trình duyệt IE6 trở xuống.

Thuộc tính

Cách sử dụng: <abbr thuoctinh="giatri"></abbr>

Thuộc tính tổng quát (xem thêm)

Thuộc tínhGiá trịVí dụMô tả
class Tên class class="section" Tên class
dir rtl
ltr
dir="rtl" Xác định hướng văn bản cho các nội dung trong một thành phần.
id Tên id id="layout" Xác định tên id cho thành phần, mỗi thành phần chỉ có một id duy nhất (hoặc một id chỉ có trong một thành phần) trong một văn bản HTML
lang Mã ngôn ngữ lang="vi" Xác định mã ngôn ngữ cho nội dung trong một thành phần.
style Kiểu định dạng style="color:red" Xác định một định dạng cho một thành phần.
title Text title="Đây là title" Xác định thêm thông tin cho thành phần.
xml:lang Mã ngôn ngữ lang="vi" Xác định mã ngôn ngữ cho nội dung trong một thành phần, trong văn bản XHTML.

Thuộc tính sự kiện

Không được hỗ trợ trong DTD Strict

Thuộc tínhGiá trịVí dụMô tả
onclick Code script onclick="code" Script chạy khi click chuột.
ondblclick Code script ondblclick="code" Script chạy khi double click chuột.
onmousedown Code script onmousedown="code" Script chạy khi button chuột được nhấn.
onmousemove Code script onmousemove="code" Script chạy khi di chuyển con trỏ chuột.
onmouseout Code script onmouseout="code" Script chạy khi di chuyển con trỏ chuột ra khỏi thành phần.
onmouseover Code script onmouseover="code" Script chạy khi di chuyển con trỏ chuột di chuyển trên thành phần.
onmouseup Code script onmouseup="code" Script chạy khi button chuột được thả ra.
onkeydown Code script onkeydown="code" Script chạy khi nút trên bàn phím được nhấn.
onkeypress Code script onkeypress="code" Script chạy khi nút trên bàn phím được nhấn và thả ra.
onkeyup Code script onkeyup="code" Script chạy khi nút trên bàn phím được thả ra.

Các website ngày nay muốn tiếp cận với nhiều loại khách hàng thì đều cần phải sử dụng đa ngôn ngữ (i18n). Với những ai sử dụng Laravel cho việc phát triển website thì vấn đề i18n được hỗ trợ và xử lý rất đơn giản. Bài viết này mình sẽ giới thiệu đến các bạn một số cách để xử lý i18n trong Laravel.

Nội dung chính

  • 1. Cách thiết lập.
  • 1.1 Sử dụng file php
  • 1.2 Sử dụng file json
  • 2. Website thay đổi ngôn ngữ theo người dùng
  • 2.1 Sử dụng session và middleware
  • 2.2 Sử dụng subdomain
  • 2.3 Sử dụng trên url

Nội dung chính

  • 1. Cách thiết lập.
  • 1.1 Sử dụng file php
  • 1.2 Sử dụng file json
  • 2. Website thay đổi ngôn ngữ theo người dùng
  • 2.1 Sử dụng session và middleware
  • 2.2 Sử dụng subdomain
  • 2.3 Sử dụng trên url

1. Cách thiết lập.

1.1 Sử dụng file php

  • Trong thư mục /resources/lang/ ta thêm các folder chứa các ngôn ngữ mà muốn chuyển đổi, như ví dụ dưới đây mình sẽ tạo 2 folder là en và vi để chứa ngôn ngữ của Tiếng Anh và Tiếng Việt.
/resources /lang /en messages.php /vi messages.php

Trong các folder ta tạo các file php và đặt tên sao cho phù hợp, như trên giả sử mình tạo file là message.php, trong cả 2 folder ban đều tạo các file giống nhau và nội dung trong các file mình tạo như sau. /resources/lang/en/message.php

<?php return [ 'welcome' => 'Welcome to Website!', ];

/resources/lang/vi/message.php

<?php return [ 'welcome' => 'Chào mừng bạn đến với Website!', ];

Để sử dụng ta có hàm trans(), và trong file view blade bạn sẽ gọi {{ trans('<file_name>.<keywork>') }}, cụ thể là {{ trans('message.welcome') }}, khi đó sẽ hiển thị ra người dùng là Welcome to Website! hoặc Chào mừng bạn đến với Website!' tùy theo cấu hình hiện tại. Để thay đổi cấu hình ngôn ngữ hiển thị mình sẽ hướng dẫn ở phần duới của bài viết này.

  • Đôi khi ta sẽ muốn truyền tham số lấy từ database vào, để truyền tham số thì ta sẽ sử dụng toán tử : trước tên tham số, ta sẽ làm như thế này: /resources/lang/en/message.php
<?php return [ 'welcome' => 'Welcome to Website!', 'hello' => 'Hello, :name', ];

Và để sử dụng thì ta làm như thế này {{ trans('messages.hello', ['name' => 'My Name']) }}, khi đó sẽ người dùng sẽ thấy được Hello, My Name.

  • Ta có thể tạo ra các câu số nhiều bằng cách sử dụng toán tử | như sau. /resources/lang/en/message.php
<?php return [ 'welcome' => 'Welcome to Website!', 'hello' => 'Hello, :name', 'apple' => 'There is one apple|There are many apples', ];

Khi gọi thì ta gọi hàm trans_choice('messages.apples', 10) với số lượng là 1 thì trả về There is one apple, còn với số lượng lớn hơn 1 thì trả về There are many apples. Hoặc ta có thể tùy chỉnh số lượng cho phù hợp với cách dưới đây: /resources/lang/en/message.php

<?php return [ 'welcome' => 'Welcome to Website!', 'hello' => 'Hello, :name', 'apple' => 'There is one apple|There are many apples', 'apples' => '{0} There are none|[1,19] There are some|[20,Inf] There are many', ];

1.2 Sử dụng file json

Khi ứng dụng của ta lớn, phải sử dụng rất nhiều đến đa ngôn ngữ, thì việc tạo các file với các keyword ngắn và viết liền nhiều khi có thể gây nhầm lẫn hoặc khó nhớ. Và từ phiên bản bản 5.4 Laravel bổ sung thêm một cách để làm ứng dụng đa ngôn ngữ. Mình nghĩ không hẳn tự nhiên những người phát triển lại bổ sung thêm cách này, thật sự nó có thể tạo cho bạn sự thoải mái khi sử dụng. Như cách ở trên thì ta cần tạo các file và trong mỗi file phải tạo các keyword ngắn và viết liền, khi ứng dụng nhiều dần các keyword đọc rất khó hiểu và khi tạo keyword ta lại phải đau đầu nghĩ xem tạo keyword như thế nào cho phù hợp. Với cách này thì ta có thể dùng cả đoạn văn làm keyword, văn bản đầy đủ có thể làm ứng dụng của bạn dễ đọc, chứ không cần phải vào file tìm xem keyword kia được viết thay thế cho từ nào. Mình sẽ hướng dẫn làm với cách này như sau: Ta tạo file json tại vị trí như sau:

/resources /lang en.json vi.json

Lưu ý một chút là cách dùng file php thì ta cần để trong folder, còn với cách này thì ta sẽ để file .json ngay tại folder /resources/lang như trên. /resources/lang/en.json

{ 'Welcome to Website!' => 'Welcome to Website!', 'Welcome to Website, :name' => 'Welcome to Website, :name' }

Cuối file ko có dấu , để đúng với cú pháp của file json. Cách dùng thì ta sử dụng hàm __(), đây là 2 dấu gạch dưới, mình đã từng làm với Magento và cũng có cú pháp tương tự khi i18n. Ví dụ:

{{ __('Welcome to Website!') }} {{ __('Welcome to Website, :name', ['name' => 'My Name']) }}

Mình cố tình để tham số vào phần keyword để khi đọc thì ta có thể biết ngay cần bổ sung gì, hoặc nếu không thích thì bạn có thể bỏ tham số bên keyword đi.

2. Website thay đổi ngôn ngữ theo người dùng

Bên trên mình đã giới thiệu 2 cách để sử dụng i18n trong Laravel, và đây mình sẽ tiếp tục hướng dẫn một số cách để website thay đổi ngôn ngữ theo ý người dùng. Trước tiên thì ta nên cấu hình ngôn ngữ mặc định của website trong file config/app.php

'locale' => 'en', //ngôn ngữ mặc định 'fallback_locale' => 'en', // được sử dụng khi không tìm thấy config locale.

Ta cấu hình các thông số trên cho phù hợp và với cách 1 thì các bạn để tên folder, còn với cách 2 thì các ta để tên file json.

2.1 Sử dụng session và middleware

Session để lưu ngôn ngữ hiện tại khách đang chọn, middleware để tiền xử lý cho website của bạn thay đổi ngôn ngữ theo lựa chọn của người dùng. Tạo 1 route xử lý thay đổi ngôn ngữ.

Route::get('change-language/{language}', '[email protected]')->name('user.change-language');

Đặt 2 link sau vào vị trí phù hợp trên website

<a href="{!! route('user.change-language', ['en']) !!}">English</a> <a href="{!! route('user.change-language', ['vi']) !!}">Vietnam</a>

Trong HomeControler tại method changeLanguage :

public function changeLanguage($language) { \Session::put('website_language', $language); return redirect()->back(); }

Tiếp theo ta sẽ tạo middware để xử lý cho ứng dụng theo ngôn ngữ người dùng lựa chọn được lưu trong Session. Chạy lệnh sau trong ứng dụng Laravel php artisan make:middleware Locale. Một file đã được sinh ra tại app/Http/Middleware/Locale.php, vào file này và chỉnh sửa như sau tại method handle

public function handle($request, Closure $next) { $language = \Session::get('website_language', config('app.locale')); // Lấy dữ liệu lưu trong Session, không có thì trả về default lấy trong config config(['app.locale' => $language]); // Chuyển ứng dụng sang ngôn ngữ được chọn return $next($request); }

Và để sử dụng middleware thì ta cần khai báo trong app/Http/Kernel.php

protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'locale' => \App\Http\Middleware\Locale::class, //Thêm vào dòng này ];

Và bước cuối cùng để toàn bộ route được xử lý qua middleware này, và mình làm như sau tại routes/web.php

Route::group(['middleware' => 'locale'], function() { Route::get('change-language/{language}', '[email protected]') ->name('user.change-language'); });

Thế là xong rồi đó, bạn nên tùy chỉnh một số chỗ cho phù hợp với ứng dụng của bạn.

2.2 Sử dụng subdomain

Với cách này thì ta cần tạo subdomain cho từng ngôn ngữ sử dụng, giả sử mình có vi.i18n.dev và en.i18n.dev, ta sẽ tạo route như sau

Route::group(['domain' => '{language}.i18n.dev'], function ($language) { config(['app.locale' => $language]); //đặt dòng này ở đầu //Toàn bộ các route khác đặt ở đây. });

Và chỉ đơn giản cho người dùng truy cập vào trang ứng với ngôn ngữ họ muốn sử dụng.

2.3 Sử dụng trên url

Kiểu này cũng khá giống kiểu subdomain, bạn sẽ thêm ngôn ngữ vào trước toàn bộ các url trong ứng dụng.

Route::group(['prefix' => '{language}'], function ($language) { config(['app.locale' => $language]); //đặt dòng này ở đầu //Toàn bộ các route khác đặt ở đây. });

Với cách này ta phải truyền thêm ngôn ngữ vào toàn bộ các url.

Kết

Thế là hết rồi, hy vọng bạn có thể áp dụng được bài viết này vào ứng dụng của bạn.