Hướng dẫn dùng locale list trong 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

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

Bài Viết Liên Quan

Chủ Đề