## 1、项目意义

项目逐渐走向海外版本，翻译就变成一个很重要切必须做的事情。

### 1.1 传统方式

现阶段，项目中字段的翻译步骤如下：

1、分别收集项目中不同模块的翻译key和翻译value

Android 国际化配置文件

```xml
<resources>
    <string name="app_name">翻译助手</string>
    <string name="str_from_app">你好</string>
    <string name="str_from_app1">生活是美好的</string>
    <string name="str_from_app2">人性是复杂的</string>
    <string name="str_from_app3">点击按钮退出页面</string>
    <string name="str_from_app4">你叫什么名字</string>
</resources>
```

PHP中 laravel 框架使用的配置文件

```php
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Password Reminder Language Lines
    |--------------------------------------------------------------------------
    |
    | The following language lines are the default lines which match reasons
    | that are given by the password broker for a password update attempt
    | has failed, such as for an invalid token or invalid new password.
    |
    */

    'password' => '密码至少是六位字符并且匹配。',
    'reset'    => '密码重置成功！',
    'sent'     => '密码重置邮件已发送！',
    'token'    => '密码重置令牌无效。',
    'user'     => '找不到该邮箱对应的用户。',

];

```

2、将收集到的key-value按模块复制粘贴到excel文档中

3、将文档交付给第三方去进行翻译，将翻译好的文档交付给我们开发

4、将翻译好的内容依次回填到项目中其他语言的配置文件中

### 1.2 弊端

1、操作耗时

对于开发人员来讲，这件事是没有技术含量却很复杂的，项目中需要翻译的字段可能上千个甚至几千个，光收集内容和最后将翻译内容填充到项目可能需要花上几天的时间

2、容易出错

操作的过程中需要保持高度集中，如果一旦出现复制出错，会导致翻译内容对不上

3、翻译人员操作也很痛苦

翻译人员将翻译好的内容一个个复制到excel也很痛苦。

### 3.1 系统带来的好处

1、国际化配置文件中的key和value可以通过程序自动收集

2、翻译好的内容也可以通过程序一键在本地生成好其他国家语言的配置文件

3、翻译人员可以在网站上进行翻译，友好的交互，同时提供了自动翻译的功能

4、适配Android，PHP以及后续可能会适配的前端Vue，小程序框架等等项目，让翻译这件事情能够统一

## 2、项目架构

### 2.1 项目实现

项目分为三个板块，分为开发使用的：翻译桌面端  翻译人员使用的：翻译管理后台 和 为他们提供数据服务支持的翻译API后台。目前PC端的软件已经全部生成，后台管理系统和服务端已经分别部署到腾讯云服务器，可直接访问。

#### 2.1.1 翻译桌面端

技术栈：使用 Electron + Vue3，分别打包 Mac（intel芯片），Mac（Apple芯片）和Windows软件

功能：开发人员用于上传本地翻译内容到服务端和拉去服务端的翻译在本地合成国际化翻译文件

#### 2.1.2 翻译管理后台

技术栈：Vue2

功能：

1、创建项目

2、在线对内容进行翻译

#### 2.1.3 API后台

技术栈：Springboot + MySql

功能：为桌面端和管理后台提供API支持

### 2.2 系统使用

#### 2.2.1 访问管理后台

http://tcl.mxnzp.com/admin-translate/#/home

#### 2.2.2 点击控制台管理进入登录页面

```
账号：13227293721
密码：cretin**29**
```

#### 2.2.3 下载桌面工具

登录成功之后点击控制台管理进入后台管理页面，点击左侧桌面工具下载对应你当前系统的桌面工具并安装

#### 2.2.4 登录桌面工具

点击右上角用户信息，点击获取token，等到登录用的token

![image-20231219093938488](./images/image-20231219093938488.png)

#### 2.2.5 在管理后台创建项目

点击项目列表，点击新建项目，输入项目名称，项目描述和项目平台，平台目前仅支持Android和PHP。

#### 2.2.6 选择项目和完善地址

打开翻译桌面端，用在2.2.4中获取的token进行登录，登录成功会弹出选择项目弹窗，选择你刚刚创建的项目。然后点击选择文件夹按钮选择项目根目录即可。

![image-20231219094255713](./images/image-20231219094255713.png)![image-20231219094415225](./images/image-20231219094415225.png)

#### 2.2.7 上传翻译

点击桌面端左侧上传翻译，点击顶部拉去本地资源，拉取成功之后会展示当前项目中所有的翻译Key和Value，检查无误之后点击顶部的上传数据到云端即可。

![image-20231219094623041](./images/image-20231219094623041.png)

#### 2.2.8 进行翻译

打开管理后台，点击左侧的项目列表，选择你刚刚创建的项目，点击进入翻译系统。未翻译的地方都会显示点击翻译，点击“点击翻译”会弹出翻译窗口，在这里提供了在线翻译的功能，将翻译后的内容填入输入框，按SHIFT+回车或者点击确定按钮完成翻译。

![image-20231219095207071](./images/image-20231219095207071.png)

![image-20231219095225303](./images/image-20231219095225303.png)

#### 2.2.9 拉取翻译

打开翻译桌面端，点击左边的同步翻译，点击顶部拉取云端翻译，会展示云端已经翻译好的内容，点击生成本地数据即可在本地生成其他国家的语言翻译配置。

![image-20231219095415889](./images/image-20231219095415889.png)

#### 2.2.10 查看翻译文件

**以PHP为例**

此处是未翻译之前的内容

```php
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Password Reminder Language Lines
    |--------------------------------------------------------------------------
    |
    | The following language lines are the default lines which match reasons
    | that are given by the password broker for a password update attempt
    | has failed, such as for an invalid token or invalid new password.
    |
    */

    'password' => '密码至少是六位字符并且匹配。',
    'reset'    => '密码重置成功！',
    'sent'     => '密码重置邮件已发送！',
    'token'    => '密码重置令牌无效。',
    'user'     => '找不到该邮箱对应的用户。',

];

```

此处是翻译之后的内容

```php
<?php

return [
    'password' => 'The password must be at least six characters and match.',
    'reset' => 'Password reset successful!',
    'sent' => 'Password reset email has been sent!',
];
```

