Of course. Let's break down cfg_soft_lang in the context of the Dedecms (DedeCMS) content management system.

What is cfg_soft_lang?
In simple terms, cfg_soft_lang is a global configuration variable in Dedecms that stores the language code of the software's backend interface.
It is not the language for the public-facing website (which is controlled by other variables), but specifically for the administrative panel that content managers and developers use.
Key Details
Location and Purpose
- Where it's defined: This variable is typically set in the core configuration file of Dedecms, which is usually
/data/common.inc.php. This file is automatically generated when you install or upgrade the system. - What it controls: It determines the language of the text, labels, buttons, and messages you see inside the Dedecms admin panel (e.g., "内容管理" - Content Management, "系统设置" - System Settings, etc.).
- Default Value: The most common default value is
utf-8. This tells the admin panel to use UTF-8 character encoding for its interface, which supports a wide range of languages, including Chinese, English, and others.
How it Works
The variable acts as a flag or a setting that other parts of the Dedecms backend code can read to decide which language pack to load.
For example, when you load a page in the admin panel, the PHP scripts might check the value of $cfg_soft_lang. If it's set to utf-8, the system will load the interface text from the UTF-8 language files (located in /dede/lang/ or a similar directory). If it were set to another encoding, it would look for the corresponding language files.

Relationship with Other Language Variables in Dedecms
It's crucial to understand that cfg_soft_lang is one of several language-related variables in Dedecms, and they serve different purposes. Confusing them is a common source of issues.
Here is a comparison of the main language variables:
| Variable Name | Scope / Purpose | Typical Location | Example Value |
|---|---|---|---|
cfg_soft_lang |
Backend Admin Panel | /data/common.inc.php |
utf-8 |
cfg_lang |
Public Website Frontend | /data/common.inc.php |
cn (for Chinese) or en (for English) |
cfg_soft_lang |
Can also be used by some specific frontend tags to determine the language of dynamic content generated by Dede. |
The most important distinction:
cfg_soft_lang= Admin Panel Languagecfg_lang= Public Website Language
You can have your admin panel in English (cfg_soft_lang = 'en') while your public website is in Chinese (cfg_lang = 'cn'), or vice-versa.
Common Issues and How to Fix Them
Problems with cfg_soft_lang usually manifest as garbled text (mojibake) or incorrect language in the admin panel.
Problem 1: Admin Panel Shows Garbled Characters (e.g., or )
This almost always means a mismatch between the cfg_soft_lang setting and the actual encoding of the language files, or a server-side encoding issue.
Solution:
-
Check the Value in
common.inc.php: Open/data/common.inc.phpand find the line:$cfg_soft_lang = 'utf-8';
Ensure it is set to
utf-8. This is the correct setting for modern systems. -
Check File Encoding: Use a code editor (like VS Code, Notepad++, or Sublime Text) to check the encoding of the language files in the
/dede/lang/directory. The files (e.g.,utf8.inc.php) should be saved as UTF-8 without BOM. If they are saved with a different encoding (like GBK or with a BOM), it will cause garbled text. You may need to re-save them in the correct format. -
Check Database Connection: The database connection character set in
/data/common.inc.phpmust also match.$cfg_db_language = 'utf8'; // This is the standard for UTF-8
Ensure this is set correctly.
Problem 2: How to Change the Admin Panel Language
Dedecms primarily supports Chinese and English out-of-the-box. To switch between them:
-
Locate Language Files: Go to the
/dede/lang/directory. You will see files likegbk.inc.phpandutf8.inc.php. Theutf8.inc.phpfile contains the English translations. -
Edit the Language File: Open the
utf8.inc.phpfile. You will see an array mapping Chinese text to English text.// From utf8.inc.php $lang['msg_main'] = 'DedeCms V5.7 Sp2 English'; $lang['msg_lost'] = 'Lost Password'; $lang['msg_logout'] = 'Logout'; // ... and so on
-
Change the Configuration: To switch the admin panel to English, you need to make the system load the
utf8.inc.phpfile instead of the default Chinese one. This is often done by a setting in the admin panel itself.- Log in to your Dedecms admin panel.
- Go to 系统 (System) -> 系统基本参数 (System Basic Settings).
- Look for a setting related to "软件界面语言" (Software Interface Language).
- Change its value from
cn(orgbk) toen(orutf8). - Save the changes.
If this setting doesn't exist or doesn't work, you may need to manually edit the core files or the
common.inc.phpfile to point to the correct language file, which is a more advanced operation.
Summary
cfg_soft_langis the backend admin panel language setting.- Its default and most common value is
utf-8. - It is defined in
/data/common.inc.php. - It is different from
cfg_lang, which controls the public website language. - If you see garbled text in the admin panel, check that
cfg_soft_langis set toutf-8and that your language files are also saved in UTF-8 without BOM.
