pfaffman
(Jay Pfaffman)
15 Marzo 2021, 7:43pm
1
Perché non posso avere una serializzazione zero in client.en.yml?
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:
C’è un motivo per non utilizzare PLURALIZATION_KEYS invece di ENGLISH_KEYS qui?
!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 sembra funzionare correttamente nel mio codice (che è rotto per almeno un altro motivo non rilevato dai miei test).
gerhard
(Gerhard Schlager)
16 Marzo 2021, 11:03am
2
Funziona perché il codice i18n ha un caso speciale per la chiave zero. Puoi continuare a usarla finché non hai intenzione di utilizzare una piattaforma di traduzione come Transifex o Crowdin. A meno che non sia cambiato qualcosa, queste piattaforme supportano solo le chiavi definite dall’Unicode, ovvero “one” e “other” per l’inglese. Quindi, tradurre la chiave “zero” non funzionerà, poiché quelle piattaforme la ignorano quando analizzano i file della locale inglese.
pfaffman
(Jay Pfaffman)
16 Marzo 2021, 12:21pm
3
Dann. Temo che abbia senso.
Grazie per la spiegazione.