一对一视频聊天源码中的语言包应该如何开发

作为专业的一对一视频聊天源码开发服务商,与国外客户打交道是必不可少的,但是由于语言不同所以在开发和后期搭建部署时会遇到一些障碍。
除此之外还需要考虑国外客户在其所在国家上线运营时的语言问题,这就需要开发者将自己的源码界面翻译成为不同的国家语言。接下来给大家分享怎样做。

整理语言包,将系统界面显示的文字、所有文字提示等涉及语言转化的内容整理语言包进行翻译。
<?php
return array (
  'USER_INDEXADMIN_BAN' => '拉黑会员',
  'USER_INDEXADMIN_CANCELBAN' => '启用会员',
  'USER_INDEXADMIN_DEFAULT1' => '用户组',
  'USER_INDEXADMIN_DEFAULT3' => '管理组',
  'USER_INDEXADMIN_INDEX' => '本站用户',
  'USER_OAUTHADMIN_DELETE' => '第三方用户解绑',
  'USER_OAUTHADMIN_INDEX' => '第三方用户',
  'USER_INDEXADMIN_DEFAULT' => '用户管理',
  'USER_INDEXADMIN_ADD' => '新增会员',
  'USER_INDEXADMIN_ADD_POST' => '新增会员修改',
  'USER_INDEXADMIN_CANCELRECOMMEND' => '取消推荐',
  'USER_INDEXADMIN_CANCELRECORD' => '关闭录播',
  'USER_INDEXADMIN_CANCELZOMBIE' => '关闭僵尸粉',
  'USER_INDEXADMIN_CANCELZOMBIEP' => '取消设置僵尸粉',
  'USER_INDEXADMIN_DEL' => '删除会员',
  'USER_INDEXADMIN_EDIT' => '编辑',
  'USER_INDEXADMIN_EDIT_POST' => '编辑修改',
  'USER_INDEXADMIN_RECOMMEND' => '推荐',
  'USER_INDEXADMIN_RECORD' => '开启录播',
  'USER_INDEXADMIN_RECORDALL' => '一键开启/关闭录播',
  'USER_INDEXADMIN_ZOMBIE' => '开启僵尸粉',
  'USER_INDEXADMIN_ZOMBIEALL' => '一键开启/关闭僵尸粉',
  'USER_INDEXADMIN_ZOMBIEP' => '设置为僵尸粉',
  'USER_INDEXADMIN_ZOMBIEPBATCH' => '批量设置/取消僵尸粉',
  'USER_INDEXADMIN_CANCELHOT' => '取消热门',
  'USER_INDEXADMIN_CANCELSUPER' => '取消超管',
  'USER_INDEXADMIN_HOT' => '设置热门',
  'USER_INDEXADMIN_SUPER' => '设置超管',
);

使用语言翻译方法进行翻译

function L($name=null, $value=null) {
    static $_lang = array();
    // 空参数返回所有定义
    if (empty($name))
        return $_lang;
    // 判断语言获取(或设置)
    // 若不存在,直接返回全大写$name
    if (is_string($name)) {
        $name   =   strtoupper($name);
        if (is_null($value)){
            return isset($_lang[$name]) ? $_lang[$name] : $name;
        }elseif(is_array($value)){
            // 支持变量
            $replace = array_keys($value);
            foreach($replace as &$v){
                $v = '{$'.$v.'}';
            }
            return str_replace($replace,$value,isset($_lang[$name]) ? $_lang[$name] : $name);        
        }
        $_lang[$name] = $value; // 语言定义
        return null;
    }
    // 批量定义
    if (is_array($name))
        $_lang = array_merge($_lang, array_change_key_case($name, CASE_UPPER));
    return null;
}

调用语言翻译方法

<admintpl file="header" />
</head>
<body>
	<div class="wrap js-check-wrap">
		<ul class="nav nav-tabs">
			<li class="active"><a href="{:U('user/index')}">{:L('ADMIN_USER_INDEX')}</a></li>
			<li><a href="{:U('user/add')}">{:L('ADMIN_USER_ADD')}</a></li>
		</ul>
		<table class="table table-hover table-bordered">
			<thead>
				<tr>
					<th width="50">ID</th>
					<th>{:L('USERNAME')}</th>
					<th>{:L('LAST_LOGIN_IP')}</th>
					<th>{:L('LAST_LOGIN_TIME')}</th>
					<th>{:L('EMAIL')}</th>
					<th>{:L('STATUS')}</th>
					<th width="120">{:L('ACTIONS')}</th>
				</tr>
			</thead>
			<tbody>
<php>$user_statuses=array("0"=>L('USER_STATUS_BLOCKED'),"1"=>L('USER_STATUS_ACTIVATED'),"2"=>L('USER_STATUS_UNVERIFIED'));</php>
				<foreach name="users" item="vo">
				<tr>
					<td>{$vo.id}</td>
					<td>{$vo.user_login}</td>
					<td>{$vo.last_login_ip}</td>
					<td>
						<if condition="$vo['last_login_time'] eq 0">
							{:L('USER_HAVENOT_LOGIN')}
						<else />
							{$vo.last_login_time}
						</if>
					</td>
					<td>{$vo.user_email}</td>
					<td>{$user_statuses[$vo['user_status']]}</td>
					<td>
						<if condition="$vo['id'] eq 1">
						<font color="#cccccc">{:L('EDIT')}</font> | <font color="#cccccc">{:L('DELETE')}</font> |
							<if condition="$vo['user_status'] eq 1">
								<font color="#cccccc">{:L('BLOCK_USER')}</font>
							<else />
								<font color="#cccccc">{:L('ACTIVATE_USER')}</font>
							</if>
						<else />
							<a href='{:U("user/edit",array("id"=>$vo["id"]))}'>{:L('EDIT')}</a> | 
							<a class="js-ajax-delete" href="{:U('user/delete',array('id'=>$vo['id']))}">{:L('DELETE')}</a> | 
							<if condition="$vo['user_status'] eq 1">
								<a href="{:U('user/ban',array('id'=>$vo['id']))}" class="js-ajax-dialog-btn" data-msg="{:L('BLOCK_USER_CONFIRM_MESSAGE')}">{:L('BLOCK_USER')}</a>
							<else />
								<a href="{:U('user/cancelban',array('id'=>$vo['id']))}" class="js-ajax-dialog-btn" data-msg="{:L('ACTIVATE_USER_CONFIRM_MESSAGE')}">{:L('ACTIVATE_USER')}</a>
							</if>
						</if>
					</td>
				</tr>
				</foreach>
			</tbody>
		</table>
		<div class="pagination">{$page}</div>
	</div>
	<script src="__PUBLIC__/js/common.js"></script>
</body>
</html>

以上就是一对一视频聊天源码中关于语言包开发的大概流程,由此可见为了更好的实现不同平台客户的需求,需要涉及的部分是非常多的,所以还是建议大家找专业的源码服务开发商。
声明:本文由作者原创,转载请注明出处及原文链接。

发布了119 篇原创文章 · 获赞 27 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/yun_bao_2144899870/article/details/102486087