pfaffman
(Jay Pfaffman)
15.Март.2021 19:43:40
1
Почему в client.en.yml нельзя использовать сериализацию zero?
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:
Есть ли причина не использовать PLURALIZATION_KEYS вместо ENGLISH_KEYS здесь?
!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
zero, похоже, работает нормально в моём коде (который, впрочем, сломан по крайней мере ещё по одной причине, которую не обнаружили мои тесты).
gerhard
(Gerhard Schlager)
16.Март.2021 11:03:46
2
Это работает, потому что в коде i18n есть специальное исключение для ключа zero. Вы можете продолжать его использовать, если не планируете использовать платформу перевода, такую как Transifex или Crowdin. Если ничего не изменилось, они поддерживают только ключи, определённые стандартом Unicode, — для английского языка это «one» и «other». Поэтому перевод ключа «zero» не сработает, так как эти платформы игнорируют его при парсинге файлов локали английского языка.
pfaffman
(Jay Pfaffman)
16.Март.2021 12:21:09
3
Черт. Боюсь, это имеет смысл.
Спасибо за объяснение.