Redmine의 톱 메뉴에 언어 전환 링크 추가 (개인 설정 화면으로 전환하지 않고 언어 전환)

Redmine의 언어를 전환할 때 일부러 개인 설정 화면으로 전환하는 것은 번거롭기 때문에 View Customize Plugin을 사용하여 톱 메뉴에 언어 전환 링크를 추가해 보았습니다.

Redmine 4.1에서 추가된 MyAccount API를 사용합니다.

make/my/account endpoint accessible through API
h tps : // Red d Mine. 오 rg / 이스에 s / 31399

Redmine Rest API(MyAccount)
htps //w w. 어 d 미네. 오 rg / p 로지 cts / Red Mine / Uuki / Rest st_ Mikoko t
/*
パスのパターン:.*^(?!/login).*$
挿入位置:全てのページのヘッダ
種別:JavaScript
*/

$(function() {
    const apiKey = ViewCustomize.context.user.apiKey;
    const current_language = document.documentElement.lang.toLowerCase();
    if (current_language === "ja") {
        lang = "en";
        menutitle = "英語";
    } else if (current_language === "en") {
        lang = "ja";
        menutitle = "Japanese";
    }

    //トップメニューに言語切り替えリンクを追加
    if (!location.href.match('/my/account')) { //個人設定画面以外
        $('#loggedas').prepend('<li><a href="javascript:void(0)" id="languagechange">' + menutitle + '</a></li>');
    };

    //クリックしたら言語を切り替え
    $('#languagechange').click(function() {
        $.ajax({
            type: "PUT",
            url: '/my/account.json',
            headers: {
                'X-Redmine-API-Key': apiKey
            },
            dataType: "text",
            contentType: 'application/json',
            data: JSON.stringify({
                'user': {
                    "language": lang
                }
            })
        }).done(function() {
            window.location = location.href;
        })
    })
})

/app/views/my/account.api.rsb에 한 줄(api.language @user.language)을 추가합니다.
  api.api_key    @user.api_key
+ api.language   @user.language

  render_api_custom_values @user.visible_custom_field_values, api

좋은 웹페이지 즐겨찾기