示例

包括:用户自定义选择目录式、内部加载文件嵌入式、读取配置文件加载式。

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

首次运行后转向 Worldwide 目录,选择后转向匹配的语言目录,带记忆功能。

1. 主索引脚本。

  1. <?php
    includeonce_DIR . '/routes/lp-class.php';

    / 初始化应用程序 */
    $app = new lp();

    /
    创建和配置应用程序 /
    $app->useURL = true;

    /** 运行应用程序
    /
    $app->run();
    ?>

源码:latest.zip -> /01-directory/index.php

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

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

1. 主索引脚本。

  1. <?php
    includeonce_DIR . '/routes/lp-class.php';

  2. /* 初始化应用程序 /
    $app = new lp();

  3. /* 创建和配置应用程序 /
    $app->useURL = true;

  4. /* 运行应用程序 /
    $app->run();
    ?>



源码:latest.zip -> /02-embed/index.php
2. 在 routes 下创建匹配的语言文件。例如:

  1. en-us.php

  2. <html>
    <body>
    Embedded en-us.php files;
    </body>
    </html>

  3. zh-cn.php

  4. <html>
    <body>
    嵌入 zh-cn.php 文件;
    </body>
    </html>



请参阅 latest.zip -> /02-embed/routes 目录下的文件。
3. 创建新页面!

使用模板 02-embed/templet.php 文件,用户自行更改为新文件名(示例为:newpage.php)。

  1. <?php
    includeonce_DIR . '/routes/lp-class.php';

  2. /* 初始化应用程序 /
    $app = new lp();

  3. /* 创建和配置应用程序 /
    $app->masterCatalogue = "routes/{newpage}";

  4. /* 运行应用程序 /
    $app->run();
    ?>



创建目录及匹配的语言

  1. 进入 02-embed/module/newpage,创建目录必须与 {newpage} 变量名一致。


创建主题皮肤

  1. 进入 02-embed/themes 并创建 newpage.php 文件。


访问模式

  1. 02-embed/newpage.php
    02-embed/?load=newpage



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

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

1. 加载脚本(index.php)。

  1. <?php
    includeonce_DIR . '/routes/lp-class.php';

  2. /* 初始化应用程序 /
    $app = new lp();

  3. /* 创建和配置应用程序 /
    $app->useURL = true;

  4. /* 运行应用程序 /
    $app->run();
    ?>



源码:latest.zip -> /03-load/index.php
2. Html 与 PHP 语言混排,例如:

  1. <?php echo $lpvar['lang_available']; ?>


请参阅 latest.zip -> /03-load/languages/ 目录下的 en-us.php & zh-cn.php 文件。
3. 创建可匹配的语言模板。例如:

  1. en-us.php

  2. <?php
    $lpvar = array (
    'lang_available' => 'Available Languages:',
    );
    ?>

  3. zh-cn.php

  4. <?php
    $lpvar = array (
    'lang_available' => '可用语言:',
    );
    ?>



请参阅 latest.zip -> /03-load/languages/ 目录下的 en-us.php, zh-cn.php 文件。
4. 创建新页面!

使用模板 03-load/templet.php 文件,用户自行更改为新文件名(示例为:newpage.php)。

  1. <?php
    includeonce_DIR . '/routes/lp-class.php';

  2. /* 初始化应用程序 /
    $app = new lp();

  3. /* 创建和配置应用程序 /
    $app->masterCatalogue = 'languages/{newpage}';
    $app->userThemes = '{newpage}';

  4. /* 运行应用程序 /
    $app->run();
    ?>



创建目录及匹配的语言

  1. 进入 03-load/module/newpage,创建目录必须与 {newpage} 变量名一致。


访问模式

  1. 03-load/newpage.php
    03-load/?load=newpage



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

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

1. 主索引脚本。

  1. <?php
    includeonce_DIR . '/routes/lp-class.php';

  2. /* 初始化应用程序 /
    $app = new lp();

  3. /* 运行应用程序 /
    $app->run();
    ?>



源码:latest.zip -> /04-settings/index.php
2. 创建一个可用的全局参数。例如:

  1. <?php
    $Global_DFLT_Lang="zh-CN";
    ?>


请参阅 latest.zip -> /04-settings/lang-cfg-sample.php 文件。
3. 创建新页面!

使用模板 04-settings/templet.php 文件,用户自行更改为新文件名(示例为:newpage.php)。

  1. <?php
    includeonce_DIR . '/routes/lp-class.php';

  2. /* 初始化应用程序 /
    $app = new lp();

  3. /* 创建和配置应用程序 /
    $app->masterCatalogue = "routes/{newpage}";

  4. /* 运行应用程序 /
    $app->run();
    ?>



创建目录及匹配的语言

  1. 进入 04-settings/module/newpage,创建目录必须与 {newpage} 变量名一致。



示例 5:数据库 & 数组式

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

1. lp-load 脚本。

  1. <?php
    require_once('lp-load.php');

  2. /* Browser session /
    if (!session_id()) session_start();
    header('Cache-control: private');

  3. $db = new db();

  4. if(isSet($_GET['lang'])) {
    $lang = strtolower($_GET['lang']);

  5. /** Cookie: Setting, Register */
  6. $_SESSION[&#39;lang&#39;] = $lang;
  7. $_COOKIE[&#34;lang&#34;] = $lang;
  8. setcookie(&#34;lang&#34;, $lang, time() + (3600 * 24 * 30), &#39;/&#39;);
  9. $current_lng = $db-&gt;select(DB_PREFIX.&#34;language&#34;, &#34;code = &#39;$lang&#39;&#34;);
  10. if ($current_lng) {
  11.     $_COOKIE[&#34;lang&#34;] = $lang;
  12.     $lng = $lang;
  13. } else {
  14.     $lng = &#34;en-us&#34;;
  15. }
  16. } else if(isSet($_COOKIE['lang'])) {
    $lang = $_COOKIE["lang"];
    $current_lng = $db->select(DB_PREFIX."language", "code = '$lang'");
    if ($current_lng) {
    $_COOKIE["lang"] = $lang;
    $lng = $lang;
    } else {
    $lng = "en-us";
    }
    } else {
    preg_match('/^([a-z-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
    $lang = strtolower($matches[1]);
    $_COOKIE["lang"] = $lang;
    setcookie("lang", $lang, time() + (3600 24 30), '/');

  17. $current_lng = $db-&gt;select(DB_PREFIX.&#34;language&#34;, &#34;code = &#39;$lang&#39;&#34;);
  18. if ($current_lng) {
  19.     $_COOKIE[&#34;lang&#34;] = $lang;
  20.     $lng = $lang;
  21. } else {
  22.     $lng = &#34;en-us&#34;;
  23. }
  24. }
    ?>



源码:latest.zip -> /05-database/lp-load.php
2. lp-config 配置。

  1. <?php
    / SQL 连接模式 */
    define('Database_Mode', 'mysql');
    /
    可接受值: mysql , sqlite */

  2. /* MySQL 主机 /
    define('DB_HOST', 'localhost');

  3. /* MySQL 数据库名称 /
    define('DB_NAME', 'lang-php');

  4. /* MySQL 用户 /
    define('DB_USER', 'root');

  5. /* MySQL 密码 /
    define('DB_PWD', '');

  6. /* 数据库前缀 /
    define('DBPREFIX', 'lp');

  7. /* 数据库编码 /
    define('DB_CHARSET', 'utf8');
    ?>



源码:latest.zip -> /05-database/lp-config.php
3. 当前页面连接字串。

  1. <?php
    require_once('lp-load.php');

  2. /* 设置当前页面变量 /
    $page_team = 'homepage';

  3. /* SQL 连接字串符 /
    $current_lng = $db->select(DB_PREFIX."translate", "section = '$page_team'");
    $lpna = $db->arraymodify($current_lng, $lng);
    ?>



请参阅 latest.zip -> /05-database/index.php 文件。
数组调用方法。

  1. <?php echo $lpna['lang_use_title1']['lp_variable']; ?>

使用 print_r 命令输出所有数组。

  1. <?php print_r($lpna); ?>

4. 创建新页面!

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

  1. 修改当前页面名称,以便索引。
    /* Main Folder /
    $page_team = 'newpage';



示例 6:独立版 & 便携式

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

1. 便携式主脚本(index.php)。

  1. <?php
    /* 添加并设置可用的语言包 /
    $global_lp_all = array('en-us', 'zh-cn', 'zh-tw', 'de-de', 'ja-jp', 'ko-kr', 'ru-ru');11

  2. /* 浏览器 session /
    if (!session_id()) session_start();
    header('Cache-control: private');

  3. if(isSet($_GET['lang'])) {
    $lang = strtolower($_GET['lang']);

  4. /** Cookie: Setting, Register */
  5. $_SESSION[&#39;lang&#39;] = $lang;
  6. $_COOKIE[&#34;lang&#34;] = $lang;
  7. setcookie(&#34;lang&#34;, $lang, time() + (3600 * 24 * 30), &#39;/&#39;);
  8. if (in_array($lang, $global_lp_all)) {
  9.     $_COOKIE[&#34;lang&#34;] = $lang;
  10.     $_SESSION[&#39;lang&#39;] = $lang;
  11.     $lng = $lang;
  12. }
  13. } else if(isSet($_COOKIE['lang'])) {
    if (in_array($_COOKIE['lang'], $global_lp_all)) {
    $lng = $_COOKIE['lang'];
    } else {
    $lng = 'en-us';
    }
    } else {
    preg_match('/^([a-z-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
    $lang = strtolower($matches[1]);
    setcookie("lang", $lang, time() + (3600 24 30), '/');
    $_COOKIE["lang"] = $lang;

  14. if (in_array($lang, $global_lp_all)) {
  15.     $_COOKIE[&#34;lang&#34;] = $lang;
  16.     $_SESSION[&#39;lang&#39;] = $lang;
  17.     $lng = $lang;
  18. }
  19. }

  20. $lpna = array (
    'lang_page_title' => array (
    'en-us' => 'United States - English',
    'zh-cn' => '简体中文 - 中国')
    );
    ?>



使用时请注意数组写法,数组演示仅列出部分,请查阅源代码:latest.zip -> /06-portable/index.php
2. 预先设置可用的语言包,通过查询条件来完成。
数组示例:

  1. $global_lp_all = array('en-us', 'zh-cn', 'zh-tw', 'de-de', 'ja-jp', 'ko-kr', 'ru-ru');

查询条件:

  1. <?
    if (in_array($_GET['lang'], $global_lp_all)) {
    $lng = $_GET['lang'];
    } else {
    $lng = 'en-us';
    }
    ?>

3. 数组调用方法。

  1. <?php echo $lpna['lang_page_title'][$lng]; ?>

使用 print_r 命令输出所有数组。

  1. <?php print_r($lpna); ?>

4. 资源转换。

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

  1. <?php
    $path = 'assets/logo/logo.png';
    $type = pathinfo($path, PATHINFO_EXTENSION);
    $data = file_get_contents($path);
    $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

  2. echo $base64;
  3. ?>


C# 脚本

  1. using (Image image = Image.FromFile(Path)) {
    using (MemoryStream m = new MemoryStream()) {
    image.Save(m, image.RawFormat);
    byte[] imageBytes = m.ToArray();

  2.        // Convert byte[] to Base64 String
  3.        string base64String = Convert.ToBase64String(imageBytes);
  4.        return base64String;
  5. }
  6. }


JAVA 脚本

  1. public static String encodeToString(BufferedImage image, String type) {
    String base64String = null;
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try {
    ImageIO.write(image, type, bos);
    byte[] imageBytes = bos.toByteArray();
    BASE64Encoder encoder = new BASE64Encoder();
    base64String = encoder.encode(imageBytes);
    bos.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return base64String;
    }

PYTHON 脚本

  1. import base64
    imgdata = base64.b64decode(imgstring)
    filename = 'assets/logo/logo.png'
    with open(filename, 'wb') as f:
    f.write(imgdata)

RUBY 脚本

  1. #!/usr/bin/env ruby
    include_once'base64'
    File.open('assets/logo/logo.png', 'r') do|image_file|1
    puts Base64.encode64(image_file.read)
    end

在线转换网站推荐