Redmine의 메시지 종류별로 어미를 부가한다(Postgres·플러그인 대응)
5845 단어 Redmine
htps : // 이 m/료마_나가레/있어 ms/121이다 3d면 644b5f7368c
를 참조하십시오.
스크립트
redmine_add_message_suffix.sh
#!/bin/bash
#####################################################
# 環境依存値
DB_NAME=db_redmine
PG_USER=postgres
# プラグイン含めて
REDMINE_DIR=/opt/redmine
# 単独のYMLを指定する場合
LOCALE_FILE=/opt/redmine/config/locales/ja.yml
# メッセージの種別(ラベル名の先頭)ごとに語尾を定義
declare -A SUFFIX
SUFFIX["label"]="にょ"
SUFFIX["notice"]="みたいよ"
SUFFIX["error"]="らしいよ"
SUFFIX["field"]="にゅ"
SUFFIX["setting"]="ぴょ"
SUFFIX["permission"]="ゲマ"
SUFFIX["button"]="ナリ"
# 固定置換用
declare -A FIX_REP
FIX_REP["button_submit"]="目からビーム"
#####################################################
PID=$$
if [ "$1" == "RESET" ]; then
cat << EOS > /tmp/${PID}.sql
UPDATE settings
SET value=E'--- \n:custom_messages: {} \n'
WHERE name='plugin_redmine_message_customize'
EOS
else
IFS_BACKUP=$IFS
IFS=$'\n'
## 単一のファイルを書き替えたい場合はこっち
# declare -a LABELS=( $(grep -E '^ (label|notice|error|field|setting|permission|button)' ${LOCALE_FILE} | grep -v '|' | grep -v ':\s*$') )
## プラグインを含めて書き替えたい場合はこっち
declare -a LABELS=( $(grep -E '^ (label|notice|error|field|setting|permission|button)' $(find ${REDMINE_DIR} -name 'ja.yml') | grep -v '|' | grep -v ':\s*$' | awk -F': ' '{c="";for(i=2;i<=NF;i++) c=c $i": "; print c}' | sed -e 's/: $//g' ) )
for LABEL in ${LABELS[@]}
do
MSG_KEY=$(echo ${LABEL} | awk -F': ' '{print $1}' | sed -e 's/ //g' )
MSG_VALUE=$(echo ${LABEL} | awk -F': ' '{c="";for(i=2;i<=NF;i++) c=c $i": "; print c}' | sed -e 's/: $//g' | sed -e 's/\r//g' )
# 下のいずれでもない
REP_PTN=0
# 固定置換あり
if [ "${FIX_REP[${MSG_KEY}]}" != "" ]; then
REP_PTN=1
fi
# 句点、コロン、?のいずれかを含む
echo ${MSG_VALUE} | grep -E '(。|:|:|?)' > /dev/null
if [ $? -eq 0 -a "${REP_PTN}" == "0" ]; then
REP_PTN=2
fi
# ダブルクォートで終わる
echo ${MSG_VALUE} | grep -E '"$' > /dev/null
if [ $? -eq 0 -a "${REP_PTN}" == "0" ]; then
REP_PTN=3
fi
# シングルクォートで終わる
echo ${MSG_VALUE} | grep -E "'$" > /dev/null
if [ $? -eq 0 -a "${REP_PTN}" == "0" ]; then
REP_PTN=4
fi
PREFIX=$(echo ${MSG_KEY} | awk -F'_' '{print $1}' )
REPSTR=${SUFFIX[${PREFIX}]}
case "${REP_PTN}" in
"0" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/$/${REPSTR}/g") ;;
"1" ) MSG_VALUE=${FIX_REP[${MSG_KEY}]} ;;
"2" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/。/${REPSTR}。/g" | sed -e "s/:/${REPSTR}:/g" | sed -e "s/:/${REPSTR}:/g" | sed -e "s/?/${REPSTR}?/g") ;;
"3" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/\"$/${REPSTR}\"/g") ;;
"4" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/'$/${REPSTR}'/g") ;;
esac
MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/'/''/g")
MSG+=" ${MSG_KEY}: ${MSG_VALUE}\n"
done
cat << EOS > /tmp/${PID}.sql
UPDATE settings
SET value=E'--- \n:custom_messages: \n ja:\n${MSG}'
WHERE name='plugin_redmine_message_customize'
EOS
fi
IFS=$IFS_BACKUP
sudo su - ${PG_USER} -c "psql ${DB_NAME} -f /tmp/${PID}.sql"
rm -f /tmp/${PID}.sql
사용법
./redmine_add_message_suffix.sh
꼬리를 붙이는 것이 아니라, 고정으로 치환하고 싶은 경우는
FIX_REP
의 행을 카피해 늘려 주세요../redmine_add_message_suffix.sh RESET
결과
주의
Redmine plugins:
alm 1.5.3
full_text_search 1.0.4
group_watchers 0.0.1
lac 1.5.4
lad 1.5.5
levm 2.8.0
lgc 4.1.5
lgc_pro 4.1.5
lpt 1.2.12
lychee_easy_assigned_user 1.0.9
lychee_issue_board 3.7.5
lychee_issue_set 1.7.3
lychee_issue_spread_sheet 1.0.7
lychee_issues_evm 2.8.0
lychee_profile_icon 1.1.1
lychee_project_view 1.2.12
lychee_status_color 1.0.5
lychee_version_start_date 1.0.9
lychee_workdays 1.0.6
redmine_absolute_dates 0.0.4
redmine_banner 0.2.1
redmine_code_review 1.0.0
redmine_issue_templates 0.3.5
redmine_jstoolbar_ext 0.2.1
redmine_jstoolbar_ext_buttons 0.2.1
redmine_message_customize
redmine_persist_wfmt 2.0.1
redmine_vividtone_my_page_blocks 2017/07/05
redmine_wiki_extensions 0.9.0
redmine_wiki_index_tree_view 0.0.1
redmine_wiki_lists 0.0.9
redmine_wiki_page_tree 0.0.2
redmine_work_time 0.4.0
redmine_xls_export 0.2.1.t11
view_customize 2.3.0
Reference
이 문제에 관하여(Redmine의 메시지 종류별로 어미를 부가한다(Postgres·플러그인 대응)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryouma_nagare/items/dc240332693617e2e3ce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)