#23 ✓resolved
mail (at arcasys)

interpolate_with_deprecated_syntax

Reported by mail (at arcasys) | April 1st, 2009 @ 10:41 AM

interpolate_with_deprecated_syntax currently replaces %d and %s with {{count}} and {{value}} respectively and issues a warning. This behaviuor doesn't solve the problem the sysntax change was intended for. Instead, interpolate must ignore %d and %s, i.e. let them pass unchanged. There can still be a compile warning.

Maybe I missed how I can force interpolate to use interpolate_without_deprecated_syntax? In that case I'd appreciate a hint.

Hans

Comments and changes to this ticket

  • Sven Fuchs

    Sven Fuchs July 5th, 2009 @ 10:55 PM

    Hi Hans,

    can you explain further why you think "behaviuor doesn't solve the problem the sysntax change was intended for"? Because I think it does :) People were previously using %s and %d as interpolation variables so they'll expect the variables count and value to be interpolated to these, no?

    I also don't really get your last question. Do you mean how you could bypass interpolate_without_deprecated_syntax?

  • mail (at arcasys)

    mail (at arcasys) July 7th, 2009 @ 08:40 AM

    Hi Sven,

    Before I answer your question I should clarify if I'm understanding 'deprecated' in the
    right way:
    In my understanding there can be several reasons to deprecate a syntax element:
    either there's a better or more understandable element
    or the old element was not sufficient for all use cases
    or the old element gets in the way of something.
    In the first two cases the old element could still be used and you're right to
    offer compatibility for the deprecated element.

    However, in the third case the old element made problems and must not be
    supported anymore. I'm not actually aware if there must be some time between
    deprecating an element and declaring it as unsupported.
    In my opinion 'deprecated' means; don't use this element any more because
    it has been replaced by something more adequate or because it doesn't work as
    expected or it is causing problems (hence the warning!)

    To answer your question:
    Still using %d (or %s, I havn't seen a case here but I'm sure there is one) gets in the
    way of formatting and localizing times and dates, e.g. in

       @start_date = params[:p_date] ? params[:p_date] : Date::today.strftime(t('date.formats.default'))
    
    date.formats.default delivers the string
    @@@ %Y-%m-%d @@@ leading to the following error when translate is applied:
    interpolation argument count missing in "%Y-%m-{{count}}"
    
    I think %d and %s were deprecated to have a clear distinction between variables used
    in localization strings and format elements like %d and %s.
    Unfortunately trying to keep backward compatibility leads to the errors.

    My last question simply referred to a way to bypass the %d/%s substitution which
    I commented out to solve my problem.

    Hans

  • Sven Fuchs

    Sven Fuchs July 7th, 2009 @ 09:55 AM

    • State changed from “new” to “open”

    Hi Hans, thanks for the detailled explanation. I agree with your definition of "deprecation" and I think it perfectly applies to this case. I don't really see a real conflict between the "old and new way" so I'd say the second case applies: the old element was not sufficient for proper I18n.

    So, from what I understand this is just a bug. This line:

    http://github.com/rails/rails/blob/0d3c5f0a822cd1b6029b5f619774b779...

    probably should be:

      return string unless string.is_a?(String) && !values.empty?
    

    Right? So, it should assume you want the backend to interpolate values to the string only when you have passed values to the backend. (We've done some similar fix in the backend IIRC.) In your example you would not pass any values so the neither the interpolation nor the deprectation would kick in.

    Btw is there a reason why you do not use #localize for this?

  • mail (at arcasys)

    mail (at arcasys) July 7th, 2009 @ 10:24 PM

    Hi Sven, thanks for the fast reply.

    "so I'd say the second case applies" If you like. I thought about a jusification of my assessment but
    this might be much more sophisticated than important. So you're right.

    "Right?" Right. It took me a while to understand your approach but it appears to work fine.

    "Btw is there a reason why you do not use #localize for this?" I'd like to say because I hadn't found the bug then :-)
    But no, I've just missed some of the old style occurances.
    And #localize had the same problem because it finally uses the same function.
    Finally there's a case where you can't substitute translate with localize:

    Date::strptime(string,(t('date.formats.default')))
    
    unless you tell me better.

    Thanks,
    Hans

  • Sven Fuchs

    Sven Fuchs July 8th, 2009 @ 07:06 PM

    • State changed from “open” to “resolved”

    Alright, I've added a patch and ticket to Rails' lighthouse:

    https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets...

    Maybe you wanna +1 on that

    Closing this ticket, please reopen if the problem remains

  • mail (at arcasys)

    mail (at arcasys) July 20th, 2009 @ 01:03 PM

    Unfortunately I noticed there's still a problem:
    When used in a view the follwing happens:

    l(a_date, :format => 'date.formats.default')
    
    returns the string date.format.default instead of the formatted string

    Using translate instead of localize like

    a_date.strftime(t('date.formats.default'))
    
    also fails because 'values' is not empty in this case - the hash contains
    a string 'raised' out of some reason - so your fix doesn't work anymore

    Regards,
    Hans

  • slotxo

    slotxo June 3rd, 2021 @ 12:36 PM

    เทคนิคสล็อต มากกว่าที่เราเห็น สล็อต xo หรือเคยได้ยินมายังไงล่ะ northbristol ซึ่งต้องเป็นคนที่เข้ามาเดิมพัน mavoixtavoie เท่านั้น herbalpertpresents ถึงจะทราบในข้อดีส่วนนี้ reeffutures2018 ความจริงแล้วสล็อต gclub ออนไลน์เป็นเกมที่ต้องอาศัยการคำนวณเข้าามาช่วยนิดหน่อย

  • slotxo

    slotxo June 9th, 2021 @ 12:18 PM

    joker gaming รวมกับการวางแผนการเงินในการ joker โปร ลงเดิมพันของนัก สมัคร joker เดิมพันด้วย หากจะลอง เทคนิคสล็อต สังเกตในสล็อตออนไลน์ slot joker จะเห็นได้ว่าเมื่อ

  • slotxo

    slotxo June 17th, 2021 @ 12:18 PM

    AMBBET เมื่อเราเล่นเกมสล็อตชนะ ambbet โปร หรือได้โบนัสตามเงื่อนไข AMB ของคาสิโนออนไลน์ สมัคร amb บอกเลยว่า บาคาร่า เงินทุกบาทที่ได้จากการ เกมสล็อต เล่น เว็บคาสิโน สามารถเอาออกมาใช้ได้จริง เกมคาสิโน สำหรับการเล่นนี้

  • slotxo

    slotxo June 18th, 2021 @ 12:24 PM

    pg สล็อตเป็นเกม โปร pg ที่ใครก็สามารถ สมัคร pg เข้ามาหาความสนุก PG SLOT และเพลิดเพลินกับบริการสุดประทับใจได้ ทดลองเล่น pg 24 ชั่วโมง เทคนิคสล็อต ยิ่งในปัจจุบัน สล็อต PG ที่การเข้าถึงอินเตอร์เน็ต

  • slotxo

    slotxo June 23rd, 2021 @ 01:29 PM

    northbristol วงล้อหมุนไป mavoixtavoie แล้วจะปรากฏรูปสัญลักษณ์ herbalpertpresents ต่าง ๆ ขึ้นมาในแต่ละรอบ reeffutures2018 คุณทราบไหมว่าสล็อตออนไลน์ xopg.net/ สามารถหมุนให้สัญลักษณ์แตกต่างกันได้เป็นร้อยรอบโดยไม่ต้องมีรอบซ้ำเลย essentialsforasoul แต่หากสังเกตดี ๆ จะเห็นได้ว่าในการหมุนแต่ละครั้งมักจะออกซ้ำกันบ่อย gclub เพราะแบบนี้เองที่ทำให้ท่านกำลังได้รู้ถึงจุดอ่อนของเจ้าสล็อตออนไลน์เข้าแล้ว

  • slotxo

    slotxo June 24th, 2021 @ 02:08 PM

    joker gaming รวมกับการวางแผนการเงินในการ joker โปร ลงเดิมพันของนัก สมัคร joker เดิมพันด้วย หากจะลอง เทคนิคสล็อต สังเกตในสล็อตออนไลน์ slot joker จะเห็นได้ว่าเมื่อ

  • slotxo

    slotxo June 29th, 2021 @ 11:13 AM

    AMBBET เมื่อเราเล่นเกมสล็อตชนะ ambbet โปร หรือได้โบนัสตามเงื่อนไข AMB ของคาสิโนออนไลน์ สมัคร amb บอกเลยว่า บาคาร่า เงินทุกบาทที่ได้จากการ เกมสล็อต เล่น เว็บคาสิโน สามารถเอาออกมาใช้ได้จริง เกมคาสิโน สำหรับการเล่นนี้

  • slotxo

    slotxo June 30th, 2021 @ 11:46 AM

    superslot ซึ่งเมื่อเริ่มจับจังหวะของเจ้าสล็อตได้ โปร 100 ท่านจะเริ่มสนุกกักมมากขึ้น สมัคร super และ ทดลองเล่นสล็อต จะเข้าใกล้ เทคนิคสล็อต ความสำเร็จในการเดิมพัน slotsuper มากขึ้นเรื่อย ๆ gclub แบบที่ยิ่งเล่นยิ่งมันแล้วหลังจากนั้นท่านจะ xopg.net/ ต้องเลือกหรือตัดสินใจอีกครั้งว่า

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

Repository for collecting Locale data for Ruby on Rails I18n as well as other interesting, Rails related I18n stuff

Pages