/**************************************************************
 *
 * 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.
 *
 *************************************************************/



#define __RSC

#ifndef UUI_IDS_HRC
#include <ids.hrc>
#endif

String STR_ALREADYOPEN_TITLE
{
	Text = "Document in Use" ;
};
String STR_ALREADYOPEN_MSG
{
	Text [ en-US ] = "Document file '$(ARG1)' is locked for editing by yourself on a different system since $(ARG2)\n\nOpen document read-only, or ignore own file locking and open the document for editing.\n\n" ;
};
String STR_ALREADYOPEN_READONLY_BTN
{
	Text [ en-US ] = "Open ~Read-Only" ;
};
String STR_ALREADYOPEN_OPEN_BTN
{
	Text [ en-US ] = "~Open" ;
};
String STR_ALREADYOPEN_SAVE_MSG
{
	Text [ en-US ] = "Document file '$(ARG1)' is locked for editing by yourself on a different system since $(ARG2)\n\nClose document on other system and retry saving or ignore own file locking and save current document.\n\n" ;
};
String STR_ALREADYOPEN_RETRY_SAVE_BTN
{
	Text [ en-US ] = "~Retry Saving" ;
};
String STR_ALREADYOPEN_SAVE_BTN
{
	Text [ en-US ] = "~Save" ;
};

// ********************************************************************** EOF
