You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中修改哈萨克语链接的语言代码(从kk改为kz)

解决Django国际化中哈萨克语从/kk切换为/kz路径的方案

没问题,我之前在项目里刚好做过类似的Django国际化语言代码映射调整,下面一步步教你实现从/kk切换到/kz的效果,同时保留原有的哈萨克语翻译文件:

1. 更新项目语言核心配置(settings.py)

首先要让Django认可kz作为哈萨克语的别名,同时关联到标准ISO代码kk的翻译资源:

# settings.py
from django.conf.global_settings import LANGUAGES as DEFAULT_LANGUAGES

# 配置前端显示的语言选项,把kz加入列表
LANGUAGES = [
    ('kz', 'Қазақша'),  # 哈萨克语的显示名称
    # 保留其他你需要的语言
    ('en', 'English'),
    ('zh-hans', '简体中文'),
]

# 关键:设置语言代码别名,让Django把kz识别为标准的kk
LANGUAGE_CODE_ALIASES = {
    'kz': 'kk',
}

# 确保语言文件路径正确,指向你存放.po/.mo翻译文件的目录
LOCALE_PATHS = [
    BASE_DIR / 'locale',
]

注意:LANGUAGE_CODE_ALIASES是Django 3.0及以上版本才支持的特性,如果你的项目用的是更低版本,看后面的兼容方案。

2. 适配URL路由的语言前缀

如果你的项目用了i18n_patterns生成带语言前缀的URL,现在直接就能支持/kz路径了——因为我们已经在LANGUAGES里添加了kz选项,别名映射也会自动把kz指向kk的翻译。

举个路由示例:

# urls.py
from django.conf.urls.i18n import i18n_patterns
from django.urls import path
from . import views

urlpatterns = i18n_patterns(
    path('', views.home, name='home'),
    # 其他业务路由...
)

现在访问www.mydomain.com/kz,会自动加载kk的翻译文件,同时URL保持/kz的形式。

3. 低版本Django兼容方案(<3.0)

如果你的Django版本低于3.0,没有LANGUAGE_CODE_ALIASES,可以自定义中间件来处理语言代码替换:

先创建中间件文件,比如yourapp/middleware.py:

# middleware.py
from django.utils.deprecation import MiddlewareMixin
from django.utils.translation import activate, get_language

class LanguageAliasMiddleware(MiddlewareMixin):
    def process_request(self, request):
        current_lang = get_language()
        if current_lang == 'kz':
            # 激活标准的kk语言
            activate('kk')
            request.LANGUAGE_CODE = 'kk'

然后在settings里把这个中间件加到LocaleMiddleware之后:

# settings.py
MIDDLEWARE = [
    # 其他中间件...
    'django.middleware.locale.LocaleMiddleware',
    'yourapp.middleware.LanguageAliasMiddleware',  # 替换成你的app名称
]

同样别忘了在LANGUAGES里添加('kz', 'Қазақша'),这样语言切换控件会显示kz选项。

4. 更新前端语言切换控件(如果有)

如果你的模板里有语言切换的链接或下拉框,把原来指向kk的选项改成kz,比如:

<!-- 模板中的语言切换链接示例 -->
<a href="{% url 'home' %}?language=kz">Қазақша</a>
<!-- 或者用i18n的url标签生成带语言前缀的链接 -->
<a href="{% url 'home' %}" hreflang="kz">Қазақша</a>

5. 验证效果

  • 访问/kz路径,确认页面内容和原来/kk的哈萨克语内容一致
  • 测试语言切换功能,切换到哈萨克语后URL保持/kz前缀
  • 检查模板中的{% trans %}标签是否正常输出哈萨克语翻译

这样就完美实现了用户习惯的/kz路径,同时不影响原有的哈萨克语翻译资源使用。

内容的提问来源于stack exchange,提问作者alru administrator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:21:38