head_music 8.1.0 → 8.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf272cf25921ce289e80bbbfbb8566178b541ce8cdc4711feb269cb7863f0dd7
4
- data.tar.gz: 35d4beef32b86a25376136dbaae5f2749ca13b22e2d359a6e83297fadfb6fca0
3
+ metadata.gz: 1d1ca0a4ee8274a955259afdd1c915e09fba454522157a1ef687f8760ec064ed
4
+ data.tar.gz: 902a3b6f27f50b2a8f354adb22cbcc460798f1916f760f475e9f6c1d6583cc93
5
5
  SHA512:
6
- metadata.gz: 169bdae2dc9223bee17d1dc5cb67baa2b3ea9c80a6a83df055e0ed1707b57ab14834b6193c8c2a03cb317532f243ea2f805a1be981987c5885ca88e08c725c73
7
- data.tar.gz: 5bea0f2ff5883d4fd8b6d37bdcf1ea49d19469eb23b5da3f733e57524dbbb6299027f9a287b5e2d291f7813429088ba409d0fd045c80da66f482ab49d94ef472
6
+ metadata.gz: e80f4d2337cabdf0cedd69bc0cb9ad54e73bd0f1a9774ccbfc2bcbe70b28d90899ff55debe9917dc5f62776e90ee7d09fd28530ea10fa28892ffc46e0d430c56
7
+ data.tar.gz: 3d278d05d015f73e25633e3de2ea47fc90c8d8c8377bd4dff6ba13772039e8cce6824288a98e05e2cf31080dfac4f3b8010d84895dc62f24080699574958f8df
@@ -291,6 +291,7 @@ de:
291
291
  scale: Tonleiter
292
292
  scale_degree: Tonleiterstufe
293
293
  scale_type: Tonleiterart
294
+ solfege: Solfège
294
295
  solmization: Solmisation
295
296
  sonority: Klangfarbe
296
297
  spelling: Schreibweise
@@ -286,6 +286,7 @@ es:
286
286
  scale: escala
287
287
  scale_degree: grado de la escala
288
288
  scale_type: tipo de escala
289
+ solfege: solfeo
289
290
  solmization: solmización
290
291
  sonority: sonoridad
291
292
  spelling: notación
@@ -292,6 +292,7 @@ fr:
292
292
  scale: gamme
293
293
  scale_degree: degré de la gamme
294
294
  scale_type: type de gamme
295
+ solfege: solfège
295
296
  solmization: solmisation
296
297
  sonority: sonorité
297
298
  spelling: notation
@@ -284,6 +284,7 @@ it:
284
284
  scale: scala
285
285
  scale_degree: grado della scala
286
286
  scale_type: tipo di scala
287
+ solfege: solfeggio
287
288
  solmization: solmizzazione
288
289
  sonority: sonorità
289
290
  spelling: notazione
@@ -232,6 +232,7 @@ ru:
232
232
  scale: гамма
233
233
  scale_degree: ступень гаммы
234
234
  scale_type: тип гаммы
235
+ solfege: сольфеджио
235
236
  solmization: сольмизация
236
237
  sonority: звучность
237
238
  spelling: обозначение
@@ -1,8 +1,7 @@
1
1
  # A module for music rudiments
2
2
  module HeadMusic::Rudiment; end
3
3
 
4
- # A scale degree is a number indicating the ordinality of the spelling in the key signature.
5
- # TODO: Rewrite to accept a tonal_center and a scale type.
4
+ # A solmization is the rendering of scale degrees as syllables.
6
5
  class HeadMusic::Rudiment::Solmization
7
6
  include HeadMusic::Named
8
7
 
@@ -34,20 +33,27 @@ class HeadMusic::Rudiment::Solmization
34
33
  def record_for_name(name)
35
34
  key = HeadMusic::Utilities::HashKey.for(name)
36
35
  RECORDS.detect do |record|
37
- name_strings = record[:localized_names].map { |localized_name| localized_name[:name] }
36
+ name_strings = [record[:name]] + (record[:aliases] || []) + translation_aliases
38
37
  name_keys = name_strings.map { |name_string| HeadMusic::Utilities::HashKey.for(name_string) }
39
38
  name_keys.include?(key)
40
39
  end
41
40
  end
42
41
 
43
42
  def initialize_data_from_record(record)
43
+ self.name = record[:name]
44
44
  @syllables = record[:syllables]
45
- initialize_localized_names(record[:localized_names])
46
45
  end
47
46
 
48
- def initialize_localized_names(list)
49
- @localized_names = (list || []).map do |name_attributes|
50
- HeadMusic::Named::LocalizedName.new(**name_attributes.slice(:name, :locale_code, :abbreviation))
47
+ def translation_aliases
48
+ @translation_aliases ||= load_translation_aliases
49
+ end
50
+
51
+ def load_translation_aliases
52
+ aliases = []
53
+ I18n.config.available_locales.each do |locale|
54
+ translation = I18n.translate("head_music.rudiments.solfege", locale: locale, default: nil)
55
+ aliases << translation if translation && translation != 'solfege'
51
56
  end
57
+ aliases.compact.uniq
52
58
  end
53
59
  end
@@ -1,5 +1,6 @@
1
1
  ---
2
- - :syllables:
2
+ - :name: solfège
3
+ :syllables:
3
4
  - do
4
5
  - re
5
6
  - mi
@@ -7,14 +8,7 @@
7
8
  - sol
8
9
  - la
9
10
  - ti
10
- :localized_names:
11
- - :name: solfège
12
- - :name: solfège
13
- :locale_code: en
14
- - :name: solfège
15
- :locale_code: fr
16
- - :name: solfeggio
17
- :locale_code: it
18
- - :name: sol-fa
19
- - :name: solfa
20
- - :name: solfeo
11
+ :aliases:
12
+ - solfege
13
+ - sol-fa
14
+ - solfa
@@ -1,3 +1,3 @@
1
1
  module HeadMusic
2
- VERSION = "8.1.0"
2
+ VERSION = "8.1.1"
3
3
  end
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Test the translation loading functionality
4
+
5
+ # First test - German translation of solfege
6
+ result = system('bundle exec ruby -e "require \'head_music\'; puts HeadMusic::Rudiment::Solmization.get(\'Solfège\')&.name || \'nil\'"')
7
+ puts "German 'Solfège' test: #{result}"
8
+
9
+ # Second test - Italian translation
10
+ result = system('bundle exec ruby -e "require \'head_music\'; puts HeadMusic::Rudiment::Solmization.get(\'solfeggio\')&.name || \'nil\'"')
11
+ puts "Italian 'solfeggio' test: #{result}"
12
+
13
+ # Third test - Russian translation
14
+ result = system('bundle exec ruby -e "require \'head_music\'; puts HeadMusic::Rudiment::Solmization.get(\'сольфеджио\')&.name || \'nil\'"')
15
+ puts "Russian 'сольфеджио' test: #{result}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: head_music
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.1.0
4
+ version: 8.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Head
@@ -225,6 +225,7 @@ files:
225
225
  - lib/head_music/style/mark.rb
226
226
  - lib/head_music/utilities/hash_key.rb
227
227
  - lib/head_music/version.rb
228
+ - test_translations.rb
228
229
  homepage: https://github.com/roberthead/head_music
229
230
  licenses:
230
231
  - MIT