Hướng dẫn dùng set location trong PHP

❮ Tham chiếu chuỗi PHP

Nội dung chính

  • Định nghĩa và Cách sử dụng
  • Giá trị tham số
  • Chi tiết kỹ thuật
  • 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

Thí dụ

Đặt ngôn ngữ thành tiếng Anh Mỹ và sau đó quay lại mặc định một lần nữa:

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

Hàm setlocale [] thiết lập thông tin ngôn ngữ.

Thông tin ngôn ngữ là ngôn ngữ, tiền tệ, thời gian và các thông tin khác cụ thể cho một khu vực địa lý.

Lưu ý: Hàm setlocale [] chỉ thay đổi ngôn ngữ cho tập lệnh hiện tại.

Mẹo: Thông tin ngôn ngữ có thể được đặt thành mặc định của hệ thống với setlocale [LC_ALL, NULL]

Mẹo: Để nhận thông tin định dạng số, hãy xem hàm localeconv [] .

Cú pháp

setlocale[constant,location]

Giá trị tham số

ParameterDescription
constant Required. Specifies what locale information should be set.

Available constants:

  • LC_ALL - All of the below
  • LC_COLLATE -  Sort order
  • LC_CTYPE - Character classification and conversion [e.g. all characters should be lower or upper-case]
  • LC_MESSAGES - System message formatting
  • LC_MONETARY - Monetary/currency formatting
  • LC_NUMERIC - Numeric formatting
  • LC_TIME - Date and time formatting
location Required. Specifies what country/region to set the locale information to. Can be a string or an array. It is possible to pass multiple locations.

If the location is NULL or the empty string "", the location names will be set from the values of environment variables with the same names as the constants above, or from "LANG".

If the location is "0", the location setting is not affected, only the current setting is returned.

If the location is an array, setlocale[] will try each array element until it finds a valid language or region code. This is very useful if a region is known under different names on different systems.

Note: To view all available language codes, go to our Language code reference.

Chi tiết kỹ thuật

Giá trị trả lại:Phiên bản PHP:Changelog:
Trả về cài đặt ngôn ngữ hiện tại hoặc FALSE nếu không thành công. Giá trị trả về phụ thuộc vào hệ thống mà PHP đang chạy.
4+
PHP 5.3.0 - Nếu một chuỗi được truyền cho tham số hằng thay vì một trong các hằng LC_, hàm này sẽ ném ra một thông báo E_DREPRECATED.

❮ Tham chiếu chuỗi PHP

Cảm ơn Rico Neitzel về gợi ý. Thay vì cố gắng định dạng ngày php, hãy sử dụng strftime. Để xem 3 chữ cái đầu tiên của tên tháng bằng ngôn ngữ của bạn [Ví dụ: Dez thay vì Dec từ Dezembro chứ không phải December], hãy làm theo hướng dẫn cài đặt ngôn ngữ ở trên, sau đó:

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

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

lệnh date: date ['d M Y'] // không thể thay đổi từ tiếng Anh

setlocale[ LC_ALL, "pt_BR"]; // Portuguese, replace with your locale
echo strftime['%e %b %G'];
result: "4 Dez 2016"

/**
 * datelo funcion [date with locale]
 * Credits: Sergio Abreu 
 * //sites.sitesbr.net
 * NOTE: Depend on availability of the locale in server.
 *
 */

function datelo[ $str, $locale='en_US', $time=null]{

  if[ $time === null]{  $time = time[]; }

  if [ preg_match["/[DlFM]/", $str]]{

     setlocale[LC_ALL, $locale];

     $dict = array[ 'd'=>'%d', 'D'=>'%a', 'j'=>'%e', 'l'=>'%A', 'N'=>'%u', 'w'=>'%w', 'F'=>'%B', 
      'm'=>'%m', 'M'=>'%b', 'Y'=>'%G', 'g'=>'%l', 'G'=>'%k', 'h'=>'%I', 'H'=>'%H', 'i'=>'%M', 
      's'=>'%S', 'S'=>'', 'z'=>'%j', 'n'=>'%m', ' '=>' ', '-'=>'-', '/'=>'/', ':'=>':', ','=>','];

     $chars = preg_split["//", $str];
     $nstr = '';

     foreach [$chars as $c]{
        if [$c]{ //skip empties
          $nc = $dict[$c];
          if[ $c === 'n']{ // Fixes the extra zero
            $nc = preg_replace["/^0+/", '', strftime[ $nc]];   
          }
          elseif[ $c === 'z']{ // Fixes the extra zero and decrease 1
            $nc = preg_replace["/^0+/", '',  strftime[ $nc]]; // 023 turns 23
            $nc = intval[$nc] - 1;
          }          
          $nstr .= $nc;
        }
   }
   return strftime[ $nstr];     

  }else{ // not localized
    return date[ $str, $time];
 } 
}

-1 hữu ích 0 bình luận chia sẻ

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

Chủ Đề