pfaffman
(Jay Pfaffman)
15 مارس 2021، 7:43م
1
لماذا لا يمكنني استخدام تسلسل zero في ملف 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:
هل هناك سبب لعدم استخدام 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ص
2
تعمل لأن كود i18n يحتوي على حالة خاصة لمفتاح zero. يمكنك الاستمرار في استخدامه طالما أنك لا تنوي استخدام منصة ترجمة مثل Transifex أو Crowdin. ما لم يحدث تغيير، فإنها تدعم فقط المفاتيح المحددة بواسطة Unicode وهي “one” و “other” للغة الإنجليزية. لذا، لن تعمل ترجمة مفتاح “zero” لأن هذه المنصات تتجاهله عند تحليل ملفات اللغة الإنجليزية.
pfaffman
(Jay Pfaffman)
16 مارس 2021، 12:21م
3
يا له من أمر مؤسف. أخشى أن هذا منطقي.
شكرًا لك على الشرح.