# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# {0} - changeset id
CTL_AnnotationBar.action.showCommit=\u30ea\u30d3\u30b8\u30e7\u30f3{0}\u306e\u8868\u793a
CTL_AnnotationSubstitute = \u8a08\u7b97\u4e2d...
CTL_AnnotationFailed = \u4f7f\u7528\u4e0d\u53ef
CTL_MenuItem_HideAnnotations=\u6ce8\u91c8\u3092\u975e\u8868\u793a(&N)
CTL_MenuItem_ShowAnnotations=\u6ce8\u91c8\u3092\u8868\u793a(&N)
CTL_StatusBar_WaitFetchAnnotation = \u30b3\u30df\u30c3\u30c8\u30fb\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30d5\u30a7\u30c3\u30c1...
TT_Annotation = &lt;\u4e0d\u660e>
CTL_MenuItem_DiffToRevision = {0}\u3068{1}\u306e\u5dee\u5206
CTL_MenuItem_Revert = \u5909\u66f4\u5185\u5bb9\u3092\u5143\u306b\u623b\u3059...
CTL_MenuItem_ShowAnnotationsPrevious={0}\u306e\u6ce8\u91c8\u3092\u8868\u793a

CTL_MenuItem_CloseAnnotations = \u6ce8\u91c8\u3092\u9589\u3058\u308b
MSG_Revert_Progress=\u53d6\u6d88\u3057...
MSG_Annotation_Progress=\u6ce8\u91c8\u4ed8\u3051...

MSG_ANNOTATE_TITLE =     Mercurial\u6ce8\u91c8

# Capitalized letters used intentionally to emphasize the words in an output window, should be translated
MSG_ANNOTATE_DONE = \u60c5\u5831: \u6ce8\u91c8\u306e\u7d42\u4e86

CTL_MenuItem_Chat = {0}\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u9001\u4fe1
LBL_PreviousRevision=\u524d
MSG_GettingPreviousRevision=\u89aa\u30ea\u30d3\u30b8\u30e7\u30f3\u3092\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059...
MSG_AnnotateAction.lineDetail.unknown = \u4e0d\u660e

