Skip to content

Commit ccb55e9

Browse files
authored
Merge pull request #35 from ishikawa999/develop
Merge Develop
2 parents 98b45dd + ccc850b commit ccb55e9

File tree

7 files changed

+67
-12
lines changed

7 files changed

+67
-12
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ $ cp plugins/redmine_message_customize/35_change_load_order_locales.rb config/in
1212
$ # redmine restart
1313
```
1414

15-
:warning: In order to customize messages of other plugins, it is necessary to copy redmine_message_customize/35_change_load_order_locales.rb into redmine/config/initializers.
15+
:warning: In order to customize messages of other plugins, it is necessary to copy redmine_message_customize/35_change_load_order_locales.rb into redmine/config/initializers.
16+
If you don't have redmine/config/initializers/35_change_load_order_locales.rb, you can customize only messages other than plugins.
1617

1718
## Usage
1819

app/views/custom_message_settings/edit.html.erb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,14 @@
1212
<% if @setting.errors.any? %>
1313
<%= error_messages_for(@setting) %>
1414
<% end %>
15-
<p class='toggle-enable'>
15+
<div class='message-customize-menu'>
1616
<%= link_to (@setting.enabled? ? l(:label_disable_customize) : l(:label_enable_customize)), toggle_enabled_custom_message_settings_path, method: :post, class: 'icon icon-settings' %> /
1717
<%= open_default_messages_window_link(@lang) %>
18-
</p>
18+
19+
<% unless MessageCustomize::Locale.customizable_plugin_messages? %>
20+
<p>
21+
<%= l(:text_unable_to_customize_plugin_messages) %>
22+
</p>
23+
<% end %>
24+
</div>
1925
<%= render_tabs (@setting.errors.any? ? [] : [{name: 'normal', partial: 'normal_tab', label: 'label_normal_tab'}]) + [{name: 'yaml', partial: 'yaml_tab', label: 'label_yaml_tab'}] %>

assets/stylesheets/custom_messages.css

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@
3636
color: white;
3737
}
3838

39-
p.toggle-enable {
39+
div.message-customize-menu {
4040
text-align: right;
41+
}
42+
div.message-customize-menu p {
43+
color: gray;
44+
font-size: 10px;
45+
margin: 5px 0px;
4146
}

config/locales/en.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ en:
88
text_placeholder_choose_key: Please select the message you want to change.
99
text_description_of_search_box: You can enter search terms in the search box to narrow down the results.
1010
text_for_your_reference: If you do not know how to write, please refer to "%{value}".
11-
text_disabled_customize: Message customization by this plugin is disabled.
11+
text_disabled_customize: All message customizations are disabled.
12+
text_unable_to_customize_plugin_messages: Impossible to customize the messages of the plugins.
1213

1314
error_unused_keys: The keys not present in Redmine are used.
1415
error_unavailable_languages: The languages not present in Redmine are used.

config/locales/ja.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ ja:
88
text_placeholder_choose_key: 変更したい文言を選択してください。
99
text_description_of_search_box: 検索ボックスにキーワードを入力することで、選択肢を絞り込むことが出来ます。
1010
text_for_your_reference: "もし書き方がわからない場合は、「%{value}」が参考になるはずです。"
11-
text_disabled_customize: このプラグインによるメッセージのカスタマイズは無効になっています。
11+
text_disabled_customize: メッセージのカスタマイズはすべて無効になっています。
12+
text_unable_to_customize_plugin_messages: Redmineに入っているプラグインのメッセージはカスタマイズできません。
1213

1314
error_unused_keys: Redmineに存在しないキーが利用されています。
1415
error_unavailable_languages: Redmineで利用できない言語が利用されています。

lib/message_customize/locale.rb

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module MessageCustomize
22
module Locale
33
@available_messages = {}
4+
CHANGE_LOAD_ORDER_LOCALES_FILE_PATH = 'config/initializers/35_change_load_order_locales.rb'
45

56
class << self
67
def available_locales
@@ -11,7 +12,16 @@ def reload!(*languages)
1112
available_languages = self.find_language(languages.flatten)
1213
paths = I18n.load_path.select {|path| available_languages.include?(File.basename(path, '.*').to_s)}
1314
I18n.backend.load_translations(paths)
14-
available_languages.each{|lang| @available_messages[:"#{lang}"] = I18n.backend.send(:translations)[:"#{lang}"] || {}}
15+
if customizable_plugin_messages?
16+
available_languages.each{|lang| @available_messages[:"#{lang}"] = I18n.backend.send(:translations)[:"#{lang}"] || {}}
17+
else
18+
available_languages.each do |lang|
19+
redmine_root_locale_path = Rails.root.join('config', 'locales', "#{lang}.yml")
20+
if File.exist?(redmine_root_locale_path)
21+
@available_messages[:"#{lang}"] = (I18n.backend.send(:load_yml, redmine_root_locale_path)[lang] || {}).deep_symbolize_keys
22+
end
23+
end
24+
end
1525
end
1626

1727
def find_language(language=nil)
@@ -29,6 +39,10 @@ def available_messages(lang)
2939
self.reload!(lang) if @available_messages[lang].blank?
3040
@available_messages[lang] || {}
3141
end
42+
43+
def customizable_plugin_messages?
44+
@customizable_plugin_messages ||= File.exist?(Rails.root.join(CHANGE_LOAD_ORDER_LOCALES_FILE_PATH))
45+
end
3246
end
3347
end
3448
end

test/unit/lib/message_customize/locale_test.rb

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,44 @@ def test_available_locales
3030
assert_equal locales.uniq.sort.map(&:to_sym), MessageCustomize::Locale.available_locales
3131
end
3232

33-
def test_available_messages_should_return_translations
33+
def test_available_messages_if_customizable_plugin_messages
34+
MessageCustomize::Locale.stubs(:customizable_plugin_messages?).returns(true)
35+
3436
# Reset @available_messages
3537
MessageCustomize::Locale.instance_variable_set(:@available_messages, {})
3638

3739
en_available_messages = MessageCustomize::Locale.available_messages('en')
3840
assert_equal 'am', en_available_messages[:time][:am]
41+
assert_equal 'Message customize', en_available_messages[:label_custom_messages] # plugin messages
3942
assert_equal [:en], MessageCustomize::Locale.instance_variable_get(:@available_messages).keys
4043

41-
# Language 'ar' not loaded
42-
ar_available_messages = MessageCustomize::Locale.available_messages('ar')
43-
assert_equal "صباحا", ar_available_messages[:time][:am]
44-
assert_equal [:en, :ar], MessageCustomize::Locale.instance_variable_get(:@available_messages).keys
44+
# Language 'ja' not loaded
45+
ja_available_messages = MessageCustomize::Locale.available_messages('ja')
46+
assert_equal "午前", ja_available_messages[:time][:am]
47+
assert_equal 'メッセージのカスタマイズ', ja_available_messages[:label_custom_messages] # plugin messages
48+
assert_equal [:en, :ja], MessageCustomize::Locale.instance_variable_get(:@available_messages).keys
49+
end
50+
51+
def test_available_messages_should_return_messages_without_plugin_messages_if_not_customizable_plugin_messages
52+
MessageCustomize::Locale.stubs(:customizable_plugin_messages?).returns(false)
53+
54+
# Reset @available_messages
55+
MessageCustomize::Locale.instance_variable_set(:@available_messages, {})
56+
57+
en_available_messages = MessageCustomize::Locale.available_messages('en')
58+
assert_equal 'am', en_available_messages[:time][:am]
59+
assert_nil en_available_messages[:label_custom_messages] # plugin messages
60+
assert_equal [:en], MessageCustomize::Locale.instance_variable_get(:@available_messages).keys
61+
62+
# Language 'ja' not loaded
63+
ja_available_messages = MessageCustomize::Locale.available_messages('ja')
64+
assert_equal "午前", ja_available_messages[:time][:am]
65+
assert_nil ja_available_messages[:label_custom_messages] # plugin messages
66+
assert_equal [:en, :ja], MessageCustomize::Locale.instance_variable_get(:@available_messages).keys
67+
end
68+
69+
def test_customizable_plugin_messages?
70+
expect = File.exist?(Rails.root.join(MessageCustomize::Locale::CHANGE_LOAD_ORDER_LOCALES_FILE_PATH))
71+
assert_equal expect, MessageCustomize::Locale.customizable_plugin_messages?
4572
end
4673
end

0 commit comments

Comments
 (0)