>PHP 프레임워크 >ThinkPHP >ThinkPHP 6.0 다국어 최적화 확장 패키지 설치 및 사용

ThinkPHP 6.0 다국어 최적화 확장 패키지 설치 및 사용

藏色散人
藏色散人앞으로
2020-06-23 13:50:364118검색

다음은 thinkphp 프레임워크 튜토리얼 칼럼에 나온 ThinkPHP 6.0 다국어 최적화 확장 패키지에 대한 소개입니다. 필요한 친구들에게 도움이 되었으면 좋겠습니다!

ThinkPHP 6.0 다국어 최적화 확장 패키지 설치 및 사용

think-lang

ThinkPHP 6.0 다중 언어 최적화 확장 팩

https://github.com/TLingC/think-lang

Features

  1. 지원 -한스/ 보조 디렉토리는 해당 언어 페이지에 액세스합니다. mywebsite.com/zh-hans/ 的二级目录访问对应语言页面。
  2. 支持每种语言的语言包单独成目录,目录下可设有二级目录。

安装

composer require tlingc/think-lang

使用

基础配置

请参照 官方文档(https://www.kancloud.cn/manual/thinkphp6_0/1037637) 进行相关配置。同时注意如下与官方文档的不同点。

开启和加载语言包

中间件名称为:

'tlingc\lang\middleware\LoadLangPack',

由于多语言通过二级目录访问,使用Cookie保存语言 功能无效。

语言文件定义

自动加载的应用语言文件:

// 单应用模式app\lang\当前语言.php
app\lang\当前语言\*.php
app\lang\当前语言\*\*.php// 多应用模式app\应用\lang\当前语言.php
app\应用\lang\当前语言\*.php
app\应用\lang\当前语言\*\*.php

请注意此扩展包没有对语言包解析行为进行修改,语言文件的文件名不会影响语言分组,在多个文件中存在相同定义时会导致被覆盖。

路由设置

使用二级目录访问对应语言页面,必须使用路由定义,同时建议开启 强制路由 模式。

use think\facade\Config;Route::view('/', 'index/index');$langs = Config::get('lang.allow_lang_list');foreach($langs as $lang){
	Route::rule($lang . '/', 'index/index');
	Route::rule($lang . '/welcome', 'index/welcome');}

重写 url 助手函数

在应用公共文件 common.php 中加入。

use think\facade\Request;use think\facade\Lang;use think\facade\Route;use think\route\Url as UrlBuild;function url(string $url = '', array $vars = [], $suffix = true, $domain = false, $lang = true, $replace = false): UrlBuild{
    if (!$lang) {
		if($replace) {
			$explode = explode('/', Request::url(), 3);
			$url = $url . $explode[2];
		}
        return Route::buildUrl($url, $vars)->suffix($suffix)->domain($domain);
	}
	$lang = Lang::getLangSet();
	return Route::buildUrl('/' . $lang . $url, $vars)->suffix($suffix)->domain($domain);}

对比官方提供的助手函数,增加了 $lang$replace 参数。

普通跳转,生成url时会自动带上前方的语言名称。

url('/welcome')

如需仅替换url中的语言名称(如在语言选择器中使用),把 $replace 参数置为 true 即可。

TODO

  • 整合路由定义方法。
  • 整合重写url
  • 각 언어에 대한 언어 팩이 별도의 디렉토리로 분리되도록 지원하며 디렉토리 아래에 보조 디렉토리가 있을 수 있습니다.
설치 rrreee

기본 구성

사용관련 구성은 공식 문서(https://www.kancloud.cn/manual/thinkphp6_0/1037637)를 참고하세요. 공식 문서와 다음과 같은 차이점도 참고하세요. 🎜🎜

언어 팩 열기 및 로드

🎜미들웨어 이름은 🎜rrreee🎜보조 디렉터리를 통해 여러 언어에 액세스하므로 쿠키를 사용하여 언어 저장 기능은 유효하지 않은. 🎜

언어 파일 정의

🎜자동 로드된 응용 프로그램 언어 파일: 🎜rrreee🎜이 확장 팩은 언어 팩 구문 분석 동작을 수정하지 않습니다. 언어 파일의 파일 이름은 언어 그룹화에 영향을 미치지 않습니다. . 파일에 동일한 정의가 있으면 덮어쓰게 됩니다. 🎜

라우팅 설정

🎜 보조 디렉터리를 사용하여 해당 언어 페이지에 액세스하려면 경로 정의를 사용해야 하며, 강제 라우팅 모드를 켜는 것이 좋습니다. 🎜rrreee

url 도우미 함수를 다시 작성

🎜애플리케이션 공개 파일 common.php에 추가하세요. 🎜rrreee🎜공식 도우미 기능과 비교하여 $lang$replace 매개변수가 추가되었습니다. 🎜🎜일반 점프, URL 생성 시 앞의 언어 이름이 자동으로 포함됩니다. 🎜rrreee🎜URL에서 언어 이름만 바꿔야 하는 경우(예: 언어 선택기에서 사용되는 경우) $replace 매개변수를 true로 설정하세요. 🎜🎜TODO🎜
  • 경로 정의 방법을 통합합니다. 🎜
  • url 매개변수 통합 재작성. 🎜🎜🎜🎜🎜🎜🎜🎜

위 내용은 ThinkPHP 6.0 다국어 최적화 확장 패키지 설치 및 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제