Redmineの言語を切り替える際に、わざわざ個人設定画面に遷移するのは面倒なので、View Customize Pluginを使って、トップメニューに言語切り替えリンクを追加してみました。
Redmine 4.1で追加された、MyAccountのAPIを使用します。
make /my/account endpoint accessible through API
https://redmine.org/issues/31399
Redmine Rest API(MyAccount)
https://www.redmine.org/projects/redmine/wiki/Rest_MyAccount
/*
パスのパターン:.*^(?!/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 に1行(api.language @user.language)を追加します。
api.api_key @user.api_key
+ api.language @user.language
render_api_custom_values @user.visible_custom_field_values, api