# 语言与格式

> 工作站画面所使用的语言，以及每一块屏幕、每一个导出文件所使用的日期、时间和数字格式。

语言与格式是设置页面上**常规**分组的第四行。它的第一个挑选器决定工作站每一块画面用什么语言书写；下面那四个决定工作站怎么写一个日期、一个时刻和一个数字，而且到处一起改：屏幕上、状态栏里、图表上、导出文件里和报告里。每一个格式行都实时预览这个选择产出的样子。这个页面需要**更改设置**权限；格式一选定就生效，语言则在应用下次启动时生效。

## 界面语言 {#interface-language}

| 字段 | 它是什么 | 取值 / 默认 | 效果 |
| --- | --- | --- | --- |
| 界面语言 | 本工作站画面所使用的语言。这一行写着“本工作站的画面所使用的语言，无论在这里还是在任何打开它们的设备上都一样。它在 Ganter Lab 下次启动时生效：正在进行的工作不会被打断，下面的日期、时间和数字格式也保持原样。” | 产品交付的十一种语言，每一种都用它自己的名字写出来，好让读不懂当前屏幕的人也能找到自己那一种。默认：产品会说的那种 Windows 显示语言，否则是英语。 | 应用写出的每一个词：标签、说明、菜单、提示、确认和拒绝，在这里和在任何打开本工作站的浏览器上都一样，还有离线帮助和法律文件。 |

选定一种语言会立刻把这个选择存下来，屏幕上却还什么都没变。这一行随后用强调色补上一句“已保存。在 Ganter Lab 重启之前，画面仍以…书写。”，其中写着此刻仍在读的那种语言；新的文字要等到下一次平常的启动才到：没有任何东西会自己重启，也不会为了换一个标签就打断采集、记录或运行。这个选择属于工作站，而不属于做出选择的那块屏幕：它和主题以及下面那些格式一起存进配置数据库（一行，跟着备份走），厂区网络上的浏览器读的是工作站的语言而不是它自己的，所以一张仪表画面在哪儿打开读起来都一样。

在[代理](agent)页面上打开着设置范围的代理，用 `settings_read` 读当前语言，用 `localization_set` 设定它，传入这个版本交付的语言的区域代码（`en`、`pt-BR`、`de-DE`、`fr`、`fr-CA`、`it-IT`、`es`、`es-MX`、`zh-CN`、`ja-JP`、`ko-KR`）；别的代码一律拒绝，回答就是这份清单。代理设定的内容和在这里做出的选择一样记录下来，在下次启动时读取。

## 四种格式 {#the-four-formats}

| 字段 | 它是什么 | 取值 / 默认 | 效果 |
| --- | --- | --- | --- |
| 日期格式 | 一个日历日期的排法。预览：今天的日期。 | **日 / 月 / 年（31/12/2026）**、**月 / 日 / 年（12/31/2026）**、**年 - 月 - 日（2026-12-31）**。默认：日 / 月 / 年。 | 工作站显示的或者写进文件的每一个日期。 |
| 时间格式 | 一个钟点时刻的排法。预览：此刻的时间。 | **24 小时制（14:05:09）**、**12 小时制 AM/PM（02:05:09 PM）**。默认：24 小时制。 | 每一个时刻；带毫秒的读数仍然带着毫秒（14:05:09.123，或者 02:05:09.123 PM）。 |
| 小数分隔符 | 整数和小数之间的那个记号，以及跟着它走的分组记号。预览：1234.5678，按当前的小数位数写出来。 | **点（1,234.56）**、**逗号（1.234,56）**。默认：点。 | 工作站写出来给人读的每一个数字，以及在文本字段里输入的小数（任何工作站也都接受点）。 |
| 小数位数 | “数值显示的小数位数。” | 0 到 6。默认：2。 | 每一个没有更贴近的规则管着的数字。 |

一次改动立刻作用于每一块打开着的屏幕，工作站自己的窗口和任何浏览器都一样，并和主题一起存进配置数据库（一行，跟着备份走）。单元运行期间这些挑选器不被锁住：它们是显示偏好，不是对工作站的改动。在[代理](agent)页面上打开着设置范围的代理用 `settings_read` 读它们，用 `localization_set` 改它们；代理能设的小数位数也和挑选器给出的一样是 0 到 6，别的数一律拒绝，回答就是这个范围，被拒绝的调用什么也不改。运行时停止期间，格式和语言都改不了：这个页面和除账户以外的每个页面一样，让位给暂停通知（见[运行时停止对这个页面做了什么](settings#what-the-stopped-runtime-does-to-this-page)），`localization_set` 回答“运行时已停止”。

## 每一种格式管到哪里 {#where-each-format-applies}

人读的每一样东西都走同一个格式化器，所以同一个窗口里不会有两块地方说着不同的历法。

- **状态栏时钟**：栏子右端的日期和时间，用选定的日期和时间格式。
- **Connector**：点位的实时数值，用小数分隔符和跟着它走的分组记号，位数是点位自己声明的，而不是这里选的（[点位](connector-tags#the-live-value-card)）；点位的信号源时间戳和应用时间戳，带毫秒；还有两点法助手的预览表（[校准](connector-calibration#step-3-read-the-verdict-and-the-preview)）。
- **Logic**：地址空间各行和各面板里的点位数值，以及变量的“数值”卡片，都用小数分隔符和跟着它走的分组记号：整数不带小数部分；Connector 点位的小数值按点位自己声明的位数写，和在 Connector 里一样；其他小数值按这里选的位数写。动作的脚本被中止时，它点名的那个上限同样带分组记号（[动作](logic-actions#run)）。
- **仪表画面**：数值显示、指标卡、报警提示条的各行。自己写明了小数位数的组件，它的数值用它自己的；分隔符永远是工作站的。编辑器里地址字段下面显示的那个读数，写法和它所确认的那个“数值”组件在没有写明小数位数时一样：整数不带小数部分，小数值即使点位自己声明了位数，也按这里选的位数写。所以在写两位小数的工作站上，一个声明一位的点位在那里读作 239.10，在 Connector 和 Logic 里读作 239.1。
- **图表**：每一张图的坐标轴标签都使用选定的小数记号、日期顺序和 12 小时制或 24 小时制，小数位数用工作站的，除非某条系列自己声明了。
- **Process**：单元卡片、历史列表、运行备注、标签和生成出来的报告。在配置屏幕上：判定各字段下面的效果行、流程每一段的结果行、通道的示例读数，以及单元绑定表里的数值栏。还有每一个以字节计的大小：档案里一件标签冻结下来的字节数，以及运行记录里保留的报告副本、以 `.glab` 文件导出或导入的运行记录和标签模板命令的大小。
- **导出**：一次运行导出成 CSV 时，数字用选定的小数记号写，列分隔符跟着它走：小数点配逗号分列，小数逗号配分号分列，这样文件在同一区域设置的电子表格里就能干净地打开。XLSX 导出和事件的各种导出带着同样的时间戳。
- **事件、用户、账户和设置**：日志行、报警历史、某位用户的最近访问、订阅日期、备份列表和证书的有效期。

时刻按 UTC 存储，按工作站本地时区显示；这次换算就发生在同一个格式化器里，所以带时间戳的文件在时间戳那一列的表头上把工作站的时区写一次。远程浏览器自己的区域设置被忽略：一幅仪表画面不管在哪里打开，读起来都一样。

## 这些设置不会改变什么 {#what-these-settings-do-not-change}

存储、驱动流量、记录、总线上的负载和下载文件名，一律使用固定的不变格式；一次格式改动绝不会重写已经记录下来的数值。某一项自己写明的格式，比如一个标签标记、一个流水标识的某一段，或者一根自带小数位数的图表坐标轴，那是这一项自己的数据。标签是为读它的机器打印数字的：不管这里选了什么，都用不变的小数点，绝不带分组记号（[标签模板](process-labels#where-the-values-come-from)）；档案里新建标签时的信号源选择框，也按标签打印数字的方式显示每个数字。上面那个语言也不属于这些格式：一台用日语读的工作站，日期、时间和数字照样按那四行说的写；它也从不翻译谁输进去的东西，所以设备名、点位名、变量名、仪表画面名和单元名，还有备注和批注，都照原样读出来。
