2025年6月8日 星期日 乙巳(蛇)年 三月十二 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > PHP

PHP 多国语框架

时间:12-14来源:作者:点击数:22
CDSY,CDSY.XYZ

这是一个通过框架来实现的多国语程序,以多种不同的方式实现,框架设计不仅让你网站搭建起来很简单、很快、也很高效,足以满足你。项目地址:https://lang-php.com

快速指南

本快速指南将指导您如何使用并创建,从而达到掌握及精通教程。

示例

包括:提供了不同的,以便您选择并使用。

示例 1:用户自定义选择 & 目录式

首次运行后转向 'choose-country-region' 目录,选择后转向匹配的语言目录,带记忆功能。

源码:latest.zip -> /example/01-directory

示例 2:内部加载文件 & 嵌入式

自动搜索匹配目录下的文件,没有搜索到则选择默认调用文件。

源码:latest.zip -> /example/02-embed

1. 在 themes 下创建匹配的语言文件。例如:

  • en-us.php
  • Embedded en-us.php files;
  • zh-cn.php
  • 嵌入 zh-cn.php 文件;

请参阅 latest.zip -> /example/02-embed/themes/homepage 目录下的文件。

2. 创建新页面!

使用模板 02-embed/templets.php 文件,用户自行更改为新文件名(示例为:newpage.php)。
  • $lp = new lp();
  • $lp->masterCatalogue = "themes/{newpage}";
  • $lp->run();
创建目录及匹配的语言
  • 进入 02-embed/themes/newpage,创建目录必须与 {newpage} 变量名一致。
目录结构
  • 02-embed/newpage.php
  • 02-embed/themes/newpage

示例 3:读取配置文件 & 加载式

自动搜索匹配的语言文件并加载后调用,包括:字串符、参数等。

源码:latest.zip -> /example/03-load

1. 创建新页面!
使用模板 03-load/templets.php 文件,用户自行更改为新文件名(示例为:newpage.php)。
  • $lp = new lp();
  • $lp->masterCatalogue = 'languages/{newpage}';
  • $lp->userThemes = '{newpage}';
  • $lp->run();

请参阅 latest.zip -> /example/03-load/template.php

创建主题皮肤
  • 进入 03-load/themes 并创建 {newpage}.php
创建可匹配的语言模板。例如:
  • en-us.php
  • $lpvar = array (
  • 'lang_available' => 'Available Languages:',
  • );
  • zh-cn.php
  • $lpvar = array (
  • 'lang_available' => '可用语言:',
  • );

请参阅 latest.zip -> /example/03-load/languages/ 目录下的 en-us.php & zh-cn.php 文件。

目录结构
  • 03-load/{newpage}.php
  • 03-load/languages/{newpage}
  • 03-load/themes/{newpage}
2. Html 与 PHP 语言混排,例如:
  • <?php echo $lpvar['lang_available']; ?>

示例 4:保存设置 & 配置式

该示例与动态读写 Cookies 不同;将配置保存到 xml 或 cfg,通过读取来选择可用的首选语言包,不接受浏览器默认语言来优先选择。

源码:latest.zip -> /example/04-settings

1. 创建一个可用的全局参数。例如:
  • XML
  • <?xml version="1.0" encoding="UTF-8" ?>
  • <setting>
  • <languages>
  • en-us
  • </languages>
  • </setting>
  • 请参阅 latest.zip -> /example/04-settings/lp.xml 文件。
  • lp.cfg
  • Global_DFLT_Lang=en-us
  • 请参阅 latest.zip -> /example/04-settings/lp.cfg 文件。

2. 创建新页面!

使用模板 04-settings/templets.php 文件,用户自行更改为新文件名(示例为:newpage.php)。
  • $lp = new lp();
  • $lp->masterCatalogue = "themes/{newpage}";
  • $lp->run();
创建目录及匹配的语言
  • 进入 04-settings/themes/newpage,创建目录必须与 {newpage} 变量名一致。
目录结构
  • 04-settings/newpage.php
  • 04-settings/themes/newpage

示例 5:数据库 & 数组式

通过 PDO 方式连接 SQL 数据库,支持 MySQL、SQLite。并使用数组(Array)功能列出所有可用的数据。

源码:latest.zip -> /example/05-database

1. 创建数据库全局配置文件。

使用模板 latest.zip -> /example/05-database/lp-config.sample.php 文件,更改为新文件名:lp-config.php

2. 更改参数与你的服务器配置相同。
  • define('Database_Mode', '');
  • define('DB_HOST', 'localhost');
  • define('DB_NAME', 'lang-php');
  • define('DB_USER', 'username');
  • define('DB_PWD', 'password');
  • define('DB_PREFIX', 'lp_');
  • define('DB_CHARSET', 'utf8mb4');
3. 动态页连接代码。
  • include_once('lp-load.php');
  • $page_team = 'homepage';
  • $current_lng = $db->select(DB_PREFIX."translate", "section = '$page_team'");
  • $lpna = $db->arraymodify($current_lng, $lng);

请参阅 latest.zip -> /example/05-database/index.php 文件。

数组调用方法。
  • <?php echo $lpna['lang_use_title1']['lp_variable']; ?>
使用 print_r 命令输出所有数组。
  • print_r($current_page);
  • print_r($lpna);
4. 创建新页面!

使用模板 latest.zip -> /example/05-database/templets.php 文件,用户自行更改为新文件名(示例为:newpage.php)。

  • 修改当前页面名称,以便索引。
  • $page_team = 'newpage';

示例 6:独立版 & 便携式

利用 array() 语言结构建一个数组,通过函数来完成所有操作;相对其它版本,便携版是由一个文件来完成。

源码:latest.zip -> /example/06-portable

1. 预先设置可用的语言包,通过查询条件来完成。
  • $global_lp_all = array('en-us', 'zh-cn', 'zh-tw', 'ja-jp', 'ko-kr', 'ru-ru');
2. 创建数组。
  • $lpna = array (
  • 'template' => array (
  • 'en-us' => 'template',
  • 'zh-cn' => '模板',
  • 'zh-tw' => '模板',
  • 'ja-jp' => '模板',
  • 'ko-kr' => '模板',
  • 'ru-ru' => '模板'),
  • 'end' => array (
  • 'en-us' => 'end',
  • 'zh-cn' => 'end',
  • 'zh-tw' => 'end',
  • 'ja-jp' => 'end',
  • 'ko-kr' => 'end',
  • 'ru-ru' => 'end')
  • );
3. 数组调用方法。
  • <?php echo $lpna['lang_page_title'][$lng]; ?>

使用时请注意数组写法,数组演示仅列出部分,请查阅源代码:latest.zip -> /example/06-portable/index.php

使用 print_r 命令输出所有数组。
  • print_r($lpna);
4. 资源转换。

在使用便携版过程中,例如:图片、ICO,需要转换成 base64 编码。javascript、CSS 等资源,用嵌入代码来完成,缩短可以使用精简工具。

5. 在线转换网站推荐
  • Base64 Image Encoder > http://www.base64-image.de
  • Base64 image encoder decoder > http://freeonlinetools24.com/base64-image
  • Convert Images to base64 > https://www.browserling.com/tools/image-to-base64/

其它补充

补充,是指使用中隐藏用法及其它功能等。

如何使用动态 URL 功能

将所有请求提交给 index.php 处理,包括 Nginx、Apache、IIS 等。

1、Nginx 配置示例:
  • location / {
  • try_files $uri $uri/ /index.php?$uri&$args;
  • }
2、Apache,在网站主目录下创建 .htaccess
  • RewriteEngine On
  • RewriteBase /
  • RewriteCond %{REQUEST_FILENAME} !-f
  • RewriteCond %{REQUEST_FILENAME} !-d
  • RewriteRule . /index.php [L]
3、打开 index.php 后,启用 URL 功能。
  • $lp->isDynamic = true;

使用 Javascript (JS) 切换语言并隐藏参数

什么叫通过 Javascript (JS) 来切换语言并隐藏参数?目的就是去掉后缀。

使用模式 1 前:https://lang-php.com/?lang=zh-cn;

使用模式 2 后:https://lang-php.com,后缀没有了。

1. HTML 模板。
  • <html>
  • <headl>
  • <script src="assets/js/lp.js"></script>
  • </headl>
  • <body>
  • <a href="?lang=en-us">切换</a>
  • </body>
  • </html>

源码:latest.zip -> /example/*/assets/js/lp.js

跳转到指定的域名

什么是跳转到指定的域名?部分示例都是通过读取并匹配目录下的文件,想实现跳转到指定的域名,请参考以下代码:

添加代码到需要跳转的页面!
  • /* sample 1
  • header("Location: http://us.lang-php.com");
  • /* sample 2
  • public $globalDomain = 'https://lang-php.com/';
  • function loading($lang)
  • {
  • header("Location:" . $this->globalDomain . $lang);
  • }
  • /* sample 3
  • function loading($lang)
  • switch ($lang) {
  • case 'zh-cn': header("Location: https://cn.lang-php.com"); break;
  • case 'zh-tw': header("Location: https://tw.lang-php.com"); break;
  • case 'en-us': header("Location: https://us.lang-php.com"); break;
  • case 'ru-ru': header("Location: https://ru.lang-php.com"); break;
  • case 'ja-jp': header("Location: https://jp.lang-php.com"); break;
  • case 'ko-kr': header("Location: https://kr.lang-php.com"); break;
  • default: header("Location: https://global.lang-php.com"); break;
  • }
  • }

下载

升级到最新版,不仅能替换旧代码和获得最新解决方案;如果您未更新,这些版本有时会有些过时,因此可能会缺少最新功能。另外,配置过程因软件包而异,并且可能不遵守官方文档。话虽如此,所以保持更新是最快、最简单的方法。


PHP 多国语框架 v6.5 最新版

发布于 2020-01-02,有关详细信息,请参阅:发行说明

文件 大小 验证
lang-php-latest-master.zip 310kb [PGP] [SHA256]
lang-php-latest-master.tar.gz 228kb [PGP] [SHA256]
lang-php-latest-master.tar.xz 89kb [PGP] [SHA256]

验证 Lang-php 版本

从即日起,所有 lang-php 发行版均由发布的开发人员进行加密签名,该开发人员都是 'Lang-php.com Security Team',Key-ID:

  • 2499 B792 4675 A12B

PGP 指纹:

  • 4F2B AB7B 8FA3 A53E 4DBD 9594 2499 B792 4675 A12B

您应该验证签名是否与您下载的档案匹配。这样,您可以确保使用的代码与发布的相同。您还应该验证签名的日期,以确保您下载了最新版本。

每个档案都随附 .asc 有包含 PGP 签名的文件。将它们放在同一个文件夹中后,即可验证签名:
  • $ gpg --verify lang-php-latest-master.zip.asc
  • gpg: Can't check signature: public key not found

如您所见,gpg 提示不知道公钥。此时,您应该执行以下步骤之一:

1. 从官方下载 最新公共密钥 并导入密钥:
  • https://lang-php.com/lang-php.com.asc
通过在线下载并导入
  • $ wget --no-check-certificate https://lang-php.com/lang-php.com.asc && gpg --import lang-php.pgp.asc
  • $ curl https://lang-php.com/lang-php.com.asc | gpg --import
  • # 或手动下载后使用命令行导入密钥
  • $ gpg --import lang-php.pgp.asc

2. 从其中一台密钥服务器下载并导入密钥:
  • $ gpg --keyserver keys.gnupg.net --recv-keys 4F2BAB7B8FA3A53E4DBD95942499B7924675A12B
导入密钥后,gpg 提示:未找到最终信任的密钥
  • gpg: no ultimately trusted keys found
为改善这种情况,您可以验证指定密钥的签名正确,但是您仍然不能信任密钥中使用的名称:
  • $ gpg --verify lang-php-latest-master.zip.asc
  • gpg: WARNING: This key is not certified with a trusted signature!
  • gpg: There is no indication that the signature belongs to the owner." [full]

这里的问题是任何人都可以使用该名称来发布密钥。您需要确保密钥实际上由所提及的人拥有。《 GNU 隐私手册》在“验证公共密钥环上的其他密钥”一章中涵盖了该主题。最可靠的方法是亲自与开发人员会面并交换密钥指纹,但是,您也可以依靠信任网络。这样,您可以通过亲身遇到开发人员的其他人的签名来传递信任的密钥。


一旦密钥被信任,就不会发生警告:
  • $ gpg --verify lang-php-latest-master.zip.asc
  • gpg: Good signature from "Lang-php.com Security Team <security@lang-php.com>> [full]
如果签名无效(存档已更改),则无论密钥是否受信任,您都会得到一个明确的错误:
  • $ gpg --verify lang-php-latest-master.zip.asc
  • gpg: BAD signature from "Lang-php.com Security Team <security@lang-php.com>> [full]
之后,您可以删除公钥:
  • $ gpg --delete-key 4F2BAB7B8FA3A53E4DBD95942499B7924675A12B
CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐