Class CommonLabelService
In: lib/design_api.rb
Parent: DesignSubService

Design Web サービスでフレームワークの多言語対応のための翻訳を扱う API を実装する。

Methods

export   import  

Public Instance methods

book として与えられるデータで po_messages および po_translations を置き換える。

[Source]

     # File lib/design_api.rb, line 653
653:   def export(book)
654:     hash = Language.to_h
655:     mids = []
656:     tids = []
657:     book.main_sheet.common_labels.each do |common_label|
658:       message_class = common_label.type.constantize
659:       msgid         = common_label.msgid
660:       msgid_plural  = common_label.msgid_plural
661:       msgid_n       = common_label.msgid_n
662:       po_message = message_class.find_by_msgid(msgid)
663:       unless (po_message &&
664:               po_message.msgid_plural == msgid_plural &&
665:               po_message.msgid_n      == msgid_n)
666:         # added newly msgid.
667:         po_message = message_class.create!(:domain_id    => book.client_identifier_y,
668:                                            :msgctxt      => "",
669:                                            :msgid        => msgid,
670:                                            :msgid_plural => msgid_plural,
671:                                            :msgid_n      => msgid_n)
672:       end
673:       mids << po_message.id
674:       # update po_messages.
675:       common_label.common_values.each do |value|
676:         klass = "PoTranslation#{hash[value.language_id].to_s.camelize}".constantize
677:         if po_translation = klass.find_by_po_message_id(po_message.id)
678:           # update the existing msgstr.
679:           po_translation.msgstr = value.common_value
680:           po_translation.save!
681:         else
682:           # added newly msgstr.
683:           po_translation = klass.create!(:domain_id => book.client_identifier_y,
684:                                          :po_message_id => po_message.id,
685:                                          :msgstr => value.common_value)
686:         end
687:         tids << po_translation.id
688:       end
689:     end
690:     emids = PoMessage.find(:all, :conditions => ["msgctxt <> ?", "Application|"], :order => "id").map(&:id)
691:     PoMessage.delete(emids - mids)
692:     etids = PoTranslation.find(:all, :conditions => {:po_message_id => emids}, :order => "id").map(&:id)
693:     PoTranslation.delete(etids - tids)
694:     return PoMessage.to_book.succeed
695:   end

フレームワークに関する po_messages および po_translations の情報を返す。

[Source]

     # File lib/design_api.rb, line 648
648:   def import(book)
649:     return PoMessage.to_book.succeed
650:   end

[Validate]