pfaffman
(Jay Pfaffman)
15. März 2021 um 19:43
1
Warum kann ich in client.en.yml keine zero-Serialisierung verwenden?
class LocaleFileValidator
# Format: "banned phrase" => "recommendation"
BANNED_PHRASES = { "color scheme" => "color palette", "private message" => "personal message" }
ERROR_MESSAGES = {
invalid_relative_links:
"The following keys have relative links, but do not start with %{base_url} or %{base_path}:",
invalid_relative_image_sources:
"The following keys have relative image sources, but do not start with %{base_url} or %{base_path}:",
invalid_interpolation_key_format:
"The following keys use {{key}} instead of %{key} for interpolation keys:",
wrong_pluralization_keys:
"Pluralized strings must have only the sub-keys 'one' and 'other'.\nThe following keys have missing or additional keys:",
invalid_file_format:
"The file is not a valid YAML format or does not contain a valid locale structure.",
invalid_one_keys:
"The following keys contain the number 1 instead of the interpolation key %{count}:",
}.merge(
BANNED_PHRASES
.map do |banned, recommendation|
[
exit 1 if has_errors
end
end
class LocaleFileValidator
# Format: "banned phrase" => "recommendation"
BANNED_PHRASES = { "color scheme" => "color palette", "private message" => "personal message" }
ERROR_MESSAGES = {
invalid_relative_links:
"The following keys have relative links, but do not start with %{base_url} or %{base_path}:",
invalid_relative_image_sources:
"The following keys have relative image sources, but do not start with %{base_url} or %{base_path}:",
invalid_interpolation_key_format:
"The following keys use {{key}} instead of %{key} for interpolation keys:",
wrong_pluralization_keys:
"Pluralized strings must have only the sub-keys 'one' and 'other'.\nThe following keys have missing or additional keys:",
invalid_file_format:
"The file is not a valid YAML format or does not contain a valid locale structure.",
invalid_one_keys:
Gibt es einen Grund, hier nicht PLURALIZATION_KEYS statt ENGLISH_KEYS zu verwenden?
!EXEMPTED_DOUBLE_CURLY_BRACKET_KEYS.include?(key)
@errors[:invalid_interpolation_key_format] << key
end
BANNED_PHRASES.keys.each do |banned|
@errors["banned_phrase_#{banned}"] << key if value.downcase.include?(banned.downcase)
end
end
end
def each_pluralization(hash, parent_key = "", &block)
hash.each do |key, value|
if Hash === value
current_key = parent_key.empty? ? key : "#{parent_key}.#{key}"
each_pluralization(value, current_key, &block)
elsif PLURALIZATION_KEYS.include? key
yield(parent_key, hash)
end
end
end
Bei meinem Code scheint zero einwandfrei zu funktionieren (der allerdings aus mindestens einem anderen Grund defekt ist, der von meinen Tests nicht erkannt wurde).
gerhard
(Gerhard Schlager)
16. März 2021 um 11:03
2
Es funktioniert, weil der i18n-Code einen Sonderfall für den Schlüssel zero hat. Sie können ihn weiterhin verwenden, solange Sie keine Übersetzungsplattform wie Transifex oder Crowdin nutzen möchten. Soweit ich weiß, unterstützen diese Plattformen nur Schlüssel, die von Unicode definiert sind, nämlich „one
pfaffman
(Jay Pfaffman)
16. März 2021 um 12:21
3
Verdammt. Ich fürchte, das ergibt Sinn.
Danke für die Erklärung.